From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Gaggery Tsai Date: Tue, 28 Apr 2026 16:10:00 -0500 Subject: [PATCH] drm/i915: limit TRANS_PUSH frame changes to Panel Replay Linux 7.1 carries the TRANS_PUSH frame-change infrastructure that linux-ptl previously backported. Keep only the remaining linux-ptl policy delta: use TRANS_PUSH for Panel Replay, but not for plain PSR2. Plain PSR2 must keep using the old CURSURFLIVE frame-change path so systems still boot when Panel Replay is disabled with xe.enable_panel_replay=0. Signed-off-by: Gaggery Tsai --- diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c --- a/drivers/gpu/drm/i915/display/intel_psr.c +++ b/drivers/gpu/drm/i915/display/intel_psr.c @@ -2171,7 +2171,7 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp, intel_alpm_configure(intel_dp, crtc_state); - if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display)) + if (intel_psr_use_trans_push(crtc_state)) intel_vrr_psr_frame_change_enable(crtc_state); } @@ -4658,5 +4658,5 @@ bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state) { struct intel_display *display = to_intel_display(crtc_state); - return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_psr; + return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_panel_replay; } diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -703,7 +703,7 @@ static u32 trans_vrr_push(const struct intel_crtc_state *crtc_state, if (send_push) trans_vrr_push |= TRANS_PUSH_SEND; - if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display)) + if (intel_psr_use_trans_push(crtc_state)) trans_vrr_push |= LNL_TRANS_PUSH_PSR_PR_EN; return trans_vrr_push;