diff options
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.patch | 65 |
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 + |