aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch
new file mode 100644
index 00000000..ca16a561
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2861-drm-amdkfd-Simplify-kfd_reserved_mem_mmap.patch
@@ -0,0 +1,65 @@
+From 40499198937df50599c9c7ee2b1558b462763322 Mon Sep 17 00:00:00 2001
+From: Felix Kuehling <Felix.Kuehling@amd.com>
+Date: Wed, 8 Nov 2017 20:25:40 -0500
+Subject: [PATCH 2861/4131] drm/amdkfd: Simplify kfd_reserved_mem_mmap
+
+* Remove unnecessary alignment checks
+* Use kfd_get_process_device_data instead of reinventing it
+* Clean up error messages
+
+Change-Id: I007e6cd0453bf7b6eeaeec7656b524bdd25d18d5
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_process.c | 25 ++++++++-----------------
+ 1 file changed, 8 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+index 17c2ecd..50ff3ef 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+@@ -1118,34 +1118,25 @@ int kfd_reserved_mem_mmap(struct kfd_process *process,
+ struct vm_area_struct *vma)
+ {
+ struct kfd_dev *dev = kfd_device_by_id(vma->vm_pgoff);
+- struct kfd_process_device *temp, *pdd = NULL;
+- struct qcm_process_device *qpd = NULL;
++ 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) ||
+- (vma->vm_start & (PAGE_SIZE - 1)) ||
+- (vma->vm_end & (PAGE_SIZE - 1))) {
+- pr_err("KFD only support page aligned memory map and correct size.\n");
++ if ((vma->vm_end - vma->vm_start) != KFD_CWSR_TBA_TMA_SIZE) {
++ pr_err("Incorrect CWSR mapping size.\n");
+ return -EINVAL;
+ }
+
+- pr_debug("kfd reserved mem mmap been called.\n");
+-
+- list_for_each_entry_safe(pdd, temp, &process->per_device_data,
+- per_device_list) {
+- if (dev == pdd->dev) {
+- qpd = &pdd->qpd;
+- break;
+- }
+- }
+- if (!qpd)
++ pdd = kfd_get_process_device_data(dev, process);
++ if (!pdd)
+ return -EINVAL;
++ qpd = &pdd->qpd;
+
+ qpd->cwsr_kaddr = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
+ get_order(KFD_CWSR_TBA_TMA_SIZE));
+ if (!qpd->cwsr_kaddr) {
+- pr_err("amdkfd: error alloc CWSR isa memory per process.\n");
++ pr_err("Error allocating per process CWSR buffer.\n");
+ return -ENOMEM;
+ }
+
+--
+2.7.4
+