summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
diff options
context:
space:
mode:
authorFelix Kuehling2018-03-15 22:27:48 +0100
committerOded Gabbay2018-03-15 22:27:48 +0100
commit52b29d73340da6cbb10ba42b0a28e7fb795afe9c (patch)
treeba1d240c9bf1591c098c72fa8c327a7ba5f944eb /drivers/gpu/drm/amd/amdkfd/kfd_priv.h
parentdrm/amdkfd: Aperture setup for dGPUs (diff)
downloadkernel-qcow2-linux-52b29d73340da6cbb10ba42b0a28e7fb795afe9c.tar.gz
kernel-qcow2-linux-52b29d73340da6cbb10ba42b0a28e7fb795afe9c.tar.xz
kernel-qcow2-linux-52b29d73340da6cbb10ba42b0a28e7fb795afe9c.zip
drm/amdkfd: Add per-process IDR for buffer handles
Also used for cleaning up on process termination. v2: Refactored cleanup on process termination Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_priv.h')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index 0d5d924b31ef..b2b5ef8c4536 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -543,6 +543,9 @@ struct kfd_process_device {
struct file *drm_file;
void *vm;
+ /* GPUVM allocations storage */
+ struct idr alloc_idr;
+
/* Flag used to tell the pdd has dequeued from the dqm.
* This is used to prevent dev->dqm->ops.process_termination() from
* being called twice when it is already called in IOMMU callback
@@ -678,6 +681,14 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_dev *dev,
int kfd_reserved_mem_mmap(struct kfd_process *process,
struct vm_area_struct *vma);
+/* KFD process API for creating and translating handles */
+int kfd_process_device_create_obj_handle(struct kfd_process_device *pdd,
+ void *mem);
+void *kfd_process_device_translate_handle(struct kfd_process_device *p,
+ int handle);
+void kfd_process_device_remove_obj_handle(struct kfd_process_device *pdd,
+ int handle);
+
/* Process device data iterator */
struct kfd_process_device *kfd_get_first_process_device_data(
struct kfd_process *p);