Add a prototype helper to resolve a PASID to the owning DRM file-private
structure.

The helper provides:

        PASID -> amdgpu_fpriv

This is intended for process-scoped event routing such as EVENTFD,
debugger events, SQ messages and future WAIT_EVENT support.

The helper intentionally returns a raw amdgpu_fpriv pointer

Cc: Alex Deucher <[email protected]>
Cc: Christian König <[email protected]>
Signed-off-by: Srinivasan Shanmugam <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 ++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 5f1b285b8445..eb6eabbd800c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2933,6 +2933,20 @@ void amdgpu_pasid_fpriv_unregister(struct amdgpu_device 
*adev,
        xa_erase(&adev->vm_manager.pasid_fprivs, pasid);
 }
 
+/**
+ * amdgpu_pasid_fpriv_lookup - RFC PASID to fpriv lookup
+ * @adev: amdgpu device
+ * @pasid: PASID to resolve
+ *
+ * Returns the DRM file-private currently registered for @pasid,
+ * or NULL.
+ */
+struct amdgpu_fpriv *
+amdgpu_pasid_fpriv_lookup(struct amdgpu_device *adev, u32 pasid)
+{
+       return xa_load(&adev->vm_manager.pasid_fprivs, pasid);
+}
+
 /**
  * amdgpu_vm_ioctl - Manages VMID reservation for vm hubs.
  *
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index 333bf14cce6e..e14ded69e31c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -519,6 +519,9 @@ int amdgpu_pasid_fpriv_register(struct amdgpu_device *adev,
 void amdgpu_pasid_fpriv_unregister(struct amdgpu_device *adev,
                                   u32 pasid);
 
+struct amdgpu_fpriv *
+amdgpu_pasid_fpriv_lookup(struct amdgpu_device *adev, u32 pasid);
+
 long amdgpu_vm_wait_idle(struct amdgpu_vm *vm, long timeout);
 int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, int32_t 
xcp_id, uint32_t pasid);
 int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm);
-- 
2.34.1

Reply via email to