On 2026-08-06 10:34, [email protected] wrote:
> [Some people who received this message don't often get email from
> [email protected]. Learn why this is important at
> https://aka.ms/LearnAboutSenderIdentification ]
>
> From: Mitchell Augustin <[email protected]>
>
> Issue: https://gitlab.freedesktop.org/drm/amd/-/work_items/5394
> Ubuntu 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 until it is fixed.
> 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 <[email protected]>
>
Hi Mitchell,
Do you know if this issue still occurs on 7.2-rc6? It includes a bunch of fixes
targeting flip-done timeout issues that involved PSR.
Thanks,
Leo
> ---
> 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
>