Commit 98ae9b52 authored by Pu Wen's avatar Pu Wen
Browse files

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

hygon inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I7DX6V


CVE: NA

---------------------------

The cpuinfo_x86.cpu_die_id is get from CPUID or MSR in the commit
028c221e ("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: default avatarPu Wen <puwen@hygon.cn>
parent 08fdc64f
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1002,9 +1002,14 @@ static void decode_smca_error(struct mce *m)
		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) {
		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)
{