On 3/31/26 09:49, Sunil Khatri wrote:
> In function amdgpu_userq_gem_va_unmap_validate call
> dma_resv_wait_timeout directly.
>
> Suggested-by: Christian König <[email protected]>
> Signed-off-by: Sunil Khatri <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 11 ++---------
> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 ++--
> 2 files changed, 4 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> index c85a4f4eefcf..0ef829065403 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> @@ -1480,7 +1480,6 @@ int amdgpu_userq_gem_va_unmap_validate(struct
> amdgpu_device *adev,
> u32 ip_mask = amdgpu_userq_get_supported_ip_mask(adev);
> struct amdgpu_bo_va *bo_va = mapping->bo_va;
> struct dma_resv *resv = bo_va->base.bo->tbo.base.resv;
> - int ret = 0;
>
> if (!ip_mask)
> return 0;
> @@ -1494,14 +1493,8 @@ int amdgpu_userq_gem_va_unmap_validate(struct
> amdgpu_device *adev,
> * unmap is only for one kind of userq VAs, so at this point suppose
> * the eviction fence is always unsignaled.
> */
> - if (!dma_resv_test_signaled(resv, DMA_RESV_USAGE_BOOKKEEP)) {
> - ret = dma_resv_wait_timeout(resv, DMA_RESV_USAGE_BOOKKEEP, true,
> - MAX_SCHEDULE_TIMEOUT);
> - if (ret <= 0)
> - return -EBUSY;
> - }
> -
> - return 0;
> + return dma_resv_wait_timeout(resv, DMA_RESV_USAGE_BOOKKEEP,
> + true, MAX_SCHEDULE_TIMEOUT);
That wait can never fail and so never return an error.
Just return 0 here or even better drop the return value.
Regards,
Christian.
> }
>
> void amdgpu_userq_pre_reset(struct amdgpu_device *adev)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 937a6dd3a4b5..43a7cb2d5db9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -2005,9 +2005,9 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
> */
> if (unlikely(atomic_read(&bo_va->userq_va_mapped) > 0)) {
> r = amdgpu_userq_gem_va_unmap_validate(adev, mapping, saddr);
> - if (unlikely(r == -EBUSY))
> + if (r <= 0 && r != -ERESTARTSYS)
> dev_warn_once(adev->dev,
> - "Attempt to unmap an active userq
> buffer\n");
> + "Attempt to unmap an active userq buffer
> ret=%d\n", r);
> }
>
> list_del(&mapping->list);