* [PATCH] drm/i915: Don't set min_cdclk in the initial crtc_state
@ 2026-05-21 18:07 Marius Hoch
2026-05-21 21:13 ` Ville Syrjälä
0 siblings, 1 reply; 2+ messages in thread
From: Marius Hoch @ 2026-05-21 18:07 UTC (permalink / raw)
To: linux-kernel
Cc: Marius Hoch, stable, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
Tvrtko Ursulin, David Airlie, Simona Vetter, Joe Perches,
Mika Kahola, Ville Syrjälä, intel-gfx, intel-xe,
dri-devel
Setting the min_cdclk this early means that intel_cdclk_atomic_check
(called via intel_atomic_check) will not pick up the initial min_cdclk, as
there is no change between the old and new atomic states. This is
problematic, especially on Gemini Lake, where the picture gets unstable if
the CDCLK is too low (see vlv_dsi_min_cdclk).
This was introduced in 7a8d9cfa6db0, which states that the min_cdclk must
be set before calling intel_compute_global_watermarks. However, as the
only place that calls intel_compute_global_watermarks is
intel_atomic_check, right after setting the min_cdclk on new_crtc_state,
there is no need to set the min_cdclk initially.
This surfaced as a bug on my IdeaPad Duet 3 after ba91b9eecb47, leading
to the screen output being completely garbled initially (when asking for
the dm-crypt passphrase). It recovers after the passphrase prompt, as this
only affects the initial state.
Tested on an IdeaPad Duet 3 10IGL5-LTE (with UHD Graphics 605).
Cc: stable@vger.kernel.org
Fixes: 7a8d9cfa6db0 ("drm/i915: Compute per-crtc min_cdclk earlier")
Signed-off-by: Marius Hoch <mail@mariushoch.de>
---
drivers/gpu/drm/i915/display/intel_modeset_setup.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
index 4086f16a12bf..9278856375e9 100644
--- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
+++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
@@ -865,11 +865,6 @@ static void intel_modeset_readout_hw_state(struct intel_display *display)
crtc_state->plane_min_cdclk[plane->id]);
}
- crtc_state->min_cdclk = intel_crtc_min_cdclk(crtc_state);
-
- drm_dbg_kms(display->drm, "[CRTC:%d:%s] min_cdclk %d kHz\n",
- crtc->base.base.id, crtc->base.name, crtc_state->min_cdclk);
-
intel_pmdemand_update_port_clock(display, pmdemand_state, pipe,
crtc_state->port_clock);
}
--
2.54.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] drm/i915: Don't set min_cdclk in the initial crtc_state
2026-05-21 18:07 [PATCH] drm/i915: Don't set min_cdclk in the initial crtc_state Marius Hoch
@ 2026-05-21 21:13 ` Ville Syrjälä
0 siblings, 0 replies; 2+ messages in thread
From: Ville Syrjälä @ 2026-05-21 21:13 UTC (permalink / raw)
To: Marius Hoch
Cc: linux-kernel, stable, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
Tvrtko Ursulin, David Airlie, Simona Vetter, Joe Perches,
Mika Kahola, intel-gfx, intel-xe, dri-devel
On Thu, May 21, 2026 at 08:07:12PM +0200, Marius Hoch wrote:
> Setting the min_cdclk this early means that intel_cdclk_atomic_check
> (called via intel_atomic_check) will not pick up the initial min_cdclk, as
> there is no change between the old and new atomic states.
If there is no change then there is no need to change the CDCLK.
It's hard to say what you're really trying to work around here.
Please a file a new bug at
https://gitlab.freedesktop.org/drm/intel/issues/new and
attach the full dmesg from boot with 'log_buf_len=4M drm.debug=0xe'
passed to he kernel cmdline.
> This is
> problematic, especially on Gemini Lake, where the picture gets unstable if
> the CDCLK is too low (see vlv_dsi_min_cdclk).
>
> This was introduced in 7a8d9cfa6db0, which states that the min_cdclk must
> be set before calling intel_compute_global_watermarks. However, as the
> only place that calls intel_compute_global_watermarks is
> intel_atomic_check, right after setting the min_cdclk on new_crtc_state,
> there is no need to set the min_cdclk initially.
>
> This surfaced as a bug on my IdeaPad Duet 3 after ba91b9eecb47, leading
> to the screen output being completely garbled initially (when asking for
> the dm-crypt passphrase). It recovers after the passphrase prompt, as this
> only affects the initial state.
>
> Tested on an IdeaPad Duet 3 10IGL5-LTE (with UHD Graphics 605).
>
> Cc: stable@vger.kernel.org
> Fixes: 7a8d9cfa6db0 ("drm/i915: Compute per-crtc min_cdclk earlier")
> Signed-off-by: Marius Hoch <mail@mariushoch.de>
> ---
> drivers/gpu/drm/i915/display/intel_modeset_setup.c | 5 -----
> 1 file changed, 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> index 4086f16a12bf..9278856375e9 100644
> --- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> +++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> @@ -865,11 +865,6 @@ static void intel_modeset_readout_hw_state(struct intel_display *display)
> crtc_state->plane_min_cdclk[plane->id]);
> }
>
> - crtc_state->min_cdclk = intel_crtc_min_cdclk(crtc_state);
> -
> - drm_dbg_kms(display->drm, "[CRTC:%d:%s] min_cdclk %d kHz\n",
> - crtc->base.base.id, crtc->base.name, crtc_state->min_cdclk);
> -
> intel_pmdemand_update_port_clock(display, pmdemand_state, pipe,
> crtc_state->port_clock);
> }
> --
> 2.54.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-21 21:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-21 18:07 [PATCH] drm/i915: Don't set min_cdclk in the initial crtc_state Marius Hoch
2026-05-21 21:13 ` Ville Syrjälä
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox