]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.2-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 May 2023 15:42:58 +0000 (17:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 May 2023 15:42:58 +0000 (17:42 +0200)
added patches:
drm-amd-display-fix-hang-when-skipping-modeset.patch

queue-6.2/drm-amd-display-fix-hang-when-skipping-modeset.patch [new file with mode: 0644]
queue-6.2/series

diff --git a/queue-6.2/drm-amd-display-fix-hang-when-skipping-modeset.patch b/queue-6.2/drm-amd-display-fix-hang-when-skipping-modeset.patch
new file mode 100644 (file)
index 0000000..458f670
--- /dev/null
@@ -0,0 +1,60 @@
+From da5e14909776edea4462672fb4a3007802d262e7 Mon Sep 17 00:00:00 2001
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Date: Fri, 24 Mar 2023 10:42:37 -0400
+Subject: drm/amd/display: Fix hang when skipping modeset
+
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+
+commit da5e14909776edea4462672fb4a3007802d262e7 upstream.
+
+[Why&How]
+
+When skipping full modeset since the only state change was a front porch
+change, the DC commit sequence requires extra checks to handle non
+existant plane states being asked to be removed from context.
+
+Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com>
+Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
+Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |    5 ++++-
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c |    3 +++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -7783,6 +7783,8 @@ static void amdgpu_dm_commit_planes(stru
+                       continue;
+               dc_plane = dm_new_plane_state->dc_state;
++              if (!dc_plane)
++                      continue;
+               bundle->surface_updates[planes_count].surface = dc_plane;
+               if (new_pcrtc_state->color_mgmt_changed) {
+@@ -9330,8 +9332,9 @@ static int dm_update_plane_state(struct
+                       return -EINVAL;
+               }
++              if (dm_old_plane_state->dc_state)
++                      dc_plane_state_release(dm_old_plane_state->dc_state);
+-              dc_plane_state_release(dm_old_plane_state->dc_state);
+               dm_new_plane_state->dc_state = NULL;
+               *lock_and_validation_needed = true;
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -1707,6 +1707,9 @@ bool dc_remove_plane_from_context(
+       struct dc_stream_status *stream_status = NULL;
+       struct resource_pool *pool = dc->res_pool;
++      if (!plane_state)
++              return true;
++
+       for (i = 0; i < context->stream_count; i++)
+               if (context->streams[i] == stream) {
+                       stream_status = &context->stream_status[i];
index 85f3d446cc4d269b44c5c1aae5c0d92f37f230c0..d1ea2a8355a587c7b477c972098dec128898284e 100644 (file)
@@ -239,3 +239,4 @@ x86-amd_nb-add-pci-id-for-family-19h-model-78h.patch
 x86-fix-clear_user_rep_good-exception-handling-annotation.patch
 spi-fsl-spi-re-organise-transfer-bits_per_word-adaptation.patch
 spi-fsl-cpm-use-16-bit-mode-for-large-transfers-with-even-size.patch
+drm-amd-display-fix-hang-when-skipping-modeset.patch