[Intel-gfx] [PATCH] drm/i915/display/psr: Add sink not reliable check to intel_psr_work()
Mun, Gwan-gyeong
gwan-gyeong.mun at intel.com
Sat Mar 13 20:01:48 UTC 2021
On Fri, 2021-03-12 at 05:37 -0800, Souza, Jose wrote:
> On Fri, 2021-03-12 at 15:34 +0200, Gwan-gyeong Mun wrote:
> > If the sink state is not reliable, it does not need to wait for
> > PSR "IDLE state" for re-enabling PSR. And it should not try to re-
> > enable
> > PSR.
> >
> > Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_psr.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > b/drivers/gpu/drm/i915/display/intel_psr.c
> > index cd434285e3b7..7f555407de06 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -1686,6 +1686,9 @@ static void intel_psr_work(struct work_struct
> > *work)
> > if (READ_ONCE(intel_dp->psr.irq_aux_error))
> > intel_psr_handle_irq(intel_dp);
> >
> >
> >
> >
1. In intel_psr_irq_handler()
when the psr error happens,
intel_dp->psr.irq_aux_error = true;
schedule_work(&intel_dp->psr.work);
2. In intel_psr_work()
...
if (READ_ONCE(intel_dp->psr.irq_aux_error))
intel_psr_handle_irq(intel_dp);
-> intel_psr_disable_locked(intel_dp);
psr->sink_not_reliable = true;
...
IMO, when this scenario happens, the below code seems to be needed.
> > + if (intel_dp->psr.sink_not_reliable)
> > + goto unlock;
>
> I can't think any scenario that this will hit.
> Before set sink_not_reliable PSR will be disabled so it will be caught
> in the first check of intel_psr_work().
>
> > +
> > /*
> > * We have to make sure PSR is ready for re-enable
> > * otherwise it keeps disabled until next full enable/disable
> > cycle.
>
More information about the Intel-gfx
mailing list