diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/2895-drm-amdgpu-use-new-mmhub-interfaces-for-Arcturus.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/2895-drm-amdgpu-use-new-mmhub-interfaces-for-Arcturus.patch | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/2895-drm-amdgpu-use-new-mmhub-interfaces-for-Arcturus.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/2895-drm-amdgpu-use-new-mmhub-interfaces-for-Arcturus.patch new file mode 100644 index 00000000..ae12ccaf --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/2895-drm-amdgpu-use-new-mmhub-interfaces-for-Arcturus.patch @@ -0,0 +1,110 @@ +From 1d6d7468f11931b50de428e4961f28444af475d3 Mon Sep 17 00:00:00 2001 +From: Le Ma <le.ma@amd.com> +Date: Tue, 4 Sep 2018 15:29:52 +0800 +Subject: [PATCH 2895/2940] drm/amdgpu: use new mmhub interfaces for Arcturus + +Signed-off-by: Le Ma <le.ma@amd.com> +Acked-by: Snow Zhang < Snow.Zhang@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 35 ++++++++++++++++++++++----- + 1 file changed, 29 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +index 11f273ddde90..6c29b7036c93 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +@@ -44,6 +44,7 @@ + #include "gfxhub_v1_0.h" + #include "mmhub_v1_0.h" + #include "gfxhub_v1_1.h" ++#include "mmhub_v9_4.h" + + #include "ivsrcid/vmc/irqsrcs_vmc_1_0.h" + +@@ -800,8 +801,12 @@ static void gmc_v9_0_vram_gtt_location(struct amdgpu_device *adev, + struct amdgpu_gmc *mc) + { + u64 base = 0; +- if (!amdgpu_sriov_vf(adev)) +- base = mmhub_v1_0_get_fb_location(adev); ++ if (!amdgpu_sriov_vf(adev)) { ++ if (adev->asic_type == CHIP_ARCTURUS) ++ base = mmhub_v9_4_get_fb_location(adev); ++ else ++ base = mmhub_v1_0_get_fb_location(adev); ++ } + /* add the xgmi offset of the physical node */ + base += adev->gmc.xgmi.physical_node_id * adev->gmc.xgmi.node_segment_size; + amdgpu_gmc_vram_location(adev, mc, base); +@@ -967,7 +972,10 @@ static int gmc_v9_0_sw_init(void *handle) + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + + gfxhub_v1_0_init(adev); +- mmhub_v1_0_init(adev); ++ if (adev->asic_type == CHIP_ARCTURUS) ++ mmhub_v9_4_init(adev); ++ else ++ mmhub_v1_0_init(adev); + + spin_lock_init(&adev->gmc.invalidate_lock); + +@@ -1187,7 +1195,10 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev) + if (r) + return r; + +- r = mmhub_v1_0_gart_enable(adev); ++ if (adev->asic_type == CHIP_ARCTURUS) ++ r = mmhub_v9_4_gart_enable(adev); ++ else ++ r = mmhub_v1_0_gart_enable(adev); + if (r) + return r; + +@@ -1208,7 +1219,10 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev) + value = true; + + gfxhub_v1_0_set_fault_enable_default(adev, value); +- mmhub_v1_0_set_fault_enable_default(adev, value); ++ if (adev->asic_type == CHIP_ARCTURUS) ++ mmhub_v9_4_set_fault_enable_default(adev, value); ++ else ++ mmhub_v1_0_set_fault_enable_default(adev, value); + gmc_v9_0_flush_gpu_tlb(adev, 0, 0); + + DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", +@@ -1249,7 +1263,10 @@ static int gmc_v9_0_hw_init(void *handle) + static void gmc_v9_0_gart_disable(struct amdgpu_device *adev) + { + gfxhub_v1_0_gart_disable(adev); +- mmhub_v1_0_gart_disable(adev); ++ if (adev->asic_type == CHIP_ARCTURUS) ++ mmhub_v9_4_gart_disable(adev); ++ else ++ mmhub_v1_0_gart_disable(adev); + amdgpu_gart_table_vram_unpin(adev); + } + +@@ -1314,6 +1331,9 @@ static int gmc_v9_0_set_clockgating_state(void *handle, + { + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + ++ if (adev->asic_type == CHIP_ARCTURUS) ++ return 0; ++ + return mmhub_v1_0_set_clockgating(adev, state); + } + +@@ -1321,6 +1341,9 @@ static void gmc_v9_0_get_clockgating_state(void *handle, u32 *flags) + { + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + ++ if (adev->asic_type == CHIP_ARCTURUS) ++ return; ++ + mmhub_v1_0_get_clockgating(adev, flags); + } + +-- +2.17.1 + |