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