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