aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch121
1 files changed, 121 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch
new file mode 100644
index 00000000..b573e832
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3123-drm-amdgpu-Create-helper-to-clear-AMDGPU_GEM_CREATE_.patch
@@ -0,0 +1,121 @@
+From 434afe927a6eb690c36541da6f90d10fd5179605 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Date: Wed, 24 Jul 2019 10:04:27 -0400
+Subject: [PATCH 3123/4256] drm/amdgpu: Create helper to clear
+ AMDGPU_GEM_CREATE_CPU_GTT_USWC
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Move the logic to clear AMDGPU_GEM_CREATE_CPU_GTT_USWC in
+amdgpu_bo_do_create into standalone helper so it can be reused
+in other functions.
+
+v4:
+Switch to return bool.
+
+v5: Fix typos.
+
+Change-Id: Iff8a1a527813d35bcd4b3ef77350d9397904db95
+Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Acked-by: Michel Dänzer <michel.daenzer@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 61 +++++++++++++---------
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 2 +
+ 2 files changed, 37 insertions(+), 26 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+index 2401d61cb741..495c5d33fc62 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+@@ -434,6 +434,40 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
+ return false;
+ }
+
++bool amdgpu_bo_support_uswc(u64 bo_flags)
++{
++
++#ifdef CONFIG_X86_32
++ /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit
++ * See https://bugs.freedesktop.org/show_bug.cgi?id=84627
++ */
++ return false;
++#elif defined(CONFIG_X86) && !defined(CONFIG_X86_PAT)
++ /* Don't try to enable write-combining when it can't work, or things
++ * may be slow
++ * See https://bugs.freedesktop.org/show_bug.cgi?id=88758
++ */
++
++#ifndef CONFIG_COMPILE_TEST
++#warning Please enable CONFIG_MTRR and CONFIG_X86_PAT for better performance \
++ thanks to write-combining
++#endif
++
++ if (bo_flags & AMDGPU_GEM_CREATE_CPU_GTT_USWC)
++ DRM_INFO_ONCE("Please enable CONFIG_MTRR and CONFIG_X86_PAT for "
++ "better performance thanks to write-combining\n");
++ return false;
++#else
++ /* For architectures that don't support WC memory,
++ * mask out the WC flag from the BO
++ */
++ if (!drm_arch_can_wc_memory())
++ return false;
++
++ return true;
++#endif
++}
++
+ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
+ struct amdgpu_bo_param *bp,
+ struct amdgpu_bo **bo_ptr)
+@@ -487,33 +521,8 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
+
+ bo->flags = bp->flags;
+
+-#ifdef CONFIG_X86_32
+- /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit
+- * See https://bugs.freedesktop.org/show_bug.cgi?id=84627
+- */
+- bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC;
+-#elif defined(CONFIG_X86) && !defined(CONFIG_X86_PAT)
+- /* Don't try to enable write-combining when it can't work, or things
+- * may be slow
+- * See https://bugs.freedesktop.org/show_bug.cgi?id=88758
+- */
+-
+-#ifndef CONFIG_COMPILE_TEST
+-#warning Please enable CONFIG_MTRR and CONFIG_X86_PAT for better performance \
+- thanks to write-combining
+-#endif
+-
+- if (bo->flags & AMDGPU_GEM_CREATE_CPU_GTT_USWC)
+- DRM_INFO_ONCE("Please enable CONFIG_MTRR and CONFIG_X86_PAT for "
+- "better performance thanks to write-combining\n");
+- bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC;
+-#else
+- /* For architectures that don't support WC memory,
+- * mask out the WC flag from the BO
+- */
+- if (!drm_arch_can_wc_memory())
++ if (!amdgpu_bo_support_uswc(bo->flags))
+ bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC;
+-#endif
+
+ bo->tbo.bdev = &adev->mman.bdev;
+ if (bp->domain & (AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA |
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+index b27271290c33..6658c2399223 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+@@ -312,5 +312,7 @@ void amdgpu_sa_bo_dump_debug_info(struct amdgpu_sa_manager *sa_manager,
+ struct seq_file *m);
+ #endif
+
++bool amdgpu_bo_support_uswc(u64 bo_flags);
++
+
+ #endif
+--
+2.17.1
+