In function amdgpu_userq_gem_va_unmap_validate call
dma_resv_wait_timeout directly. Also since we are waiting
forever we should not be having any return value and hence
no handling needed.

Suggested-by: Christian König <[email protected]>
Signed-off-by: Sunil Khatri <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 15 ++++-----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c    |  8 ++------
 3 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index 5c1ed4d0edbe..31f45bd2732c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -1462,17 +1462,16 @@ int 
amdgpu_userq_start_sched_for_enforce_isolation(struct amdgpu_device *adev,
        return ret;
 }
 
-int amdgpu_userq_gem_va_unmap_validate(struct amdgpu_device *adev,
+void amdgpu_userq_gem_va_unmap_validate(struct amdgpu_device *adev,
                                       struct amdgpu_bo_va_mapping *mapping,
                                       uint64_t saddr)
 {
        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;
+               return;
 
        dev_warn_once(adev->dev, "now unmapping a vital queue va:%llx\n", 
saddr);
        /**
@@ -1483,14 +1482,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;
+       dma_resv_wait_timeout(resv, DMA_RESV_USAGE_BOOKKEEP,
+                                    false, MAX_SCHEDULE_TIMEOUT);
 }
 
 void amdgpu_userq_pre_reset(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
index a4d44abf24fa..d0c502268643 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
@@ -160,7 +160,7 @@ void amdgpu_userq_start_hang_detect_work(struct 
amdgpu_usermode_queue *queue);
 int amdgpu_userq_input_va_validate(struct amdgpu_device *adev,
                                   struct amdgpu_usermode_queue *queue,
                                   u64 addr, u64 expected_size);
-int amdgpu_userq_gem_va_unmap_validate(struct amdgpu_device *adev,
+void amdgpu_userq_gem_va_unmap_validate(struct amdgpu_device *adev,
                                       struct amdgpu_bo_va_mapping *mapping,
                                       uint64_t saddr);
 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 937a6dd3a4b5..cd27970844c1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2003,12 +2003,8 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
         * during user requests GEM unmap IOCTL except for forcing the unmap
         * from user space.
         */
-       if (unlikely(atomic_read(&bo_va->userq_va_mapped) > 0)) {
-               r = amdgpu_userq_gem_va_unmap_validate(adev, mapping, saddr);
-               if (unlikely(r == -EBUSY))
-                       dev_warn_once(adev->dev,
-                                     "Attempt to unmap an active userq 
buffer\n");
-       }
+       if (unlikely(atomic_read(&bo_va->userq_va_mapped) > 0))
+               amdgpu_userq_gem_va_unmap_validate(adev, mapping, saddr);
 
        list_del(&mapping->list);
        amdgpu_vm_it_remove(mapping, &vm->va);
-- 
2.34.1

Reply via email to