Currently we are seeing these on PTL:
xe 0000:00:02.0: [drm] *ERROR* Timeout waiting for DDI BUF A to get active
These seem to be caused by writing ALPM registers while Panel Replay is
enabled.
Fix this by writing ALPM registers only when Panel Replay is about to be
enabled.
Fixes: 172757acd6f6 ("drm/i915/lobf: Add lobf enablement in post plane update")
Signed-off-by: Jouni Högander <[email protected]>
---
drivers/gpu/drm/i915/display/intel_alpm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 6431f7ee82d5..a10115398db6 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -467,10 +467,6 @@ void intel_alpm_post_plane_update(struct
intel_atomic_state *state,
intel_atomic_get_old_crtc_state(state, crtc);
struct intel_encoder *encoder;
- if ((!crtc_state->has_lobf ||
- crtc_state->has_lobf == old_crtc_state->has_lobf) &&
!crtc_state->has_psr)
- return;
-
for_each_intel_encoder_mask(display->drm, encoder,
crtc_state->uapi.encoder_mask) {
struct intel_dp *intel_dp;
@@ -480,6 +476,10 @@ void intel_alpm_post_plane_update(struct
intel_atomic_state *state,
intel_dp = enc_to_intel_dp(encoder);
+ if ((!crtc_state->has_lobf && !intel_psr_needs_alpm(intel_dp,
crtc_state)) ||
+ (old_crtc_state->has_lobf || intel_psr_needs_alpm(intel_dp,
old_crtc_state)))
+ continue;
+
if (intel_dp_is_edp(intel_dp)) {
intel_alpm_enable_sink(intel_dp, crtc_state);
intel_alpm_configure(intel_dp, crtc_state);
--
2.43.0