Re: [PATCH] drm/amdgpu: Fix display freezing issue when resizing apps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 18.03.25 um 15:54 schrieb Arvind Yadav:
> The display is freezing because the amdgpu_userq_wait_ioctl()
> is waiting for a non-user queue fence(specifically, the PT update fence).
>
> RootCause:
> The resume_work is initiated by both amdgpu_userq_suspend and
> amdgpu_userqueue_ensure_ev_fence at same time. The amdgpu_userq_suspend
> signals a dma-fence and subsequently triggers the resume_work, which is
> intended to replace the existing fence by creating new dma-fence. However,
> following this, the amdgpu_userqueue_ensure_ev_fence schedules another
> resume_work that generates a new dma-fence, thereby replacing the one
> created by amdgpu_userq_suspend. Consequently, the original fence will
> never be signaled.
>
> Cc: Alex Deucher <alexander.deucher@xxxxxxx>
> Cc: Christian König <christian.koenig@xxxxxxx>
> Cc: Shashank Sharma <shashank.sharma@xxxxxxx>
> Cc: Sunil Khatri <sunil.khatri@xxxxxxx>
> Signed-off-by: Arvind Yadav <arvind.yadav@xxxxxxx>


> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> index 167951aee502..0075469550b0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> @@ -52,6 +52,9 @@ amdgpu_eviction_fence_replace_fence(struct amdgpu_eviction_fence_mgr *evf_mgr,
>  	unsigned long index;
>  	int ret;
>  
> +	if (evf_mgr->ev_fence &&
> +	    !dma_fence_is_signaled(&evf_mgr->ev_fence->base))
> +		return 0;

We might want to also have a flush_work(&evf_mgr->suspend_work) before that test as well to make sure an in flight signaling has finished as well.

With that done Reviewed-by: Christian König <christian.koenig@xxxxxxx>.

Thanks,
Christian.


>  	/*
>  	 * Steps to replace eviction fence:
>  	 * * lock all objects in exec (caller)




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux