EDAC/mce_amd: Use struct cpuinfo_x86.logical_die_id for Hygon NodeId

The cpuinfo_x86.cpu_die_id is get from CPUID or MSR in the commit
028c221ed1 ("x86/CPU/AMD: Save AMD NodeId as cpu_die_id"). But the
value may not be continuous for Hygon model 4h~6h processors.

Use cpuinfo_x86.logical_die_id will always format continuous die
(or node) IDs, because it will convert the physical die ID to logical
die ID.

So use topology_logical_die_id() instead of topology_die_id() to
decode UMC ECC errors for Hygon processors.

Signed-off-by: Pu Wen <puwen@hygon.cn>
Signed-off-by: Jinliang Zheng <alexjlzheng@tencent.com>
Reviewed-by: Bin Lai <robinlai@tencent.com>
Signed-off-by: Jinliang Zheng <alexjlzheng@tencent.com>
Reviewed-by: caelli <caelli@tencent.com>
Signed-off-by: Jianping Liu <frankjpliu@tencent.com>
This commit is contained in:
Pu Wen 2023-06-08 12:39:46 +08:00 committed by Jianping Liu
parent 2c453f4b4e
commit 9680d833c1
1 changed files with 7 additions and 2 deletions

View File

@ -1184,8 +1184,13 @@ static void decode_smca_error(struct mce *m)
if (xec < smca_mce_descs[bank_type].num_descs) if (xec < smca_mce_descs[bank_type].num_descs)
pr_cont(", %s.\n", smca_mce_descs[bank_type].descs[xec]); pr_cont(", %s.\n", smca_mce_descs[bank_type].descs[xec]);
if (bank_type == SMCA_UMC && xec == 0 && decode_dram_ecc) if (bank_type == SMCA_UMC && xec == 0 && decode_dram_ecc) {
decode_dram_ecc(topology_die_id(m->extcpu), m); if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON &&
boot_cpu_data.x86 == 0x18)
decode_dram_ecc(topology_logical_die_id(m->extcpu), m);
else
decode_dram_ecc(topology_die_id(m->extcpu), m);
}
} }
static inline void amd_decode_err_code(u16 ec) static inline void amd_decode_err_code(u16 ec)