diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index d026fa7a5bd23be1c48571d4ec160c1c2278ea35..0329d5fe43a71cc03f2434adb065334bbc189679 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -3150,8 +3150,12 @@ static void decode_umc_error(int node_id, struct mce *m) pvt->ops->get_err_info(m, &err); - if (hygon_f18h_m4h() && boot_cpu_data.x86_model == 0x6) { - umc = err.channel << 1; + if (hygon_f18h_m4h() || boot_cpu_data.x86_model == 0x10) { + if (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;