edac, mce: Filter out invalid values
authorBorislav Petkov <borislav.petkov@amd.com>
Tue, 9 Mar 2010 19:38:48 +0000 (20:38 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 1 Apr 2010 22:58:40 +0000 (15:58 -0700)
commit 5b89d2f9ace1970324facc68ca9b8fae19ce8096 upstream.

Print the CPU associated with the error only when the field is valid.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/edac/edac_mce_amd.c

index 713ed7d372475dc325ac7cfca8cc5e22181af29b..ac2aea8c756d77a935cde1dcfde23d8f8b4412bf 100644 (file)
@@ -311,9 +311,13 @@ void amd_decode_nb_mce(int node_id, struct err_regs *regs, int handle_errors)
                if (regs->nbsh & K8_NBSH_ERR_CPU_VAL)
                        pr_cont(", core: %u\n", (u8)(regs->nbsh & 0xf));
        } else {
-               pr_cont(", core: %d\n", ilog2((regs->nbsh & 0xf)));
-       }
+               u8 assoc_cpus = regs->nbsh & 0xf;
+
+               if (assoc_cpus > 0)
+                       pr_cont(", core: %d", fls(assoc_cpus) - 1);
 
+               pr_cont("\n");
+       }
 
        pr_emerg("%s.\n", EXT_ERR_MSG(xec));