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