From: Greg Kroah-Hartman Date: Mon, 7 Oct 2024 17:50:18 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v6.6.55~57 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=729bdeea3098a7ad972c1dcf8ab1084ef4ed8b91;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: drm-amd-display-fix-system-hang-while-resume-with-tbt-monitor.patch drm-sched-add-locking-to-drm_sched_entity_modify_sched.patch --- diff --git a/queue-5.15/drm-amd-display-fix-system-hang-while-resume-with-tbt-monitor.patch b/queue-5.15/drm-amd-display-fix-system-hang-while-resume-with-tbt-monitor.patch new file mode 100644 index 00000000000..302c3feee60 --- /dev/null +++ b/queue-5.15/drm-amd-display-fix-system-hang-while-resume-with-tbt-monitor.patch @@ -0,0 +1,50 @@ +From 52d4e3fb3d340447dcdac0e14ff21a764f326907 Mon Sep 17 00:00:00 2001 +From: Tom Chung +Date: Fri, 13 Sep 2024 15:44:40 +0800 +Subject: drm/amd/display: Fix system hang while resume with TBT monitor + +From: Tom Chung + +commit 52d4e3fb3d340447dcdac0e14ff21a764f326907 upstream. + +[Why] +Connected with a Thunderbolt monitor and do the suspend and the system +may hang while resume. + +The TBT monitor HPD will be triggered during the resume procedure +and call the drm_client_modeset_probe() while +struct drm_connector connector->dev->master is NULL. + +It will mess up the pipe topology after resume. + +[How] +Skip the TBT monitor HPD during the resume procedure because we +currently will probe the connectors after resume by default. + +Reviewed-by: Wayne Lin +Signed-off-by: Tom Chung +Signed-off-by: Fangzhi Zuo +Tested-by: Daniel Wheeler +Signed-off-by: Alex Deucher +(cherry picked from commit 453f86a26945207a16b8f66aaed5962dc2b95b85) +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -697,6 +697,12 @@ void dmub_hpd_callback(struct amdgpu_dev + return; + } + ++ /* Skip DMUB HPD IRQ in suspend/resume. We will probe them later. */ ++ if (notify->type == DMUB_NOTIFICATION_HPD && adev->in_suspend) { ++ DRM_INFO("Skip DMUB HPD IRQ callback in suspend/resume\n"); ++ return; ++ } ++ + link_index = notify->link_index; + link = adev->dm.dc->links[link_index]; + dev = adev->dm.ddev; diff --git a/queue-5.15/drm-sched-add-locking-to-drm_sched_entity_modify_sched.patch b/queue-5.15/drm-sched-add-locking-to-drm_sched_entity_modify_sched.patch new file mode 100644 index 00000000000..565397cd1dc --- /dev/null +++ b/queue-5.15/drm-sched-add-locking-to-drm_sched_entity_modify_sched.patch @@ -0,0 +1,52 @@ +From 4286cc2c953983d44d248c9de1c81d3a9643345c Mon Sep 17 00:00:00 2001 +From: Tvrtko Ursulin +Date: Fri, 13 Sep 2024 17:05:52 +0100 +Subject: drm/sched: Add locking to drm_sched_entity_modify_sched +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Tvrtko Ursulin + +commit 4286cc2c953983d44d248c9de1c81d3a9643345c upstream. + +Without the locking amdgpu currently can race between +amdgpu_ctx_set_entity_priority() (via drm_sched_entity_modify_sched()) and +drm_sched_job_arm(), leading to the latter accesing potentially +inconsitent entity->sched_list and entity->num_sched_list pair. + +v2: + * Improve commit message. (Philipp) + +Signed-off-by: Tvrtko Ursulin +Fixes: b37aced31eb0 ("drm/scheduler: implement a function to modify sched list") +Cc: Christian König +Cc: Alex Deucher +Cc: Luben Tuikov +Cc: Matthew Brost +Cc: David Airlie +Cc: Daniel Vetter +Cc: dri-devel@lists.freedesktop.org +Cc: Philipp Stanner +Cc: # v5.7+ +Reviewed-by: Christian König +Link: https://patchwork.freedesktop.org/patch/msgid/20240913160559.49054-2-tursulin@igalia.com +Signed-off-by: Christian König +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/scheduler/sched_entity.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/gpu/drm/scheduler/sched_entity.c ++++ b/drivers/gpu/drm/scheduler/sched_entity.c +@@ -99,8 +99,10 @@ void drm_sched_entity_modify_sched(struc + { + WARN_ON(!num_sched_list || !sched_list); + ++ spin_lock(&entity->rq_lock); + entity->sched_list = sched_list; + entity->num_sched_list = num_sched_list; ++ spin_unlock(&entity->rq_lock); + } + EXPORT_SYMBOL(drm_sched_entity_modify_sched); + diff --git a/queue-5.15/series b/queue-5.15/series index 924e9e51f31..6694e5db9e2 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -547,3 +547,5 @@ gpio-davinci-fix-lazy-disable.patch tracing-hwlat-fix-a-race-during-cpuhp-processing.patch tracing-timerlat-fix-a-race-during-cpuhp-processing.patch close_range-fix-the-logics-in-descriptor-table-trimming.patch +drm-sched-add-locking-to-drm_sched_entity_modify_sched.patch +drm-amd-display-fix-system-hang-while-resume-with-tbt-monitor.patch