On Mon, 2025-09-22 at 14:27 +0000, Kahola, Mika wrote: > > -----Original Message----- > > From: Intel-gfx <[email protected]> On Behalf > > Of Jouni Högander > > Sent: Monday, 22 September 2025 13.27 > > To: [email protected]; [email protected] > > Cc: Hogander, Jouni <[email protected]>; Lemen > > <[email protected]>; Koos Vriezen <[email protected]> > > Subject: [PATCH] drm/i915/psr: Deactivate PSR only on LNL and when > > selective fetch enabled > > > > Using intel_psr_exit in frontbuffer flush on older platforms seems > > to be causing problems. > > > > Sending single full frame update using intel_psr_force_update is > > anyways more optimal compared to psr deactivate/activate -> > > move back to this approach on PSR1, PSR HW tracking and Panel > > Replay full frame update and use deactivate/activate only on > > LunarLake and only when selective fetch is enabled. > > > > Tested-by: Lemen <[email protected]> > > Tested-by: Koos Vriezen <[email protected]> > > Closes: > > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14946 > > Reviewed-by: Mika Kahola <[email protected]>
Thank you Mika for checking my patch. This is now pushed to drm-intel- next. BR, Jouni Högander > > > Signed-off-by: Jouni Högander <[email protected]> > > --- > > drivers/gpu/drm/i915/display/intel_psr.c | 12 ++++++++++-- > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > > b/drivers/gpu/drm/i915/display/intel_psr.c > > index 01bf304c705f..10eb93a34cf2 100644 > > --- a/drivers/gpu/drm/i915/display/intel_psr.c > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > > @@ -3402,6 +3402,7 @@ static void _psr_flush_handle(struct intel_dp > > *intel_dp) > > struct intel_display *display = > > to_intel_display(intel_dp); > > > > if (DISPLAY_VER(display) < 20 && intel_dp- > > >psr.psr2_sel_fetch_enabled) { > > + /* Selective fetch prior LNL */ > > if (intel_dp->psr.psr2_sel_fetch_cff_enabled) { > > /* can we turn CFF off? */ > > if (intel_dp->psr.busy_frontbuffer_bits == > > 0) @@ -3420,12 +3421,19 @@ static void > > _psr_flush_handle(struct intel_dp *intel_dp) > > intel_psr_configure_full_frame_update(intel_dp); > > > > intel_psr_force_update(intel_dp); > > + } else if (!intel_dp->psr.psr2_sel_fetch_enabled) { > > + /* > > + * PSR1 on all platforms > > + * PSR2 HW tracking > > + * Panel Replay Full frame update > > + */ > > + intel_psr_force_update(intel_dp); > > } else { > > + /* Selective update LNL onwards */ > > intel_psr_exit(intel_dp); > > } > > > > - if ((!intel_dp->psr.psr2_sel_fetch_enabled || > > DISPLAY_VER(display) >= 20) && > > - !intel_dp->psr.busy_frontbuffer_bits) > > + if (!intel_dp->psr.active && !intel_dp- > > >psr.busy_frontbuffer_bits) > > queue_work(display->wq.unordered, &intel_dp- > > >psr.work); } > > > > -- > > 2.43.0 >
