]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/i915/psr: Add poll for checking PSR is idle before starting update
authorJouni Högander <jouni.hogander@intel.com>
Fri, 5 Sep 2025 07:27:08 +0000 (10:27 +0300)
committerJouni Högander <jouni.hogander@intel.com>
Mon, 8 Sep 2025 05:00:15 +0000 (08:00 +0300)
We are currently observing crc failures after we started using dsb for PSR
updates as well. This seems to happen because PSR HW is still sending
couple of updates using old framebuffers on wake-up.

Fix this by adding poll ensuring PSR is idle before starting update.

v2: pass new_crtc_state->dsb_commit to intel_psr_wait_for_idle_dsb

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/20250905072708.2659411-5-jouni.hogander@intel.com
drivers/gpu/drm/i915/display/intel_display.c

index c1a3a95c65f0b66c24ddd64f47dfdc67bbde86c9..5dca7f96b4258bfbae5a591b63630e1fa05bba44 100644 (file)
@@ -7271,6 +7271,9 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
                intel_psr_trigger_frame_change_event(new_crtc_state->dsb_commit,
                                                     state, crtc);
 
+               intel_psr_wait_for_idle_dsb(new_crtc_state->dsb_commit,
+                                           new_crtc_state);
+
                if (new_crtc_state->use_dsb)
                        intel_dsb_vblank_evade(state, new_crtc_state->dsb_commit);