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
> 

Reply via email to