diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2010-10-05 13:07:16 -0400 |
---|---|---|
committer | Borislav Petkov <bp@amd64.org> | 2010-10-21 08:48:04 -0400 |
commit | f0157b3afd2ec6331245768a785487249a3c9734 (patch) | |
tree | 3cce097d951d73e78b11a3e5f5fdb4b17d5f9b29 /drivers/edac/mce_amd.c | |
parent | 9530d608ef0e1f76b7fd82bb92645062292fc009 (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.c | 15 |
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 | ||
488 | static void amd_decode_fr_mce(struct mce *m) | 491 | static 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; |