Skip to content

Commit

Permalink
EDAC/amd64: Recognize x16 symbol size
Browse files Browse the repository at this point in the history
Future AMD systems may support x16 symbol sizes.

Recognize if a system is using x16 symbol size. Also, simplify the print
statement.

Note that a x16 syndrome vector table is not necessary like with x4 or
x8 syndromes. This is because systems that support x16 symbol sizes are
SMCA systems and in that case, the syndrome can be directly extracted
from the MCA_SYND[Syndrome] field.

 [ bp: massage. ]

Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Kim Phillips <kim.phillips@amd.com>
Cc: James Morse <james.morse@arm.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: https://lkml.kernel.org/r/20190228153558.127292-4-Yazen.Ghannam@amd.com
  • Loading branch information
Yazen Ghannam authored and Borislav Petkov committed Mar 26, 2019
1 parent 869adc4 commit 7835961
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
21 changes: 10 additions & 11 deletions drivers/edac/amd64_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -900,8 +900,7 @@ static void dump_misc_regs(struct amd64_pvt *pvt)

edac_dbg(1, " DramHoleValid: %s\n", dhar_valid(pvt) ? "yes" : "no");

amd64_info("using %s syndromes.\n",
((pvt->ecc_sym_sz == 8) ? "x8" : "x4"));
amd64_info("using x%u syndromes.\n", pvt->ecc_sym_sz);
}

/*
Expand Down Expand Up @@ -2612,17 +2611,17 @@ static void determine_ecc_sym_sz(struct amd64_pvt *pvt)

for_each_umc(i) {
/* Check enabled channels only: */
if ((pvt->umc[i].sdp_ctrl & UMC_SDP_INIT) &&
(pvt->umc[i].ecc_ctrl & BIT(7))) {
pvt->ecc_sym_sz = 8;
break;
if (pvt->umc[i].sdp_ctrl & UMC_SDP_INIT) {
if (pvt->umc[i].ecc_ctrl & BIT(9)) {
pvt->ecc_sym_sz = 16;
return;
} else if (pvt->umc[i].ecc_ctrl & BIT(7)) {
pvt->ecc_sym_sz = 8;
return;
}
}
}

return;
}

if (pvt->fam >= 0x10) {
} else if (pvt->fam >= 0x10) {
u32 tmp;

amd64_read_pci_cfg(pvt->F3, EXT_NB_MCA_CFG, &tmp);
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/amd64_edac.h
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ struct amd64_pvt {
u32 dct_sel_hi; /* DRAM Controller Select High */
u32 online_spare; /* On-Line spare Reg */

/* x4 or x8 syndromes in use */
/* x4, x8, or x16 syndromes in use */
u8 ecc_sym_sz;

/* place to store error injection parameters prior to issue */
Expand Down

0 comments on commit 7835961

Please sign in to comment.