]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Apr 2024 13:40:04 +0000 (15:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Apr 2024 13:40:04 +0000 (15:40 +0200)
added patches:
drm-amd-display-fix-disable-otg-wa-logic-in-dcn316.patch
drm-amd-display-program-vsc-sdp-colorimetry-for-all-dp-sinks-1.4.patch
drm-amd-display-set-vsc-sdp-colorimetry-same-way-for-mst-and-sst.patch
drm-amdgpu-always-force-full-reset-for-soc21.patch
drm-amdgpu-fix-incorrect-number-of-active-rbs-for-gfx11.patch
drm-amdgpu-reset-dgpu-if-suspend-got-aborted.patch
drm-i915-cdclk-fix-cdclk-programming-order-when-pipes-are-active.patch
drm-i915-disable-port-sync-when-bigjoiner-is-used.patch

queue-6.6/drm-amd-display-fix-disable-otg-wa-logic-in-dcn316.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-program-vsc-sdp-colorimetry-for-all-dp-sinks-1.4.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-set-vsc-sdp-colorimetry-same-way-for-mst-and-sst.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-always-force-full-reset-for-soc21.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-fix-incorrect-number-of-active-rbs-for-gfx11.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-reset-dgpu-if-suspend-got-aborted.patch [new file with mode: 0644]
queue-6.6/drm-i915-cdclk-fix-cdclk-programming-order-when-pipes-are-active.patch [new file with mode: 0644]
queue-6.6/drm-i915-disable-port-sync-when-bigjoiner-is-used.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/drm-amd-display-fix-disable-otg-wa-logic-in-dcn316.patch b/queue-6.6/drm-amd-display-fix-disable-otg-wa-logic-in-dcn316.patch
new file mode 100644 (file)
index 0000000..2c85a35
--- /dev/null
@@ -0,0 +1,72 @@
+From cf79814cb0bf5749b9f0db53ca231aa540c02768 Mon Sep 17 00:00:00 2001
+From: Fudongwang <fudong.wang@amd.com>
+Date: Tue, 26 Mar 2024 16:03:16 +0800
+Subject: drm/amd/display: fix disable otg wa logic in DCN316
+
+From: Fudongwang <fudong.wang@amd.com>
+
+commit cf79814cb0bf5749b9f0db53ca231aa540c02768 upstream.
+
+[Why]
+Wrong logic cause screen corruption.
+
+[How]
+Port logic from DCN35/314.
+
+Cc: stable@vger.kernel.org
+Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
+Signed-off-by: Fudongwang <fudong.wang@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/dc/clk_mgr/dcn316/dcn316_clk_mgr.c |   19 ++++++----
+ 1 file changed, 12 insertions(+), 7 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_clk_mgr.c
++++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_clk_mgr.c
+@@ -99,20 +99,25 @@ static int dcn316_get_active_display_cnt
+       return display_count;
+ }
+-static void dcn316_disable_otg_wa(struct clk_mgr *clk_mgr_base, struct dc_state *context, bool disable)
++static void dcn316_disable_otg_wa(struct clk_mgr *clk_mgr_base, struct dc_state *context,
++              bool safe_to_lower, bool disable)
+ {
+       struct dc *dc = clk_mgr_base->ctx->dc;
+       int i;
+       for (i = 0; i < dc->res_pool->pipe_count; ++i) {
+-              struct pipe_ctx *pipe = &dc->current_state->res_ctx.pipe_ctx[i];
++              struct pipe_ctx *pipe = safe_to_lower
++                      ? &context->res_ctx.pipe_ctx[i]
++                      : &dc->current_state->res_ctx.pipe_ctx[i];
+               if (pipe->top_pipe || pipe->prev_odm_pipe)
+                       continue;
+-              if (pipe->stream && (pipe->stream->dpms_off || pipe->plane_state == NULL ||
+-                                   dc_is_virtual_signal(pipe->stream->signal))) {
++              if (pipe->stream && (pipe->stream->dpms_off || dc_is_virtual_signal(pipe->stream->signal) ||
++                                   !pipe->stream->link_enc)) {
+                       if (disable) {
+-                              pipe->stream_res.tg->funcs->immediate_disable_crtc(pipe->stream_res.tg);
++                              if (pipe->stream_res.tg && pipe->stream_res.tg->funcs->immediate_disable_crtc)
++                                      pipe->stream_res.tg->funcs->immediate_disable_crtc(pipe->stream_res.tg);
++
+                               reset_sync_context_for_pipe(dc, context, i);
+                       } else
+                               pipe->stream_res.tg->funcs->enable_crtc(pipe->stream_res.tg);
+@@ -207,11 +212,11 @@ static void dcn316_update_clocks(struct
+       }
+       if (should_set_clock(safe_to_lower, new_clocks->dispclk_khz, clk_mgr_base->clks.dispclk_khz)) {
+-              dcn316_disable_otg_wa(clk_mgr_base, context, true);
++              dcn316_disable_otg_wa(clk_mgr_base, context, safe_to_lower, true);
+               clk_mgr_base->clks.dispclk_khz = new_clocks->dispclk_khz;
+               dcn316_smu_set_dispclk(clk_mgr, clk_mgr_base->clks.dispclk_khz);
+-              dcn316_disable_otg_wa(clk_mgr_base, context, false);
++              dcn316_disable_otg_wa(clk_mgr_base, context, safe_to_lower, false);
+               update_dispclk = true;
+       }
diff --git a/queue-6.6/drm-amd-display-program-vsc-sdp-colorimetry-for-all-dp-sinks-1.4.patch b/queue-6.6/drm-amd-display-program-vsc-sdp-colorimetry-for-all-dp-sinks-1.4.patch
new file mode 100644 (file)
index 0000000..ac94dea
--- /dev/null
@@ -0,0 +1,51 @@
+From 9e61ef8d219877202d4ee51d0d2ad9072c99a262 Mon Sep 17 00:00:00 2001
+From: Harry Wentland <harry.wentland@amd.com>
+Date: Tue, 12 Mar 2024 11:55:52 -0400
+Subject: drm/amd/display: Program VSC SDP colorimetry for all DP sinks >= 1.4
+
+From: Harry Wentland <harry.wentland@amd.com>
+
+commit 9e61ef8d219877202d4ee51d0d2ad9072c99a262 upstream.
+
+In order for display colorimetry to work correctly on DP displays
+we need to send the VSC SDP packet. We should only do so for
+panels with DPCD revision greater or equal to 1.4 as older
+receivers might have problems with it.
+
+Cc: stable@vger.kernel.org
+Cc: Joshua Ashton <joshua@froggi.es>
+Cc: Xaver Hugl <xaver.hugl@gmail.com>
+Cc: Melissa Wen <mwen@igalia.com>
+Cc: Agustin Gutierrez <Agustin.Gutierrez@amd.com>
+Reviewed-by: Agustin Gutierrez <agustin.gutierrez@amd.com>
+Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
+Signed-off-by: Harry Wentland <harry.wentland@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 |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -6122,7 +6122,9 @@ create_stream_for_sink(struct amdgpu_dm_
+       if (stream->signal == SIGNAL_TYPE_HDMI_TYPE_A)
+               mod_build_hf_vsif_infopacket(stream, &stream->vsp_infopacket);
+-      if (stream->link->psr_settings.psr_feature_enabled || stream->link->replay_settings.replay_feature_enabled) {
++      if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT ||
++          stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST ||
++          stream->signal == SIGNAL_TYPE_EDP) {
+               //
+               // should decide stream support vsc sdp colorimetry capability
+               // before building vsc info packet
+@@ -6132,7 +6134,8 @@ create_stream_for_sink(struct amdgpu_dm_
+                       stream->use_vsc_sdp_for_colorimetry =
+                               aconnector->dc_sink->is_vsc_sdp_colorimetry_supported;
+               } else {
+-                      if (stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED)
++                      if (stream->link->dpcd_caps.dpcd_rev.raw >= 0x14 &&
++                          stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED)
+                               stream->use_vsc_sdp_for_colorimetry = true;
+               }
+               if (stream->out_transfer_func->tf == TRANSFER_FUNCTION_GAMMA22)
diff --git a/queue-6.6/drm-amd-display-set-vsc-sdp-colorimetry-same-way-for-mst-and-sst.patch b/queue-6.6/drm-amd-display-set-vsc-sdp-colorimetry-same-way-for-mst-and-sst.patch
new file mode 100644 (file)
index 0000000..a02ab7c
--- /dev/null
@@ -0,0 +1,44 @@
+From c3e2a5f2da904a18661335e8be2b961738574998 Mon Sep 17 00:00:00 2001
+From: Harry Wentland <harry.wentland@amd.com>
+Date: Thu, 21 Mar 2024 11:13:38 -0400
+Subject: drm/amd/display: Set VSC SDP Colorimetry same way for MST and SST
+
+From: Harry Wentland <harry.wentland@amd.com>
+
+commit c3e2a5f2da904a18661335e8be2b961738574998 upstream.
+
+The previous check for the is_vsc_sdp_colorimetry_supported flag
+for MST sink signals did nothing. Simplify the code and use the
+same check for MST and SST.
+
+Cc: stable@vger.kernel.org
+Reviewed-by: Agustin Gutierrez <agustin.gutierrez@amd.com>
+Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
+Signed-off-by: Harry Wentland <harry.wentland@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 |   12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -6129,15 +6129,9 @@ create_stream_for_sink(struct amdgpu_dm_
+               // should decide stream support vsc sdp colorimetry capability
+               // before building vsc info packet
+               //
+-              stream->use_vsc_sdp_for_colorimetry = false;
+-              if (aconnector->dc_sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
+-                      stream->use_vsc_sdp_for_colorimetry =
+-                              aconnector->dc_sink->is_vsc_sdp_colorimetry_supported;
+-              } else {
+-                      if (stream->link->dpcd_caps.dpcd_rev.raw >= 0x14 &&
+-                          stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED)
+-                              stream->use_vsc_sdp_for_colorimetry = true;
+-              }
++              stream->use_vsc_sdp_for_colorimetry = stream->link->dpcd_caps.dpcd_rev.raw >= 0x14 &&
++                                                    stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED;
++
+               if (stream->out_transfer_func->tf == TRANSFER_FUNCTION_GAMMA22)
+                       tf = TRANSFER_FUNC_GAMMA_22;
+               mod_build_vsc_infopacket(stream, &stream->vsc_infopacket, stream->output_color_space, tf);
diff --git a/queue-6.6/drm-amdgpu-always-force-full-reset-for-soc21.patch b/queue-6.6/drm-amdgpu-always-force-full-reset-for-soc21.patch
new file mode 100644 (file)
index 0000000..5674ec7
--- /dev/null
@@ -0,0 +1,33 @@
+From 65ff8092e4802f96d87d3d7cde146961f5228265 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Sat, 23 Mar 2024 20:46:53 -0400
+Subject: drm/amdgpu: always force full reset for SOC21
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 65ff8092e4802f96d87d3d7cde146961f5228265 upstream.
+
+There are cases where soft reset seems to succeed, but
+does not, so always use mode1/2 for now.
+
+Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/soc21.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/soc21.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
+@@ -449,10 +449,8 @@ static bool soc21_need_full_reset(struct
+ {
+       switch (adev->ip_versions[GC_HWIP][0]) {
+       case IP_VERSION(11, 0, 0):
+-              return amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__UMC);
+       case IP_VERSION(11, 0, 2):
+       case IP_VERSION(11, 0, 3):
+-              return false;
+       default:
+               return true;
+       }
diff --git a/queue-6.6/drm-amdgpu-fix-incorrect-number-of-active-rbs-for-gfx11.patch b/queue-6.6/drm-amdgpu-fix-incorrect-number-of-active-rbs-for-gfx11.patch
new file mode 100644 (file)
index 0000000..94bd045
--- /dev/null
@@ -0,0 +1,32 @@
+From bbca7f414ae9a12ea231cdbafd79c607e3337ea8 Mon Sep 17 00:00:00 2001
+From: Tim Huang <Tim.Huang@amd.com>
+Date: Wed, 3 Apr 2024 17:28:44 +0800
+Subject: drm/amdgpu: fix incorrect number of active RBs for gfx11
+
+From: Tim Huang <Tim.Huang@amd.com>
+
+commit bbca7f414ae9a12ea231cdbafd79c607e3337ea8 upstream.
+
+The RB bitmap should be global active RB bitmap &
+active RB bitmap based on active SA.
+
+Signed-off-by: Tim Huang <Tim.Huang@amd.com>
+Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
+@@ -1616,7 +1616,7 @@ static void gfx_v11_0_setup_rb(struct am
+                       active_rb_bitmap |= (0x3 << (i * rb_bitmap_width_per_sa));
+       }
+-      active_rb_bitmap |= global_active_rb_bitmap;
++      active_rb_bitmap &= global_active_rb_bitmap;
+       adev->gfx.config.backend_enable_mask = active_rb_bitmap;
+       adev->gfx.config.num_rbs = hweight32(active_rb_bitmap);
+ }
diff --git a/queue-6.6/drm-amdgpu-reset-dgpu-if-suspend-got-aborted.patch b/queue-6.6/drm-amdgpu-reset-dgpu-if-suspend-got-aborted.patch
new file mode 100644 (file)
index 0000000..17ed38c
--- /dev/null
@@ -0,0 +1,62 @@
+From 8b2be55f4d6c1099d7f629b0ed7535a5be788c83 Mon Sep 17 00:00:00 2001
+From: Lijo Lazar <lijo.lazar@amd.com>
+Date: Wed, 14 Feb 2024 17:55:54 +0530
+Subject: drm/amdgpu: Reset dGPU if suspend got aborted
+
+From: Lijo Lazar <lijo.lazar@amd.com>
+
+commit 8b2be55f4d6c1099d7f629b0ed7535a5be788c83 upstream.
+
+For SOC21 ASICs, there is an issue in re-enabling PM features if a
+suspend got aborted. In such cases, reset the device during resume
+phase. This is a workaround till a proper solution is finalized.
+
+Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/soc21.c |   25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/soc21.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
+@@ -804,10 +804,35 @@ static int soc21_common_suspend(void *ha
+       return soc21_common_hw_fini(adev);
+ }
++static bool soc21_need_reset_on_resume(struct amdgpu_device *adev)
++{
++      u32 sol_reg1, sol_reg2;
++
++      /* Will reset for the following suspend abort cases.
++       * 1) Only reset dGPU side.
++       * 2) S3 suspend got aborted and TOS is active.
++       */
++      if (!(adev->flags & AMD_IS_APU) && adev->in_s3 &&
++          !adev->suspend_complete) {
++              sol_reg1 = RREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_81);
++              msleep(100);
++              sol_reg2 = RREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_81);
++
++              return (sol_reg1 != sol_reg2);
++      }
++
++      return false;
++}
++
+ static int soc21_common_resume(void *handle)
+ {
+       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
++      if (soc21_need_reset_on_resume(adev)) {
++              dev_info(adev->dev, "S3 suspend aborted, resetting...");
++              soc21_asic_reset(adev);
++      }
++
+       return soc21_common_hw_init(adev);
+ }
diff --git a/queue-6.6/drm-i915-cdclk-fix-cdclk-programming-order-when-pipes-are-active.patch b/queue-6.6/drm-i915-cdclk-fix-cdclk-programming-order-when-pipes-are-active.patch
new file mode 100644 (file)
index 0000000..bfd4560
--- /dev/null
@@ -0,0 +1,106 @@
+From 7b1f6b5aaec0f849e19c3e99d4eea75876853cdd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
+Date: Tue, 2 Apr 2024 18:50:03 +0300
+Subject: drm/i915/cdclk: Fix CDCLK programming order when pipes are active
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Ville Syrjälä <ville.syrjala@linux.intel.com>
+
+commit 7b1f6b5aaec0f849e19c3e99d4eea75876853cdd upstream.
+
+Currently we always reprogram CDCLK from the
+intel_set_cdclk_pre_plane_update() when using squash/crawl.
+The code only works correctly for the cd2x update or full
+modeset cases, and it was simply never updated to deal with
+squash/crawl.
+
+If the CDCLK frequency is increasing we must reprogram it
+before we do anything else that might depend on the new
+higher frequency, and conversely we must not decrease
+the frequency until everything that might still depend
+on the old higher frequency has been dealt with.
+
+Since cdclk_state->pipe is only relevant when doing a cd2x
+update we can't use it to determine the correct sequence
+during squash/crawl. To that end introduce cdclk_state->disable_pipes
+which simply indicates that we must perform the update
+while the pipes are disable (ie. during
+intel_set_cdclk_pre_plane_update()). Otherwise we use the
+same old vs. new CDCLK frequency comparsiong as for cd2x
+updates.
+
+The only remaining problem case is when the voltage_level
+needs to increase due to a DDI port, but the CDCLK frequency
+is decreasing (and not all pipes are being disabled). The
+current approach will not bump the voltage level up until
+after the port has already been enabled, which is too late.
+But we'll take care of that case separately.
+
+v2: Don't break the "must disable pipes case"
+v3: Keep the on stack 'pipe' for future use
+
+Cc: stable@vger.kernel.org
+Fixes: d62686ba3b54 ("drm/i915/adl_p: CDCLK crawl support for ADL")
+Reviewed-by: Uma Shankar <uma.shankar@intel.com>
+Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
+Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240402155016.13733-2-ville.syrjala@linux.intel.com
+(cherry picked from commit 3aecee90ac12a351905f12dda7643d5b0676d6ca)
+Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/i915/display/intel_cdclk.c |    7 +++++--
+ drivers/gpu/drm/i915/display/intel_cdclk.h |    3 +++
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
++++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
+@@ -2462,7 +2462,7 @@ intel_set_cdclk_pre_plane_update(struct
+       if (IS_DG2(i915))
+               intel_cdclk_pcode_pre_notify(state);
+-      if (pipe == INVALID_PIPE ||
++      if (new_cdclk_state->disable_pipes ||
+           old_cdclk_state->actual.cdclk <= new_cdclk_state->actual.cdclk) {
+               drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+@@ -2494,7 +2494,7 @@ intel_set_cdclk_post_plane_update(struct
+       if (IS_DG2(i915))
+               intel_cdclk_pcode_post_notify(state);
+-      if (pipe != INVALID_PIPE &&
++      if (!new_cdclk_state->disable_pipes &&
+           old_cdclk_state->actual.cdclk > new_cdclk_state->actual.cdclk) {
+               drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+@@ -2946,6 +2946,7 @@ static struct intel_global_state *intel_
+               return NULL;
+       cdclk_state->pipe = INVALID_PIPE;
++      cdclk_state->disable_pipes = false;
+       return &cdclk_state->base;
+ }
+@@ -3124,6 +3125,8 @@ int intel_modeset_calc_cdclk(struct inte
+               if (ret)
+                       return ret;
++              new_cdclk_state->disable_pipes = true;
++
+               drm_dbg_kms(&dev_priv->drm,
+                           "Modeset required for cdclk change\n");
+       }
+--- a/drivers/gpu/drm/i915/display/intel_cdclk.h
++++ b/drivers/gpu/drm/i915/display/intel_cdclk.h
+@@ -51,6 +51,9 @@ struct intel_cdclk_state {
+       /* bitmask of active pipes */
+       u8 active_pipes;
++
++      /* update cdclk with pipes disabled */
++      bool disable_pipes;
+ };
+ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state);
diff --git a/queue-6.6/drm-i915-disable-port-sync-when-bigjoiner-is-used.patch b/queue-6.6/drm-i915-disable-port-sync-when-bigjoiner-is-used.patch
new file mode 100644 (file)
index 0000000..63bd2ba
--- /dev/null
@@ -0,0 +1,45 @@
+From 0653d501409eeb9f1deb7e4c12e4d0d2c9f1cba1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
+Date: Fri, 5 Apr 2024 00:34:27 +0300
+Subject: drm/i915: Disable port sync when bigjoiner is used
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Ville Syrjälä <ville.syrjala@linux.intel.com>
+
+commit 0653d501409eeb9f1deb7e4c12e4d0d2c9f1cba1 upstream.
+
+The current modeset sequence can't handle port sync and bigjoiner
+at the same time. Refuse port sync when bigjoiner is needed,
+at least until we fix the modeset sequence.
+
+v2: Add a FIXME (Vandite)
+
+Cc: stable@vger.kernel.org
+Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
+Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240404213441.17637-4-ville.syrjala@linux.intel.com
+Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+(cherry picked from commit b37e1347b991459c38c56ec2476087854a4f720b)
+Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/i915/display/intel_ddi.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/gpu/drm/i915/display/intel_ddi.c
++++ b/drivers/gpu/drm/i915/display/intel_ddi.c
+@@ -4111,7 +4111,12 @@ static bool m_n_equal(const struct intel
+ static bool crtcs_port_sync_compatible(const struct intel_crtc_state *crtc_state1,
+                                      const struct intel_crtc_state *crtc_state2)
+ {
++      /*
++       * FIXME the modeset sequence is currently wrong and
++       * can't deal with bigjoiner + port sync at the same time.
++       */
+       return crtc_state1->hw.active && crtc_state2->hw.active &&
++              !crtc_state1->bigjoiner_pipes && !crtc_state2->bigjoiner_pipes &&
+               crtc_state1->output_types == crtc_state2->output_types &&
+               crtc_state1->output_format == crtc_state2->output_format &&
+               crtc_state1->lane_count == crtc_state2->lane_count &&
index ee6ecdd47d64f9999d5e3af6cee2ff7a3287990a..9425a86942a891c4099c2267bdd2e921b4d92e8e 100644 (file)
@@ -112,3 +112,11 @@ x86-bugs-fix-bhi-handling-of-rrsba.patch
 x86-bugs-clarify-that-syscall-hardening-isn-t-a-bhi-mitigation.patch
 x86-bugs-remove-config_bhi_mitigation_auto-and-spectre_bhi-auto.patch
 x86-bugs-replace-config_spectre_bhi_-on-off-with-config_mitigation_spectre_bhi.patch
+drm-i915-cdclk-fix-cdclk-programming-order-when-pipes-are-active.patch
+drm-i915-disable-port-sync-when-bigjoiner-is-used.patch
+drm-amdgpu-reset-dgpu-if-suspend-got-aborted.patch
+drm-amdgpu-always-force-full-reset-for-soc21.patch
+drm-amdgpu-fix-incorrect-number-of-active-rbs-for-gfx11.patch
+drm-amd-display-program-vsc-sdp-colorimetry-for-all-dp-sinks-1.4.patch
+drm-amd-display-set-vsc-sdp-colorimetry-same-way-for-mst-and-sst.patch
+drm-amd-display-fix-disable-otg-wa-logic-in-dcn316.patch