Commit d0d1ed37 authored by Pu Wen's avatar Pu Wen
Browse files

EDAC/amd64: Adjust UMC channel for Hygon family 18h model 6h

hygon inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I92NKS


CVE: NA

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

Hygon family 18h model 6h has 2 cs mapped to 1 umc, so adjust for it.

Fixes: b3861530 ("EDAC/amd64: Add support for Hygon family 18h model 6h")
Signed-off-by: default avatarPu Wen <puwen@hygon.cn>
parent 14a0c4d4
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2971,6 +2971,7 @@ static void decode_umc_error(int node_id, struct mce *m)
	struct amd64_pvt *pvt;
	struct err_info err;
	u64 sys_addr;
	u8 umc;

	mci = edac_mc_find(node_id);
	if (!mci)
@@ -3001,7 +3002,12 @@ static void decode_umc_error(int node_id, struct mce *m)

	err.csrow = m->synd & 0x7;

	if (umc_normaddr_to_sysaddr(m->addr, pvt->mc_node_id, err.channel, &sys_addr)) {
	if (hygon_f18h_m4h() && boot_cpu_data.x86_model == 0x6)
		umc = err.channel << 1;
	else
		umc = err.channel;

	if (umc_normaddr_to_sysaddr(m->addr, pvt->mc_node_id, umc, &sys_addr)) {
		err.err_code = ERR_NORM_ADDR;
		goto log_error;
	}