diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4620-drm-amdgpu-Added-ASIC-specific-checks-in-gfxhub-V1.1.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4620-drm-amdgpu-Added-ASIC-specific-checks-in-gfxhub-V1.1.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4620-drm-amdgpu-Added-ASIC-specific-checks-in-gfxhub-V1.1.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4620-drm-amdgpu-Added-ASIC-specific-checks-in-gfxhub-V1.1.patch new file mode 100644 index 00000000..7c1e2ab3 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4620-drm-amdgpu-Added-ASIC-specific-checks-in-gfxhub-V1.1.patch @@ -0,0 +1,56 @@ +From 65fbe53b9185dbdfd217fc78f88629535635b260 Mon Sep 17 00:00:00 2001 +From: John Clements <john.clements@amd.com> +Date: Mon, 2 Dec 2019 17:57:25 +0800 +Subject: [PATCH 4620/4736] drm/amdgpu: Added ASIC specific checks in gfxhub + V1.1 get XGMI info + +Added max hive/node info checks per supported ASIC + +Change-Id: I1713285d7f650a1137b15d89fa000ea824421b6b +Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> +Signed-off-by: John Clements <john.clements@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.c +index 5e9ab8eb214a..c0ab71df0d90 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.c +@@ -33,16 +33,31 @@ int gfxhub_v1_1_get_xgmi_info(struct amdgpu_device *adev) + u32 xgmi_lfb_cntl = RREG32_SOC15(GC, 0, mmMC_VM_XGMI_LFB_CNTL); + u32 max_region = + REG_GET_FIELD(xgmi_lfb_cntl, MC_VM_XGMI_LFB_CNTL, PF_MAX_REGION); ++ u32 max_num_physical_nodes = 0; ++ u32 max_physical_node_id = 0; ++ ++ switch (adev->asic_type) { ++ case CHIP_VEGA20: ++ max_num_physical_nodes = 4; ++ max_physical_node_id = 3; ++ break; ++ case CHIP_ARCTURUS: ++ max_num_physical_nodes = 8; ++ max_physical_node_id = 7; ++ break; ++ default: ++ return -EINVAL; ++ } + + /* PF_MAX_REGION=0 means xgmi is disabled */ + if (max_region) { + adev->gmc.xgmi.num_physical_nodes = max_region + 1; +- if (adev->gmc.xgmi.num_physical_nodes > 4) ++ if (adev->gmc.xgmi.num_physical_nodes > max_num_physical_nodes) + return -EINVAL; + + adev->gmc.xgmi.physical_node_id = + REG_GET_FIELD(xgmi_lfb_cntl, MC_VM_XGMI_LFB_CNTL, PF_LFB_REGION); +- if (adev->gmc.xgmi.physical_node_id > 3) ++ if (adev->gmc.xgmi.physical_node_id > max_physical_node_id) + return -EINVAL; + adev->gmc.xgmi.node_segment_size = REG_GET_FIELD( + RREG32_SOC15(GC, 0, mmMC_VM_XGMI_LFB_SIZE), +-- +2.17.1 + |