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