aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch
new file mode 100644
index 00000000..0cbc703b
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/5697-drm-amdkfd-Optimize-out-some-duplicated-code-in-kfd_.patch
@@ -0,0 +1,59 @@
+From 029d9b0aadf9aa3491b2f6f16b894d5f17d5d45b Mon Sep 17 00:00:00 2001
+From: Yong Zhao <yong.zhao@amd.com>
+Date: Fri, 13 Jul 2018 16:17:47 -0400
+Subject: [PATCH 5697/5725] drm/amdkfd: Optimize out some duplicated code in
+ kfd_signal_iommu_event()
+
+memory_exception_data is already initialized for not-present faults.
+It only needs to be overridden for permission faults.
+
+Signed-off-by: Yong Zhao <yong.zhao@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_events.c | 26 +++++++++++---------------
+ 1 file changed, 11 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+index 1dc1584..a4cb7b0 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+@@ -911,22 +911,18 @@ void kfd_signal_iommu_event(struct kfd_dev *dev, unsigned int pasid,
+ memory_exception_data.failure.NotPresent = 1;
+ memory_exception_data.failure.NoExecute = 0;
+ memory_exception_data.failure.ReadOnly = 0;
+- if (vma) {
+- if (vma->vm_start > address) {
+- memory_exception_data.failure.NotPresent = 1;
+- memory_exception_data.failure.NoExecute = 0;
++ if (vma && address >= vma->vm_start) {
++ memory_exception_data.failure.NotPresent = 0;
++
++ if (is_write_requested && !(vma->vm_flags & VM_WRITE))
++ memory_exception_data.failure.ReadOnly = 1;
++ else
+ memory_exception_data.failure.ReadOnly = 0;
+- } else {
+- memory_exception_data.failure.NotPresent = 0;
+- if (is_write_requested && !(vma->vm_flags & VM_WRITE))
+- memory_exception_data.failure.ReadOnly = 1;
+- else
+- memory_exception_data.failure.ReadOnly = 0;
+- if (is_execute_requested && !(vma->vm_flags & VM_EXEC))
+- memory_exception_data.failure.NoExecute = 1;
+- else
+- memory_exception_data.failure.NoExecute = 0;
+- }
++
++ if (is_execute_requested && !(vma->vm_flags & VM_EXEC))
++ memory_exception_data.failure.NoExecute = 1;
++ else
++ memory_exception_data.failure.NoExecute = 0;
+ }
+
+ up_read(&mm->mmap_sem);
+--
+2.7.4
+