[PATCH 3/3] drm/amd/display: Don't use non-registered VUPDATE on DCE 6

Rodrigo Siqueira siqueira at igalia.com
Tue Aug 12 21:29:25 UTC 2025


On 08/02, Timur Kristóf wrote:
> The VUPDATE interrupt isn't registered on DCE 6, so don't try
> to use that.
> 
> This fixes a page flip timeout after sleep/resume on DCE 6.
> 
> Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 22 ++++++++++++-------
>  .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    | 16 ++++++++------
>  2 files changed, 23 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 470f831a17f7..e8d2ba58cbfa 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -2981,14 +2981,20 @@ static void dm_gpureset_toggle_interrupts(struct amdgpu_device *adev,
>  				drm_warn(adev_to_drm(adev), "Failed to %s pflip interrupts\n",
>  					 enable ? "enable" : "disable");
>  
> -			if (enable) {
> -				if (amdgpu_dm_crtc_vrr_active(to_dm_crtc_state(acrtc->base.state)))
> -					rc = amdgpu_dm_crtc_set_vupdate_irq(&acrtc->base, true);
> -			} else
> -				rc = amdgpu_dm_crtc_set_vupdate_irq(&acrtc->base, false);
> -
> -			if (rc)
> -				drm_warn(adev_to_drm(adev), "Failed to %sable vupdate interrupt\n", enable ? "en" : "dis");
> +			if (dc_supports_vrr(adev->dm.dc->ctx->dce_version)) {
> +				if (enable) {
> +					if (amdgpu_dm_crtc_vrr_active(
> +							to_dm_crtc_state(acrtc->base.state)))
> +						rc = amdgpu_dm_crtc_set_vupdate_irq(
> +							&acrtc->base, true);
> +				} else
> +					rc = amdgpu_dm_crtc_set_vupdate_irq(
> +							&acrtc->base, false);
> +
> +				if (rc)
> +					drm_warn(adev_to_drm(adev), "Failed to %sable vupdate interrupt\n",
> +						enable ? "en" : "dis");
> +			}
>  
>  			irq_source = IRQ_TYPE_VBLANK + acrtc->otg_inst;
>  			/* During gpu-reset we disable and then enable vblank irq, so
> 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 2551823382f8..f2208e4224f9 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
> @@ -298,13 +298,15 @@ static inline int amdgpu_dm_crtc_set_vblank(struct drm_crtc *crtc, bool enable)
>  
>  	irq_type = amdgpu_display_crtc_idx_to_irq_type(adev, acrtc->crtc_id);
>  
> -	if (enable) {
> -		/* vblank irq on -> Only need vupdate irq in vrr mode */
> -		if (amdgpu_dm_crtc_vrr_active(acrtc_state))
> -			rc = amdgpu_dm_crtc_set_vupdate_irq(crtc, true);
> -	} else {
> -		/* vblank irq off -> vupdate irq off */
> -		rc = amdgpu_dm_crtc_set_vupdate_irq(crtc, false);
> +	if (dc_supports_vrr(dm->dc->ctx->dce_version)) {
> +		if (enable) {
> +			/* vblank irq on -> Only need vupdate irq in vrr mode */
> +			if (amdgpu_dm_crtc_vrr_active(acrtc_state))
> +				rc = amdgpu_dm_crtc_set_vupdate_irq(crtc, true);
> +		} else {
> +			/* vblank irq off -> vupdate irq off */
> +			rc = amdgpu_dm_crtc_set_vupdate_irq(crtc, false);
> +		}
>  	}
>  
>  	if (rc)
> -- 
> 2.50.1
>

Reviewed-by: Rodrigo Siqueira <siqueira at igalia.com> 

-- 
Rodrigo Siqueira


More information about the amd-gfx mailing list