[SRU][R][PATCH 1/1] UBUNTU: SAUCE: drm/amdgpu: Do not enter PSR if multiple displays are active
Abdur Rahman
abdur.rahman at canonical.com
Mon Aug 17 17:56:02 UTC 2026
On 8/6/26 10:22 AM, Mitchell Augustin via kernel-team wrote:
> 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) &&
Not a formal review but some comments:
1. Looking at some user reported values online [1], and an ancient
article [3], seems like the increase in idle power consumption would be
in order of ~0.5W. Another user [2] reported 4W idle power consumption
different, which seems highly specific to their setup. Taking as an
example a 60Wh battery laptop with 8 hours battery life, results in 30
mins of decrease in battery time the worst case, when power is
disconnected. Realistically it would probably be a smaller decrease,
given screen is not expected to be idle throughout the period. In
summary, I agree users are likely to have power connected when using
external display, and for those who don't, would see a very small
difference on modern hardware.
2. I wonder if adding a quirk in `amdgpu_dm/amdgpu_dm_quirks.c` would
further limit the fix to the subset of problematic hardware.
3. Patch looks fairly contained and self explanatory, however, upstream
folks seem to run this through an extensive set of hardware tests [4].
[1] https://community.frame.work/t/battery-life/861/24
[2] https://github.com/chenxiaolong/edp-psr-hack
[3]
https://mybroadband.co.za/news/hardware/33978-monitors-to-boost-battery-life-with-panel-self-refresh-tech.html
[4] https://www.kernel.org/doc/html/v6.12/gpu/amdgpu/display/index.html
More information about the kernel-team
mailing list