diff options
author | 2015-08-20 16:59:38 +0200 | |
---|---|---|
committer | 2015-08-25 10:43:46 -0400 | |
commit | f49565982194d601f4f3a99892d0f3c765aec104 (patch) | |
tree | abedfc8ff3a47ddd74cd6ac4e1f750d00f41f847 | |
parent | drm/amdgpu: fix entity wakeup race condition (diff) | |
download | linux-dev-f49565982194d601f4f3a99892d0f3c765aec104.tar.xz linux-dev-f49565982194d601f4f3a99892d0f3c765aec104.zip |
drm/amdgpu: fix scheduler thread creation error checking
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index 0133697c127e..435d70499d3e 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@ -367,15 +367,14 @@ struct amd_gpu_scheduler *amd_sched_create(void *device, init_waitqueue_head(&sched->wait_queue); atomic_set(&sched->hw_rq_count, 0); /* Each scheduler will run on a seperate kernel thread */ - sched->thread = kthread_create(amd_sched_main, sched, name); - if (sched->thread) { - wake_up_process(sched->thread); - return sched; + sched->thread = kthread_run(amd_sched_main, sched, name); + if (IS_ERR(sched->thread)) { + DRM_ERROR("Failed to create scheduler for id %d.\n", ring); + kfree(sched); + return NULL; } - DRM_ERROR("Failed to create scheduler for id %d.\n", ring); - kfree(sched); - return NULL; + return sched; } /** |