This helper can validate the userq whether is ative
prior to the userq VA GEM unmap.

Signed-off-by: Prike Liang <prike.li...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 13 +++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h |  2 ++
 2 files changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index 1c58ddbd654f..e43a61f64755 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -1152,3 +1152,16 @@ int 
amdgpu_userq_start_sched_for_enforce_isolation(struct amdgpu_device *adev,
        mutex_unlock(&adev->userq_mutex);
        return ret;
 }
+
+int amdgpu_userq_gem_va_unmap_wait(struct amdgpu_vm *vm)
+{
+       struct amdgpu_fpriv *fpriv = vm_to_fpriv(vm);
+       struct amdgpu_userq_mgr *uq_mgr = &fpriv->userq_mgr;
+
+       if (vm->is_userq_context && &fpriv->vm == vm) {
+               dev_dbg(uq_mgr->adev->dev, "try to unmap an userq by gem va 
ioctl\n");
+               return amdgpu_userq_wait_for_signal(uq_mgr);
+       }
+
+       return 0;
+}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
index 65f9bd91ac73..ea1b631331c9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
@@ -31,6 +31,7 @@
 #define to_ev_fence(f) container_of(f, struct amdgpu_eviction_fence, base)
 #define uq_mgr_to_fpriv(u) container_of(u, struct amdgpu_fpriv, userq_mgr)
 #define work_to_uq_mgr(w, name) container_of(w, struct amdgpu_userq_mgr, name)
+#define vm_to_fpriv(v)  container_of(v, struct amdgpu_fpriv, vm)
 
 enum amdgpu_userq_state {
        AMDGPU_USERQ_STATE_UNMAPPED = 0,
@@ -145,4 +146,5 @@ bool amdgpu_userq_buffer_vas_mapped(struct amdgpu_vm *vm,
 int amdgpu_userq_buffer_va_put(struct amdgpu_vm *vm, u64 addr);
 int amdgpu_userq_buffer_vas_put(struct amdgpu_vm *vm,
                        struct amdgpu_usermode_queue *queue);
+int amdgpu_userq_gem_va_unmap_wait(struct amdgpu_vm *vm);
 #endif
-- 
2.34.1

Reply via email to