]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/userq: call dma_resv_wait_timeout without test for signalled
authorSunil Khatri <sunil.khatri@amd.com>
Thu, 26 Mar 2026 07:52:20 +0000 (13:22 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 3 Apr 2026 17:59:15 +0000 (13:59 -0400)
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 <christian.koenig@amd.com>
Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 999d8e298bce4865ff01d25476d3dfaecba81eae..14e590cab2b3487ffbdb8f03affa6b5adf1f652e 100644 (file)
@@ -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,
-                                      struct amdgpu_bo_va_mapping *mapping,
-                                      uint64_t saddr)
+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)
index a4d44abf24fa83d7188d90c810940175f24b728a..675fe6395ac8ca651c0ceca44a30b2617d9d8a32 100644 (file)
@@ -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,
-                                      struct amdgpu_bo_va_mapping *mapping,
-                                      uint64_t saddr);
+void amdgpu_userq_gem_va_unmap_validate(struct amdgpu_device *adev,
+                                       struct amdgpu_bo_va_mapping *mapping,
+                                       uint64_t saddr);
 #endif
index 73abac6be5b30c81be96ec29a401417afbf54d56..00a532f4e027f28a502dcb1da152bd529d51e27d 100644 (file)
@@ -1978,7 +1978,6 @@ int amdgpu_vm_bo_unmap(struct amdgpu_device *adev,
        struct amdgpu_bo_va_mapping *mapping;
        struct amdgpu_vm *vm = bo_va->base.vm;
        bool valid = true;
-       int r;
 
        saddr /= AMDGPU_GPU_PAGE_SIZE;
 
@@ -2003,12 +2002,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);