From: Jammy Zhou Date: Fri, 31 Jul 2015 09:54:29 +0000 (+0800) Subject: drm/amdgpu: make last_handled_seq atomic X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=63ad8d5882fcd466861fdbe51fc3a119b894d9a3;p=linux-beck.git drm/amdgpu: make last_handled_seq atomic Signed-off-by: Jammy Zhou Reviewed-by: Christian König Reviewed-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index 66938f1597bb..55ebbf0f8cd0 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@ -393,7 +393,7 @@ static int amd_sched_main(void *param) uint64_t amd_sched_get_handled_seq(struct amd_gpu_scheduler *sched) { - return sched->last_handled_seq; + return atomic64_read(&sched->last_handled_seq); } /** @@ -414,7 +414,7 @@ void amd_sched_isr(struct amd_gpu_scheduler *sched) job = NULL; sched->ops->process_job(sched, job); - sched->last_handled_seq++; + atomic64_inc(&sched->last_handled_seq); wake_up_interruptible(&sched->wait_queue); } @@ -448,7 +448,7 @@ struct amd_gpu_scheduler *amd_sched_create(void *device, sched->granularity = granularity; sched->ring_id = ring; sched->preemption = preemption; - sched->last_handled_seq = 0; + atomic64_set(&sched->last_handled_seq, 0); snprintf(name, sizeof(name), "gpu_sched[%d]", ring); mutex_init(&sched->sched_lock); diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h index af2afdf2309c..44f71cdf7c33 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h @@ -112,7 +112,7 @@ struct amd_gpu_scheduler { uint32_t ring_id; uint32_t granularity; /* in ms unit */ uint32_t preemption; - uint64_t last_handled_seq; + atomic64_t last_handled_seq; wait_queue_head_t wait_queue; struct amd_context_entity *current_entity; struct mutex sched_lock;