diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2010-09-01 16:45:20 +0400 |
---|---|---|
committer | Borislav Petkov <bp@amd64.org> | 2010-10-21 16:47:58 +0400 |
commit | 7cfd4a87441f5ca3018fdd1f7ad67e8a73a05dc2 (patch) | |
tree | a74a1bb40d2ef3b5a66551562cdf775b63a27c8f /drivers/edac/amd64_edac_dbg.c | |
parent | 6337583d7dc0dced36ab98dd63de2389c95c22d9 (diff) | |
download | linux-7cfd4a87441f5ca3018fdd1f7ad67e8a73a05dc2.tar.xz |
EDAC, MCE: Pass complete MCE info to decoders
... instead of the MCi_STATUS info only for improved handling of certain
types of errors later.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac/amd64_edac_dbg.c')
-rw-r--r-- | drivers/edac/amd64_edac_dbg.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/edac/amd64_edac_dbg.c b/drivers/edac/amd64_edac_dbg.c index 22ef3fecf569..f6d5695de5b6 100644 --- a/drivers/edac/amd64_edac_dbg.c +++ b/drivers/edac/amd64_edac_dbg.c @@ -10,11 +10,14 @@ static ssize_t amd64_nbea_store(struct mem_ctl_info *mci, const char *data, size_t count) { struct amd64_pvt *pvt = mci->pvt_info; - unsigned long long value; + u64 value; int ret = 0; + struct mce m; ret = strict_strtoull(data, 16, &value); if (ret != -EINVAL) { + struct err_regs *regs = &pvt->ctl_error_info; + debugf0("received NBEA= 0x%llx\n", value); /* place the value into the virtual error packet */ @@ -22,9 +25,12 @@ static ssize_t amd64_nbea_store(struct mem_ctl_info *mci, const char *data, value >>= 32; pvt->ctl_error_info.nbeah = (u32) value; + m.addr = value; + m.status = regs->nbsl | ((u64)regs->nbsh << 32); + /* Process the Mapping request */ /* TODO: Add race prevention */ - amd_decode_nb_mce(pvt->mc_node_id, &pvt->ctl_error_info); + amd_decode_nb_mce(pvt->mc_node_id, &m, regs->nbcfg); return count; } |