MCE, AMD: Report decoded error type first
authorBorislav Petkov <borislav.petkov@amd.com>
Fri, 14 Sep 2012 18:10:59 +0000 (20:10 +0200)
committerBorislav Petkov <bp@alien8.de>
Wed, 28 Nov 2012 10:56:17 +0000 (11:56 +0100)
Instead of starting with the error details, report the decoded, readable
error type first.

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

index e871a2abc8029b5ce69e5c59c9e7a33e8b3f2b4a..f856a2531cecc04bcb7d71824824ce38f8812efd 100644 (file)
@@ -676,31 +676,6 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
        if (amd_filter_mce(m))
                return NOTIFY_STOP;
 
-       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" : "-"),
-               ((m->status & MCI_STATUS_PCC)   ? "PCC"   : "-"),
-               ((m->status & MCI_STATUS_ADDRV) ? "AddrV" : "-"));
-
-       if (c->x86 == 0x15)
-               pr_cont("|%s|%s",
-                       ((m->status & BIT_64(44)) ? "Deferred" : "-"),
-                       ((m->status & BIT_64(43)) ? "Poison"   : "-"));
-
-       /* do the two bits[14:13] together */
-       ecc = (m->status >> 45) & 0x3;
-       if (ecc)
-               pr_cont("|%sECC", ((ecc == 2) ? "C" : "U"));
-
-       pr_cont("]: 0x%016llx\n", m->status);
-
-       if (m->status & MCI_STATUS_ADDRV)
-               pr_emerg(HW_ERR "MC%d_ADDR: 0x%016llx\n", m->bank, m->addr);
-
        switch (m->bank) {
        case 0:
                decode_mc0_mce(m);
@@ -737,6 +712,31 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
                break;
        }
 
+       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" : "-"),
+               ((m->status & MCI_STATUS_PCC)   ? "PCC"   : "-"),
+               ((m->status & MCI_STATUS_ADDRV) ? "AddrV" : "-"));
+
+       if (c->x86 == 0x15)
+               pr_cont("|%s|%s",
+                       ((m->status & BIT_64(44)) ? "Deferred" : "-"),
+                       ((m->status & BIT_64(43)) ? "Poison"   : "-"));
+
+       /* do the two bits[14:13] together */
+       ecc = (m->status >> 45) & 0x3;
+       if (ecc)
+               pr_cont("|%sECC", ((ecc == 2) ? "C" : "U"));
+
+       pr_cont("]: 0x%016llx\n", m->status);
+
+       if (m->status & MCI_STATUS_ADDRV)
+               pr_emerg(HW_ERR "MC%d_ADDR: 0x%016llx\n", m->bank, m->addr);
+
        amd_decode_err_code(m->status & 0xffff);
 
        return NOTIFY_STOP;