[PATCH v2 3/3] drm/i915/alpm: Stop writing ALPM registers when PSR is enabled
Jouni Högander
jouni.hogander at intel.com
Tue May 6 14:49:12 UTC 2025
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.
v2: take into account disabled hw in old_crtc_state
Fixes: 172757acd6f6 ("drm/i915/lobf: Add lobf enablement in post plane update")
Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
---
drivers/gpu/drm/i915/display/intel_alpm.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 4d57bd517dfa..0d690d6716d8 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -472,10 +472,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;
@@ -485,6 +481,11 @@ 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)) &&
+ old_crtc_state->hw.active))
+ 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
More information about the Intel-xe
mailing list