diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1277-drm-scheduler-Set-sched-thread-to-NULL-on-failure.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1277-drm-scheduler-Set-sched-thread-to-NULL-on-failure.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1277-drm-scheduler-Set-sched-thread-to-NULL-on-failure.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1277-drm-scheduler-Set-sched-thread-to-NULL-on-failure.patch new file mode 100644 index 00000000..de654749 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1277-drm-scheduler-Set-sched-thread-to-NULL-on-failure.patch @@ -0,0 +1,48 @@ +From 7b5df683fe31f370862a51b59499984c9874eb9a Mon Sep 17 00:00:00 2001 +From: Sharat Masetty <smasetty@codeaurora.org> +Date: Thu, 29 Nov 2018 15:35:19 +0530 +Subject: [PATCH 1277/2940] drm/scheduler: Set sched->thread to NULL on failure +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In cases where the scheduler instance is used as a base object of another +driver object, it's not clear if the driver can call scheduler cleanup on the +fail path. So, Set the sched->thread to NULL, so that the driver can safely +call drm_sched_fini() during cleanup. + +Signed-off-by: Sharat Masetty <smasetty@codeaurora.org> +Reviewed-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/scheduler/sched_main.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c +index ac2a35cec00c..0b20d7180752 100644 +--- a/drivers/gpu/drm/scheduler/sched_main.c ++++ b/drivers/gpu/drm/scheduler/sched_main.c +@@ -727,7 +727,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, + long timeout, + const char *name) + { +- int i; ++ int i, ret; + sched->ops = ops; + sched->hw_submission_limit = hw_submission; + sched->name = name; +@@ -748,8 +748,10 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, + /* Each scheduler will run on a seperate kernel thread */ + sched->thread = kthread_run(drm_sched_main, sched, sched->name); + if (IS_ERR(sched->thread)) { ++ ret = PTR_ERR(sched->thread); ++ sched->thread = NULL; + DRM_ERROR("Failed to create scheduler for %s.\n", name); +- return PTR_ERR(sched->thread); ++ return ret; + } + + sched->ready = true; +-- +2.17.1 + |