Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/display: Ensure a non-zero safe window from PTL onwards
@ 2026-07-20  8:18 Ankit Nautiyal
  2026-07-20 12:37 ` ✓ CI.KUnit: success for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Ankit Nautiyal @ 2026-07-20  8:18 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: ville.syrjala, chaitanya.kumar.borah, Ankit Nautiyal

From PTL onwards the DSB waits on the VRR safe window instead of vblank
(chicken bit 14 selects the safe window signal from the DPT unit to
start the DMA engine). The safe window starts at (undelayed vblank
start - set context latency) and ends at the delayed vblank start.

With modes that have a smaller vblank region, the computed guardband is
clamped to the vblank length, which makes the undelayed and delayed
vblank coincide. If the set context latency (SCL) is also 0, the safe
window collapses to 0. The DSB, configured to wait for the safe window,
then stalls forever since the hardware never signals it, leading to:

  *ERROR* [CRTC:159:pipe A] flip_done timed out
  *ERROR* [CRTC:159:pipe A] DSB 0 timed out waiting for idle

Clamp the set context latency to a minimum of 1 from PTL onwards so the
safe window always keeps a non-zero width.

Fixes: 4a68c7516c57 ("drm/i915/dsb: Use safe window path when VRR TG is used")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Assisted-by: GitHub-Copilot:Claude-Opus-4.8
---
 drivers/gpu/drm/i915/display/intel_display.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 38763a6802c5..0822a2194c7f 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2459,6 +2459,19 @@ static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
 	set_context_latency = max(set_context_latency,
 				  intel_psr_min_set_context_latency(crtc_state));
 
+	/*
+	 * From PTL onwards, the set context latency can be in the vactive
+	 * region, letting the safe window start some lines before the vblank
+	 * start. With modes that have a smaller vblank region, the computed
+	 * guardband is clamped to the vblank length, making the undelayed and
+	 * delayed vblank coincide. If the SCL is also 0, the 'safe window'
+	 * becomes effectively 0, and the DSB configured to wait for it gets
+	 * stalled, since the hardware never signals the safe window. Keep the
+	 * set context latency at a minimum of 1 to avoid this.
+	 */
+	if (DISPLAY_VER(display) >= 30)
+		set_context_latency = max(1, set_context_latency);
+
 	return set_context_latency;
 }
 
-- 
2.50.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-07-22  6:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-20  8:18 [PATCH] drm/i915/display: Ensure a non-zero safe window from PTL onwards Ankit Nautiyal
2026-07-20 12:37 ` ✓ CI.KUnit: success for " Patchwork
2026-07-20 13:26 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-20 16:14 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-07-21 14:42 ` [PATCH] " Borah, Chaitanya Kumar
2026-07-22  5:00   ` Nautiyal, Ankit K
2026-07-22  6:24 ` [PATCH v2] " Ankit Nautiyal
2026-07-22  6:46   ` Borah, Chaitanya Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox