Skip to content

Commit

Permalink
EDAC, AMD: decode load store MCEs
Browse files Browse the repository at this point in the history
See Fam10h BKDG (31116, rev. 3.28), Table 100.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
  • Loading branch information
Borislav Petkov committed Sep 14, 2009
1 parent 56cad2d commit f9350ef
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions drivers/edac/edac_mce_amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,27 @@ static void amd_decode_bu_mce(u64 mc2_status)
pr_warning("Corrupted BU MCE info?\n");
}

static void amd_decode_ls_mce(u64 mc3_status)
{
u32 ec = mc3_status & 0xffff;
u32 xec = (mc3_status >> 16) & 0xf;

pr_emerg(" Load Store Error");

if (xec == 0x0) {
u8 rrrr = (ec >> 4) & 0xf;

if (!BUS_ERROR(ec) || (rrrr != 0x3 && rrrr != 0x4))
goto wrong_ls_mce;

pr_cont(" during %s.\n", RRRR_MSG(ec));
}
return;

wrong_ls_mce:
pr_warning("Corrupted LS MCE info?\n");
}

void amd_decode_nb_mce(int node_id, struct err_regs *regs, int handle_errors)
{
u32 ec = ERROR_CODE(regs->nbsl);
Expand Down Expand Up @@ -366,6 +387,10 @@ void decode_mce(struct mce *m)
amd_decode_bu_mce(m->status);
break;

case 3:
amd_decode_ls_mce(m->status);
break;

case 4:
regs.nbsl = (u32) m->status;
regs.nbsh = (u32)(m->status >> 32);
Expand Down

0 comments on commit f9350ef

Please sign in to comment.