[SRU][R][PATCH 1/1] UBUNTU: SAUCE: drm/amdgpu: Do not enter PSR if multiple displays are active
mitchell.augustin at canonical.com
mitchell.augustin at canonical.com
Thu Aug 6 14:22:27 UTC 2026
From: Mitchell Augustin <mitchell.augustin at canonical.com>
BugLink: https://bugs.launchpad.net/bugs/2162904
This commit disables panel self-refresh when more than one display is
active to eliminate a common hang and system crash that happens
frequently on some laptops, evidently due to race conditions between
the DMCUB, amdgpu module, and possibly other components which are
exacerbated when more than one display is active.
To my knowledge, a fix for the underlying failure condition is not
available upstream, so given how disruptive this is for impacted users,
I propose disabling this feature under this condition as a sauce patch
until it is fixed there. The main downside of disabling PSR is that it
will increase power consumption, but this should be barely noticeable to
end users, since PSR will remain enabled on laptops unconnected to
external monitors, and since laptops connected to external monitors are
likely typically also connected to power (and thus less concerned with
the energy savings afforded by PSR).
Signed-off-by: Mitchell Augustin <mitchell.augustin at canonical.com>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
index 5d2715f78314..272f195b8c28 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
@@ -152,7 +152,8 @@ void amdgpu_dm_crtc_set_panel_sr_feature(
struct amdgpu_dm_connector *aconn =
(struct amdgpu_dm_connector *) stream->dm_stream_context;
- if (!aconn->disallow_edp_enter_psr) {
+ /* Do not enter PSR if multiple displays are active to prevent DMCUB hangs */
+ if (!aconn->disallow_edp_enter_psr && dm->dc->current_state->stream_count == 1) {
amdgpu_dm_psr_enable(stream);
if (dm->idle_workqueue &&
(dm->dc->config.disable_ips == DMUB_IPS_ENABLE) &&
--
2.43.0
More information about the kernel-team
mailing list