aboutsummaryrefslogtreecommitdiffstats
path: root/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch')
-rw-r--r--meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch142
1 files changed, 0 insertions, 142 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch
deleted file mode 100644
index 99acdcfa..00000000
--- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5659-drm-amdkfd-Clean-up-mmap-handling.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From ab152eae9ef649cd118b265e9230d127ce061b2f Mon Sep 17 00:00:00 2001
-From: Felix Kuehling <Felix.Kuehling@amd.com>
-Date: Mon, 23 Apr 2018 22:36:47 -0400
-Subject: [PATCH 5659/5725] drm/amdkfd: Clean up mmap handling
-
-Remove reserved bits in mmap addresses. The mmap offset is no longer
-used for TTM/DRM mappings. So it makes no sense to encode TTM/DRM
-address space limitations.
-
-Centralize encoding and parsing of the GPU ID in the mmap offset.
-
-Cosmetic changes to match upstream.
-
-Change-Id: I5edb10d257006ee915534756d9b0e28381c889ef
-Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
----
- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 27 +++++++++++++--------------
- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 9 ++++-----
- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 10 ++++------
- 3 files changed, 21 insertions(+), 25 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-index 0190734..99a29f7 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-@@ -2670,34 +2670,33 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
- static int kfd_mmap(struct file *filp, struct vm_area_struct *vma)
- {
- struct kfd_process *process;
-- struct kfd_dev *kfd;
-+ struct kfd_dev *dev = NULL;
- unsigned long vm_pgoff;
-- unsigned long long mmap_type;
-+ unsigned int gpu_id;
-
- process = kfd_get_process(current);
- if (IS_ERR(process))
- return PTR_ERR(process);
-
- vm_pgoff = vma->vm_pgoff;
-- vma->vm_pgoff = KFD_MMAP_OFFSET_VALUE_GET(vma->vm_pgoff);
-- mmap_type = vm_pgoff & KFD_MMAP_TYPE_MASK;
-+ vma->vm_pgoff = KFD_MMAP_OFFSET_VALUE_GET(vm_pgoff);
-+ gpu_id = KFD_MMAP_GPU_ID_GET(vm_pgoff);
-+ if (gpu_id)
-+ dev = kfd_device_by_id(gpu_id);
-
-- switch (mmap_type) {
-+ switch (vm_pgoff & KFD_MMAP_TYPE_MASK) {
- case KFD_MMAP_TYPE_DOORBELL:
-- kfd = kfd_device_by_id(KFD_MMAP_GPU_ID_GET(vm_pgoff));
-- if (!kfd)
-- return -EFAULT;
-- return kfd_doorbell_mmap(kfd, process, vma);
-+ if (!dev)
-+ return -ENODEV;
-+ return kfd_doorbell_mmap(dev, process, vma);
-
- case KFD_MMAP_TYPE_EVENTS:
- return kfd_event_mmap(process, vma);
-
- case KFD_MMAP_TYPE_RESERVED_MEM:
-- return kfd_reserved_mem_mmap(process, vma);
--
-- default:
-- pr_err("Unsupported kfd mmap type %llx\n", mmap_type);
-- break;
-+ if (!dev)
-+ return -ENODEV;
-+ return kfd_reserved_mem_mmap(dev, process, vma);
- }
-
- return -EFAULT;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-index bb3b020..e9c64ef 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-@@ -49,8 +49,7 @@
- /* Use upper bits of mmap offset to store KFD driver specific information.
- * BITS[63:62] - Encode MMAP type
- * BITS[61:46] - Encode gpu_id. To identify to which GPU the offset belongs to
-- * BITS[45:40] - Reserved. Not Used.
-- * BITS[39:0] - MMAP offset value. Used by TTM.
-+ * BITS[45:0] - MMAP offset value
- *
- * NOTE: struct vm_area_struct.vm_pgoff uses offset in pages. Hence, these
- * defines are w.r.t to PAGE_SIZE
-@@ -69,7 +68,7 @@
- #define KFD_MMAP_GPU_ID_GET(offset) ((offset & KFD_MMAP_GPU_ID_MASK) \
- >> KFD_MMAP_GPU_ID_SHIFT)
-
--#define KFD_MMAP_OFFSET_VALUE_MASK (0xFFFFFFFFFFULL >> PAGE_SHIFT)
-+#define KFD_MMAP_OFFSET_VALUE_MASK (0x3FFFFFFFFFFFULL >> PAGE_SHIFT)
- #define KFD_MMAP_OFFSET_VALUE_GET(offset) (offset & KFD_MMAP_OFFSET_VALUE_MASK)
-
- /*
-@@ -817,8 +816,8 @@ struct kfd_process_device *kfd_get_process_device_data(struct kfd_dev *dev,
- struct kfd_process_device *kfd_create_process_device_data(struct kfd_dev *dev,
- struct kfd_process *p);
-
--int kfd_reserved_mem_mmap(struct kfd_process *process,
-- struct vm_area_struct *vma);
-+int kfd_reserved_mem_mmap(struct kfd_dev *dev, 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,
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-index 78ccac0..7459d39 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-@@ -484,7 +484,8 @@ static int kfd_process_init_cwsr_apu(struct kfd_process *p, struct file *filep)
- if (!dev->cwsr_enabled || qpd->cwsr_kaddr || qpd->cwsr_base)
- continue;
-
-- offset = (dev->id | KFD_MMAP_TYPE_RESERVED_MEM) << PAGE_SHIFT;
-+ offset = (KFD_MMAP_TYPE_RESERVED_MEM | KFD_MMAP_GPU_ID(dev->id))
-+ << PAGE_SHIFT;
- qpd->tba_addr = (uint64_t)vm_mmap(filep, 0,
- KFD_CWSR_TBA_TMA_SIZE, PROT_READ | PROT_EXEC,
- MAP_SHARED, offset);
-@@ -1152,15 +1153,12 @@ static void restore_process_worker(struct work_struct *work)
- pr_info("Finished restoring process of pasid %d\n", p->pasid);
- }
-
--int kfd_reserved_mem_mmap(struct kfd_process *process,
-- struct vm_area_struct *vma)
-+int kfd_reserved_mem_mmap(struct kfd_dev *dev, struct kfd_process *process,
-+ struct vm_area_struct *vma)
- {
-- struct kfd_dev *dev = kfd_device_by_id(vma->vm_pgoff);
- struct kfd_process_device *pdd;
- struct qcm_process_device *qpd;
-
-- if (!dev)
-- return -EINVAL;
- if ((vma->vm_end - vma->vm_start) != KFD_CWSR_TBA_TMA_SIZE) {
- pr_err("Incorrect CWSR mapping size.\n");
- return -EINVAL;
---
-2.7.4
-