aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/mce_amd.c
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2010-09-16 09:08:14 -0400
committerBorislav Petkov <bp@amd64.org>2010-10-21 08:48:04 -0400
commit9be0bb1072e3544934e0ac20f184e50805aecf9c (patch)
tree88f026a249d3ec1f5ae51a0b8aa4a645864008f1 /drivers/edac/mce_amd.c
parentf0157b3afd2ec6331245768a785487249a3c9734 (diff)
EDAC, MCE: Add F12h DC MCE decoder
F12h DC MCE signatures are a subset of F10h's so reuse them. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac/mce_amd.c')
-rw-r--r--drivers/edac/mce_amd.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c
index 9fa61ee2d743..1f895dfb756a 100644
--- a/drivers/edac/mce_amd.c
+++ b/drivers/edac/mce_amd.c
@@ -74,16 +74,10 @@ static const char *f10h_nb_mce_desc[] = {
74 "ECC Error in the Probe Filter directory" 74 "ECC Error in the Probe Filter directory"
75}; 75};
76 76
77static bool f10h_dc_mce(u16 ec) 77static bool f12h_dc_mce(u16 ec)
78{ 78{
79 u8 r4 = (ec >> 4) & 0xf;
80 bool ret = false; 79 bool ret = false;
81 80
82 if (r4 == R4_GEN) {
83 pr_cont("during data scrub.\n");
84 return true;
85 }
86
87 if (MEM_ERROR(ec)) { 81 if (MEM_ERROR(ec)) {
88 u8 ll = ec & 0x3; 82 u8 ll = ec & 0x3;
89 ret = true; 83 ret = true;
@@ -98,6 +92,18 @@ static bool f10h_dc_mce(u16 ec)
98 return ret; 92 return ret;
99} 93}
100 94
95static bool f10h_dc_mce(u16 ec)
96{
97 u8 r4 = (ec >> 4) & 0xf;
98 u8 ll = ec & 0x3;
99
100 if (r4 == R4_GEN && ll == LL_L1) {
101 pr_cont("during data scrub.\n");
102 return true;
103 }
104 return f12h_dc_mce(ec);
105}
106
101static bool k8_dc_mce(u16 ec) 107static bool k8_dc_mce(u16 ec)
102{ 108{
103 if (BUS_ERROR(ec)) { 109 if (BUS_ERROR(ec)) {
@@ -632,6 +638,10 @@ static int __init mce_amd_init(void)
632 fam_ops->nb_mce = f10h_nb_mce; 638 fam_ops->nb_mce = f10h_nb_mce;
633 break; 639 break;
634 640
641 case 0x12:
642 fam_ops->dc_mce = f12h_dc_mce;
643 break;
644
635 case 0x14: 645 case 0x14:
636 nb_err_cpumask = 0x3; 646 nb_err_cpumask = 0x3;
637 fam_ops->dc_mce = f14h_dc_mce; 647 fam_ops->dc_mce = f14h_dc_mce;