EDAC, MCE: Add F12h DC MCE decoder
authorBorislav Petkov <borislav.petkov@amd.com>
Thu, 16 Sep 2010 13:08:14 +0000 (15:08 +0200)
committerBorislav Petkov <bp@amd64.org>
Thu, 21 Oct 2010 12:48:04 +0000 (14:48 +0200)
F12h DC MCE signatures are a subset of F10h's so reuse them.

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

index 9fa61ee2d7435082f0debc6c939cd09dc794e4c2..1f895dfb756a956961dd7a971322b70d49b58871 100644 (file)
@@ -74,16 +74,10 @@ static const char *f10h_nb_mce_desc[] = {
        "ECC Error in the Probe Filter directory"
 };
 
-static bool f10h_dc_mce(u16 ec)
+static bool f12h_dc_mce(u16 ec)
 {
-       u8 r4  = (ec >> 4) & 0xf;
        bool ret = false;
 
-       if (r4 == R4_GEN) {
-               pr_cont("during data scrub.\n");
-               return true;
-       }
-
        if (MEM_ERROR(ec)) {
                u8 ll = ec & 0x3;
                ret = true;
@@ -98,6 +92,18 @@ static bool f10h_dc_mce(u16 ec)
        return ret;
 }
 
+static bool f10h_dc_mce(u16 ec)
+{
+       u8 r4  = (ec >> 4) & 0xf;
+       u8 ll  = ec & 0x3;
+
+       if (r4 == R4_GEN && ll == LL_L1) {
+               pr_cont("during data scrub.\n");
+               return true;
+       }
+       return f12h_dc_mce(ec);
+}
+
 static bool k8_dc_mce(u16 ec)
 {
        if (BUS_ERROR(ec)) {
@@ -632,6 +638,10 @@ static int __init mce_amd_init(void)
                fam_ops->nb_mce = f10h_nb_mce;
                break;
 
+       case 0x12:
+               fam_ops->dc_mce = f12h_dc_mce;
+               break;
+
        case 0x14:
                nb_err_cpumask  = 0x3;
                fam_ops->dc_mce = f14h_dc_mce;