On 3/31/26 15:46, Sunil Khatri wrote:
> 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]>

Reviewed-by: Christian König <[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);

Reply via email to