On Thu, 2026-06-11 at 10:49 -0400, Stephen J. Fuhry wrote: > intel_dp_short_pulse() calls intel_psr_short_pulse() before the > direct > intel_alpm_get_error() check. For PSR2-enabled panels, > intel_psr_short_pulse() > calls psr_alpm_check(), which reads and clears > DP_ALPM_LOCK_TIMEOUT_ERROR via > intel_alpm_get_error(). The subsequent direct call in > intel_dp_short_pulse() > then reads zero and skips calling intel_alpm_disable() and setting > sink_alpm_error, leaving LOBF potentially enabled despite the ALPM > error. > > Fix this by having psr_alpm_check() also call intel_alpm_disable() > and set > sink_alpm_error when it handles an ALPM error. This mirrors what the > direct > call in intel_dp_short_pulse() would have done, ensuring correct > cleanup > regardless of which code path consumes the error bit first. > > intel_alpm_disable() is already called under psr->lock from > intel_psr_disable_locked() for the Panel Replay path, so the lock > ordering > is established and safe.
This one we don't need. LOBF can't be enabled while PSR2 is enabled. If ALPM error gets triggered when PSR2 is enabled -> PSR2 is disabled. After that LOBF might be used. If there is a problem with LOBF then ALPM error is supposed to get triggered again and then LOBF is disabled. BR, Jouni Högander > > Suggested-by: sashiko AI review <[email protected]> > Fixes: 2063174c22da ("drm/i915/lobf: Check for sink error and disable > LOBF") > Signed-off-by: Stephen J. Fuhry <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_psr.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > b/drivers/gpu/drm/i915/display/intel_psr.c > index 9382ad1e01d8..0701c8b94aa2 100644 > --- a/drivers/gpu/drm/i915/display/intel_psr.c > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > @@ -3869,6 +3869,8 @@ static void psr_alpm_check(struct intel_dp > *intel_dp) > if (intel_alpm_get_error(intel_dp)) { > intel_psr_disable_locked(intel_dp); > psr->sink_not_reliable = true; > + intel_alpm_disable(intel_dp); > + intel_dp->alpm.sink_alpm_error = true; > } > } > -- > 2.39.5
