[Intel-gfx] [PATCH] drm/i915/display: Fix warnings about PSR lock not held
Hogander, Jouni
jouni.hogander at intel.com
Thu Apr 7 13:40:10 UTC 2022
On Wed, 2022-04-06 at 14:05 -0700, José Roberto de Souza wrote:
> Commit 3b6f409547fb ("drm/i915/display/psr: Lock and unlock PSR
> around
> pipe updates") did not took into account async flips with PSR1 and
> PSR2 HW tracking, causing PSR lock not be held and causing warnings
> when intel_psr2_program_trans_man_trk_ctl() is executed.
>
> So here taking the PSR lock before the earlier return in
> intel_pipe_update_start/end().
Reviewed-by: Jouni Högander <jouni.hogander at intel.com>
>
> Cc: Jouni Högander <jouni.hogander at intel.com>
> Reported-by: Imre Deak <imre.deak at intel.com>
> Fixes: 3b6f409547fb ("drm/i915/display/psr: Lock and unlock PSR
> around pipe updates")
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_crtc.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> b/drivers/gpu/drm/i915/display/intel_crtc.c
> index a5439182d5ae4..4442aa355f868 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> @@ -487,6 +487,8 @@ void intel_pipe_update_start(struct
> intel_crtc_state *new_crtc_state)
> intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI);
> DEFINE_WAIT(wait);
>
> + intel_psr_lock(new_crtc_state);
> +
> if (new_crtc_state->do_async_flip)
> return;
>
> @@ -507,8 +509,6 @@ void intel_pipe_update_start(struct
> intel_crtc_state *new_crtc_state)
> VBLANK_EVASION_TI
> ME_US);
> max = vblank_start - 1;
>
> - intel_psr_lock(new_crtc_state);
> -
> if (min <= 0 || max <= 0)
> goto irq_disable;
>
> @@ -634,6 +634,8 @@ void intel_pipe_update_end(struct
> intel_crtc_state *new_crtc_state)
> ktime_t end_vbl_time = ktime_get();
> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>
> + intel_psr_unlock(new_crtc_state);
> +
> if (new_crtc_state->do_async_flip)
> return;
>
> @@ -685,8 +687,6 @@ void intel_pipe_update_end(struct
> intel_crtc_state *new_crtc_state)
>
> local_irq_enable();
>
> - intel_psr_unlock(new_crtc_state);
> -
> if (intel_vgpu_active(dev_priv))
> return;
>
More information about the Intel-gfx
mailing list