MCE, AMD: Dump CPU f/m/s triple with the error
authorBorislav Petkov <borislav.petkov@amd.com>
Thu, 13 Sep 2012 13:14:22 +0000 (15:14 +0200)
committerBorislav Petkov <bp@alien8.de>
Wed, 28 Nov 2012 10:55:57 +0000 (11:55 +0100)
It is very useful to have the family/model/stepping with the reported
error so dump it. This saves us asking the bug reporter about it.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
drivers/edac/mce_amd.c

index 6b38c1186922775b5b154f9c4d9ee7e58acaa174..e871a2abc8029b5ce69e5c59c9e7a33e8b3f2b4a 100644 (file)
@@ -670,14 +670,16 @@ static bool amd_filter_mce(struct mce *m)
 int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
 {
        struct mce *m = (struct mce *)data;
-       struct cpuinfo_x86 *c = &boot_cpu_data;
+       struct cpuinfo_x86 *c = &cpu_data(m->extcpu);
        int ecc;
 
        if (amd_filter_mce(m))
                return NOTIFY_STOP;
 
-       pr_emerg(HW_ERR "CPU:%d\tMC%d_STATUS[%s|%s|%s|%s|%s",
-               m->extcpu, m->bank,
+       pr_emerg(HW_ERR "CPU:%d (%x:%x:%x) MC%d_STATUS[%s|%s|%s|%s|%s",
+               m->extcpu,
+               c->x86, c->x86_model, c->x86_mask,
+               m->bank,
                ((m->status & MCI_STATUS_OVER)  ? "Over"  : "-"),
                ((m->status & MCI_STATUS_UC)    ? "UE"    : "CE"),
                ((m->status & MCI_STATUS_MISCV) ? "MiscV" : "-"),
@@ -697,7 +699,7 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
        pr_cont("]: 0x%016llx\n", m->status);
 
        if (m->status & MCI_STATUS_ADDRV)
-               pr_emerg(HW_ERR "\tMC%d_ADDR: 0x%016llx\n", m->bank, m->addr);
+               pr_emerg(HW_ERR "MC%d_ADDR: 0x%016llx\n", m->bank, m->addr);
 
        switch (m->bank) {
        case 0: