Re: [PATCH] drm/i915: Don't set min_cdclk in the initial crtc_state
From: Ville Syrjälä
Date: Thu May 21 2026 - 17:15:28 EST
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@xxxxxxxxxxxxxxx
> Fixes: 7a8d9cfa6db0 ("drm/i915: Compute per-crtc min_cdclk earlier")
> Signed-off-by: Marius Hoch <mail@xxxxxxxxxxxxx>
> ---
> 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