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 <[email protected]>
---
 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

Reply via email to