aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/mce_amd.c
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2010-10-05 13:07:16 -0400
committerBorislav Petkov <bp@amd64.org>2010-10-21 08:48:04 -0400
commitf0157b3afd2ec6331245768a785487249a3c9734 (patch)
tree3cce097d951d73e78b11a3e5f5fdb4b17d5f9b29 /drivers/edac/mce_amd.c
parent9530d608ef0e1f76b7fd82bb92645062292fc009 (diff)
EDAC, MCE: Add support for F11h MCEs
F11h has almost the same MCE signatures as K8 except DRAM ECC and MC5 bank errors. Reuse functionality from the other families. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac/mce_amd.c')
-rw-r--r--drivers/edac/mce_amd.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c
index f233c5f78302..9fa61ee2d743 100644
--- a/drivers/edac/mce_amd.c
+++ b/drivers/edac/mce_amd.c
@@ -358,6 +358,9 @@ static bool k8_nb_mce(u16 ec, u8 xec)
358 358
359 case 0x0: 359 case 0x0:
360 case 0x8: 360 case 0x8:
361 if (boot_cpu_data.x86 == 0x11)
362 return false;
363
361 pr_cont("DRAM ECC error detected on the NB.\n"); 364 pr_cont("DRAM ECC error detected on the NB.\n");
362 break; 365 break;
363 366
@@ -487,7 +490,8 @@ EXPORT_SYMBOL_GPL(amd_decode_nb_mce);
487 490
488static void amd_decode_fr_mce(struct mce *m) 491static void amd_decode_fr_mce(struct mce *m)
489{ 492{
490 if (boot_cpu_data.x86 == 0xf) 493 if (boot_cpu_data.x86 == 0xf ||
494 boot_cpu_data.x86 == 0x11)
491 goto wrong_fr_mce; 495 goto wrong_fr_mce;
492 496
493 /* we have only one error signature so match all fields at once. */ 497 /* we have only one error signature so match all fields at once. */
@@ -601,8 +605,7 @@ static int __init mce_amd_init(void)
601 if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) 605 if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
602 return 0; 606 return 0;
603 607
604 if (boot_cpu_data.x86 != 0xf && 608 if ((boot_cpu_data.x86 < 0xf || boot_cpu_data.x86 > 0x11) &&
605 boot_cpu_data.x86 != 0x10 &&
606 (boot_cpu_data.x86 != 0x14 || boot_cpu_data.x86_model > 0xf)) 609 (boot_cpu_data.x86 != 0x14 || boot_cpu_data.x86_model > 0xf))
607 return 0; 610 return 0;
608 611
@@ -623,6 +626,12 @@ static int __init mce_amd_init(void)
623 fam_ops->nb_mce = f10h_nb_mce; 626 fam_ops->nb_mce = f10h_nb_mce;
624 break; 627 break;
625 628
629 case 0x11:
630 fam_ops->dc_mce = k8_dc_mce;
631 fam_ops->ic_mce = k8_ic_mce;
632 fam_ops->nb_mce = f10h_nb_mce;
633 break;
634
626 case 0x14: 635 case 0x14:
627 nb_err_cpumask = 0x3; 636 nb_err_cpumask = 0x3;
628 fam_ops->dc_mce = f14h_dc_mce; 637 fam_ops->dc_mce = f14h_dc_mce;