From 5891e3cdcb1216b5630b970ab279adce520ed1b9 Mon Sep 17 00:00:00 2001 From: Liao Xuan Date: Fri, 27 Feb 2026 11:27:45 +0800 Subject: [PATCH] EDAC/amd64: Add support for Hygon family 18h model 18h Add Hygon family 18h model 18h processor support for amd64_edac. Hygon-SIG: EDAC/amd64: Add support for Hygon family 18h model 18h Signed-off-by: Liao Xuan Signed-off-by: yuntong --- drivers/edac/amd64_edac.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 423258a3f0df..67fde196860f 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -110,6 +110,11 @@ static u32 get_umc_base_f18h_m4h(u16 node, u8 channel) return get_umc_base(channel) + (0x80000000 + (0x10000000 * df_id)); } +static u32 get_umc_base_f18h_m18h(u8 channel) +{ + return 0x70000000 + (channel << 20); +} + /* * Select DCT to which PCI cfg accesses are routed */ @@ -1310,6 +1315,8 @@ static void __dump_misc_regs_df(struct amd64_pvt *pvt) if (hygon_f18h_m4h()) umc_base = get_umc_base_f18h_m4h(pvt->mc_node_id, i); + else if (hygon_f18h_m10h() && boot_cpu_data.x86_model >= 0x18) + umc_base = get_umc_base_f18h_m18h(i); else umc_base = get_umc_base(i); umc = &pvt->umc[i]; @@ -1437,6 +1444,8 @@ static void read_umc_base_mask(struct amd64_pvt *pvt) if (hygon_f18h_m4h()) umc_base = get_umc_base_f18h_m4h(pvt->mc_node_id, umc); + else if (hygon_f18h_m10h() && boot_cpu_data.x86_model >= 0x18) + umc_base = get_umc_base_f18h_m18h(umc); else umc_base = get_umc_base(umc); @@ -2973,6 +2982,8 @@ static void __read_mc_regs_df(struct amd64_pvt *pvt) if (hygon_f18h_m4h()) umc_base = get_umc_base_f18h_m4h(pvt->mc_node_id, i); + else if (hygon_f18h_m10h() && boot_cpu_data.x86_model >= 0x18) + umc_base = get_umc_base_f18h_m18h(i); else umc_base = get_umc_base(i); @@ -3662,6 +3673,13 @@ static int per_family_init(struct amd64_pvt *pvt) pvt->ctl_name = "F18h_M10h"; pvt->max_mcs = 2; break; + case 0x18: + pvt->ctl_name = "F18h_M18h"; + pvt->max_mcs = 1; + break; + default: + pvt->ctl_name = "F18h"; + break; } break; -- Gitee