mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
drm/i915/display: Fix warnings about PSR lock not held
Commit3b6f409547("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(). Cc: Jouni Högander <jouni.hogander@intel.com> Reported-by: Imre Deak <imre.deak@intel.com> Fixes:3b6f409547("drm/i915/display/psr: Lock and unlock PSR around pipe updates") Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220406210540.493610-1-jose.souza@intel.com
This commit is contained in:
parent
4b276ed3c7
commit
ce21211b4d
|
|
@ -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_TIME_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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user