On 31-03-2026 05:21 pm, Christian König wrote:
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.
Do we want to return and check in caller for -ERESTARTSYS ?


Regards
Sunil Khatri


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);

Reply via email to