aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch309
1 files changed, 0 insertions, 309 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch
deleted file mode 100644
index 0a02c272..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1686-drm-amdkfd-Implement-cleaned-up-memory-management-AP.patch
+++ /dev/null
@@ -1,309 +0,0 @@
-From 6dc8b3951100d5de131d79fe5a2d1adb98b099c8 Mon Sep 17 00:00:00 2001
-From: Felix Kuehling <Felix.Kuehling@amd.com>
-Date: Mon, 1 May 2017 16:59:20 -0400
-Subject: [PATCH 1686/4131] drm/amdkfd: Implement cleaned-up memory management
- APIs
-
-The _new APIs are still available as wrappers that adapt between
-the original and cleaned up argument structures. Once the Thunk has
-transitioned to the cleaned-up APIs, the wrappers can be removed.
-
-Change-Id: If26ff74d8f2cc6cda27172d6816f8b22f9c65a3b
-Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
----
- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 152 ++++++++++++++-----------------
- 1 file changed, 68 insertions(+), 84 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-index b1c5750..521a8d2 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-@@ -1174,52 +1174,6 @@ static int kfd_ioctl_alloc_scratch_memory(struct file *filep,
- return -EFAULT;
- }
-
--static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
-- struct kfd_process *p, void *data)
--{
-- struct kfd_ioctl_alloc_memory_of_gpu_args *args = data;
-- struct kfd_process_device *pdd;
-- void *mem;
-- struct kfd_dev *dev;
-- int idr_handle;
-- long err;
--
-- if (args->size == 0)
-- return -EINVAL;
--
-- dev = kfd_device_by_id(args->gpu_id);
-- if (dev == NULL)
-- return -EINVAL;
--
-- down_write(&p->lock);
-- pdd = kfd_bind_process_to_device(dev, p);
-- up_write(&p->lock);
-- if (IS_ERR(pdd))
-- return PTR_ERR(pdd);
--
-- err = dev->kfd2kgd->alloc_memory_of_gpu(
-- dev->kgd, args->va_addr, args->size,
-- pdd->vm, (struct kgd_mem **) &mem, NULL, NULL, 0);
--
-- if (err != 0)
-- return err;
--
-- down_write(&p->lock);
-- idr_handle = kfd_process_device_create_obj_handle(pdd, mem,
-- args->va_addr, args->size, NULL);
-- up_write(&p->lock);
-- if (idr_handle < 0) {
-- dev->kfd2kgd->free_memory_of_gpu(dev->kgd,
-- (struct kgd_mem *) mem,
-- pdd->vm);
-- return -EFAULT;
-- }
--
-- args->handle = MAKE_HANDLE(args->gpu_id, idr_handle);
--
-- return 0;
--}
--
- bool kfd_is_large_bar(struct kfd_dev *dev)
- {
- struct kfd_local_mem_info mem_info;
-@@ -1239,6 +1193,8 @@ bool kfd_is_large_bar(struct kfd_dev *dev)
- return false;
- }
-
-+/* TODO: Remove this once the Thunk has transitioned to
-+ * AMDKFD_IOC_ALLOC_MEMORY_OF_GPU */
- static uint32_t kfd_convert_user_mem_alloction_flags(
- struct kfd_dev *dev,
- uint32_t userspace_flags)
-@@ -1305,17 +1261,16 @@ static uint32_t kfd_convert_user_mem_alloction_flags(
- return kernel_allocation_flags;
- }
-
--static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
-+static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- struct kfd_ioctl_alloc_memory_of_gpu_new_args *args = data;
-+ struct kfd_ioctl_alloc_memory_of_gpu_args *args = data;
- struct kfd_process_device *pdd;
- void *mem;
- struct kfd_dev *dev;
- int idr_handle;
- long err;
- uint64_t offset;
-- uint32_t alloc_flags = 0;
-
- if (args->size == 0)
- return -EINVAL;
-@@ -1330,19 +1285,17 @@ static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
- if (IS_ERR(pdd))
- return PTR_ERR(pdd);
-
-- if (args->flags & KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL_OLD) {
-+ if (args->flags & KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL) {
- if (args->size != kfd_doorbell_process_slice(dev))
- return -EINVAL;
- offset = kfd_get_process_doorbells(dev, p);
- } else
- offset = args->mmap_offset;
-
-- alloc_flags = kfd_convert_user_mem_alloction_flags(dev, args->flags);
--
- err = dev->kfd2kgd->alloc_memory_of_gpu(
- dev->kgd, args->va_addr, args->size,
- pdd->vm, (struct kgd_mem **) &mem, &offset,
-- NULL, alloc_flags);
-+ NULL, args->flags);
-
- if (err != 0)
- return err;
-@@ -1359,7 +1312,7 @@ static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
- }
-
- args->handle = MAKE_HANDLE(args->gpu_id, idr_handle);
-- if ((args->flags & KFD_IOC_ALLOC_MEM_FLAGS_DGPU_DEVICE) != 0 &&
-+ if ((args->flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) != 0 &&
- !kfd_is_large_bar(dev)) {
- args->mmap_offset = 0;
- } else {
-@@ -1372,6 +1325,40 @@ static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
- return 0;
- }
-
-+/* TODO: Remove this once the Thunk has transitioned to
-+ * AMDKFD_IOC_ALLOC_MEMORY_OF_GPU */
-+static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
-+ struct kfd_process *p, void *data)
-+{
-+ struct kfd_ioctl_alloc_memory_of_gpu_new_args *new_args = data;
-+ struct kfd_ioctl_alloc_memory_of_gpu_args args;
-+ struct kfd_dev *dev;
-+ uint32_t flags;
-+ int ret;
-+
-+ dev = kfd_device_by_id(new_args->gpu_id);
-+ if (dev == NULL)
-+ return -EINVAL;
-+ /* New ioctl flags match kfd2kgd API */
-+ flags = kfd_convert_user_mem_alloction_flags(dev, new_args->flags);
-+
-+ /* copy input arguments, adjusting the ABI */
-+ args.va_addr = new_args->va_addr;
-+ args.size = new_args->size;
-+ args.handle = new_args->handle;
-+ args.mmap_offset = new_args->mmap_offset;
-+ args.gpu_id = new_args->gpu_id;
-+ args.flags = flags;
-+
-+ ret = kfd_ioctl_alloc_memory_of_gpu(filep, p, &args);
-+
-+ /* copy output arguments */
-+ new_args->handle = args.handle;
-+ new_args->mmap_offset = args.mmap_offset;
-+
-+ return ret;
-+}
-+
- static int kfd_ioctl_free_memory_of_gpu(struct file *filep,
- struct kfd_process *p, void *data)
- {
-@@ -1443,7 +1430,7 @@ int kfd_map_memory_to_gpu(void *mem, struct kfd_process_device *pdd)
- static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- struct kfd_ioctl_map_memory_to_gpu_new_args *args = data;
-+ struct kfd_ioctl_map_memory_to_gpu_args *args = data;
- struct kfd_process_device *pdd, *peer_pdd;
- void *mem;
- struct kfd_dev *dev, *peer;
-@@ -1468,7 +1455,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
- return -ENOMEM;
-
- err = copy_from_user(devices_arr,
-- (void __user *)args->device_ids_array,
-+ (void __user *)args->device_ids_array_ptr,
- args->device_ids_array_size);
- if (err != 0) {
- err = -EFAULT;
-@@ -1533,17 +1520,19 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
- return err;
- }
-
--static int kfd_ioctl_map_memory_to_gpu_wrapper(struct file *filep,
-+/* TODO: Remove this once the Thunk has transitioned to
-+ * AMDKFD_IOC_MAP_MEMORY_TO_GPU */
-+static int kfd_ioctl_map_memory_to_gpu_new(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- struct kfd_ioctl_map_memory_to_gpu_args *args = data;
-- struct kfd_ioctl_map_memory_to_gpu_new_args new_args;
-+ struct kfd_ioctl_map_memory_to_gpu_new_args *new_args = data;
-+ struct kfd_ioctl_map_memory_to_gpu_args args;
-
-- new_args.handle = args->handle;
-- new_args.device_ids_array = NULL;
-- new_args.device_ids_array_size = 0;
-+ args.handle = new_args->handle;
-+ args.device_ids_array_ptr = (uint64_t)new_args->device_ids_array;
-+ args.device_ids_array_size = new_args->device_ids_array_size;
-
-- return kfd_ioctl_map_memory_to_gpu(filep, p, &new_args);
-+ return kfd_ioctl_map_memory_to_gpu(filep, p, &args);
- }
-
- int kfd_unmap_memory_from_gpu(void *mem, struct kfd_process_device *pdd)
-@@ -1565,7 +1554,7 @@ int kfd_unmap_memory_from_gpu(void *mem, struct kfd_process_device *pdd)
- static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- struct kfd_ioctl_unmap_memory_from_gpu_new_args *args = data;
-+ struct kfd_ioctl_unmap_memory_from_gpu_args *args = data;
- struct kfd_process_device *pdd, *peer_pdd;
- void *mem;
- struct kfd_dev *dev, *peer;
-@@ -1589,7 +1578,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
- return -ENOMEM;
-
- err = copy_from_user(devices_arr,
-- (void __user *)args->device_ids_array,
-+ (void __user *)args->device_ids_array_ptr,
- args->device_ids_array_size);
- if (err != 0) {
- err = -EFAULT;
-@@ -1646,17 +1635,19 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
- return err;
- }
-
--static int kfd_ioctl_unmap_memory_from_gpu_wrapper(struct file *filep,
-+/* TODO: Remove this once the Thunk has transitioned to
-+ * AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU */
-+static int kfd_ioctl_unmap_memory_from_gpu_new(struct file *filep,
- struct kfd_process *p, void *data)
- {
-- struct kfd_ioctl_unmap_memory_from_gpu_args *args = data;
-- struct kfd_ioctl_unmap_memory_from_gpu_new_args new_args;
-+ struct kfd_ioctl_unmap_memory_from_gpu_new_args *new_args = data;
-+ struct kfd_ioctl_unmap_memory_from_gpu_args args;
-
-- new_args.handle = args->handle;
-- new_args.device_ids_array = NULL;
-- new_args.device_ids_array_size = 0;
-+ args.handle = new_args->handle;
-+ args.device_ids_array_ptr = (uint64_t)new_args->device_ids_array;
-+ args.device_ids_array_size = new_args->device_ids_array_size;
-
-- return kfd_ioctl_unmap_memory_from_gpu(filep, p, &new_args);
-+ return kfd_ioctl_unmap_memory_from_gpu(filep, p, &args);
- }
-
- static int kfd_ioctl_open_graphic_handle(struct file *filep,
-@@ -1781,14 +1772,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,
- goto exit;
- }
- args->gpu_id = kfd_get_gpu_id(dev);
--
-- /* Translate flags */
-- if (flags & ALLOC_MEM_FLAGS_VRAM) {
-- args->flags = KFD_IS_DGPU(dev->device_info->asic_family) ?
-- KFD_IOC_ALLOC_MEM_FLAGS_DGPU_DEVICE :
-- KFD_IOC_ALLOC_MEM_FLAGS_APU_DEVICE;
-- } else
-- args->flags = KFD_IOC_ALLOC_MEM_FLAGS_DGPU_HOST;
-+ args->flags = flags;
-
- /* Copy metadata buffer to user mode */
- if (metadata_buffer) {
-@@ -2213,10 +2197,10 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
- kfd_ioctl_free_memory_of_gpu, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_MAP_MEMORY_TO_GPU,
-- kfd_ioctl_map_memory_to_gpu_wrapper, 0),
-+ kfd_ioctl_map_memory_to_gpu, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU,
-- kfd_ioctl_unmap_memory_from_gpu_wrapper, 0),
-+ kfd_ioctl_unmap_memory_from_gpu, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_OPEN_GRAPHIC_HANDLE,
- kfd_ioctl_open_graphic_handle, 0),
-@@ -2237,10 +2221,10 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
- kfd_ioctl_alloc_memory_of_gpu_new, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_MAP_MEMORY_TO_GPU_NEW,
-- kfd_ioctl_map_memory_to_gpu, 0),
-+ kfd_ioctl_map_memory_to_gpu_new, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU_NEW,
-- kfd_ioctl_unmap_memory_from_gpu, 0),
-+ kfd_ioctl_unmap_memory_from_gpu_new, 0),
-
- AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_PROCESS_APERTURES_NEW,
- kfd_ioctl_get_process_apertures_new, 0),
---
-2.7.4
-