[PATCH] drm/i915/psr: Skip PSR exit for legacy cursor updates on LNL
From: Aaron Ma
Date: Tue Jun 23 2026 - 04:42:22 EST
ORIGIN_CURSOR_UPDATE falls through to _psr_flush_handle() on LNL
(DISPLAY_VER >= 20), which calls intel_psr_exit(). Cursor plane updated
via legacy ioctl (drmModeMoveCursor) does not dirty the primary
frontbuffer, no PSR2 state change is needed. Match the existing
ORIGIN_FLIP behavior by unconditionally returning early.
Before this, the psr2_sel_fetch_enabled guard only prevented the early
return when PSR2 selective fetch was active, sending cursor updates
through intel_psr_exit() and causing a black line artifact on some
panels during the exit/re-enable transition.
Fixes: ef39826c12b4 ("drm/i915/display: Fix glitches when moving cursor with PSR2 selective fetch enabled")
Signed-off-by: Aaron Ma <aaron.ma@xxxxxxxxxxxxx>
---
drivers/gpu/drm/i915/display/intel_psr.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index e138982dc91f6..32bee6c03b754 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -3771,8 +3771,7 @@ void intel_psr_flush(struct intel_display *display,
goto unlock;
if (origin == ORIGIN_FLIP ||
- (origin == ORIGIN_CURSOR_UPDATE &&
- !intel_dp->psr.psr2_sel_fetch_enabled)) {
+ origin == ORIGIN_CURSOR_UPDATE) {
tgl_dc3co_flush_locked(intel_dp, frontbuffer_bits, origin);
goto unlock;
}
--
2.43.0