diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2011-01-07 10:17:46 -0500 |
---|---|---|
committer | Borislav Petkov <borislav.petkov@amd.com> | 2011-03-17 09:46:17 -0400 |
commit | bcd781f46a5f892ef2ae5843839849aa579fe096 (patch) | |
tree | 7498d7d5096a61042d9f72444001f8b31e765b25 /drivers/edac | |
parent | a97fa68ec403e2761a37b28651de8fd9da8c5e1f (diff) |
amd64_edac: Cleanup NBSH cruft
Remove reporting of errors with UC bit set - this is done by the MCE
decoding code anyway and this driver deals with DRAM ECC errors only. UC
(NB uncorrectable error) doesn't necessarily mean it is a DRAM error.
Remove unused macros while at it.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/amd64_edac.c | 15 | ||||
-rw-r--r-- | drivers/edac/mce_amd.c | 2 | ||||
-rw-r--r-- | drivers/edac/mce_amd.h | 18 |
3 files changed, 8 insertions, 27 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index dfa7ac7a4837..04d481b578e4 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c | |||
@@ -1748,7 +1748,7 @@ static void amd64_handle_ce(struct mem_ctl_info *mci, | |||
1748 | u64 sys_addr; | 1748 | u64 sys_addr; |
1749 | 1749 | ||
1750 | /* Ensure that the Error Address is VALID */ | 1750 | /* Ensure that the Error Address is VALID */ |
1751 | if (!(info->nbsh & K8_NBSH_VALID_ERROR_ADDR)) { | 1751 | if (!(info->nbsh & NBSH_VALID_ERROR_ADDR)) { |
1752 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); | 1752 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); |
1753 | edac_mc_handle_ce_no_info(mci, EDAC_MOD_STR); | 1753 | edac_mc_handle_ce_no_info(mci, EDAC_MOD_STR); |
1754 | return; | 1754 | return; |
@@ -1773,7 +1773,7 @@ static void amd64_handle_ue(struct mem_ctl_info *mci, | |||
1773 | 1773 | ||
1774 | log_mci = mci; | 1774 | log_mci = mci; |
1775 | 1775 | ||
1776 | if (!(info->nbsh & K8_NBSH_VALID_ERROR_ADDR)) { | 1776 | if (!(info->nbsh & NBSH_VALID_ERROR_ADDR)) { |
1777 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); | 1777 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); |
1778 | edac_mc_handle_ue_no_info(log_mci, EDAC_MOD_STR); | 1778 | edac_mc_handle_ue_no_info(log_mci, EDAC_MOD_STR); |
1779 | return; | 1779 | return; |
@@ -1839,17 +1839,6 @@ void amd64_decode_bus_error(int node_id, struct mce *m, u32 nbcfg) | |||
1839 | regs.nbcfg = nbcfg; | 1839 | regs.nbcfg = nbcfg; |
1840 | 1840 | ||
1841 | __amd64_decode_bus_error(mci, ®s); | 1841 | __amd64_decode_bus_error(mci, ®s); |
1842 | |||
1843 | /* | ||
1844 | * Check the UE bit of the NB status high register, if set generate some | ||
1845 | * logs. If NOT a GART error, then process the event as a NO-INFO event. | ||
1846 | * If it was a GART error, skip that process. | ||
1847 | * | ||
1848 | * FIXME: this should go somewhere else, if at all. | ||
1849 | */ | ||
1850 | if (regs.nbsh & K8_NBSH_UC_ERR && !report_gart_errors) | ||
1851 | edac_mc_handle_ue_no_info(mci, "UE bit is set"); | ||
1852 | |||
1853 | } | 1842 | } |
1854 | 1843 | ||
1855 | /* | 1844 | /* |
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index f6cf73d93359..1afca60345d7 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c | |||
@@ -604,7 +604,7 @@ void amd_decode_nb_mce(int node_id, struct mce *m, u32 nbcfg) | |||
604 | /* F10h, revD can disable ErrCpu[3:0] through ErrCpuVal */ | 604 | /* F10h, revD can disable ErrCpu[3:0] through ErrCpuVal */ |
605 | if ((boot_cpu_data.x86 == 0x10) && | 605 | if ((boot_cpu_data.x86 == 0x10) && |
606 | (boot_cpu_data.x86_model > 7)) { | 606 | (boot_cpu_data.x86_model > 7)) { |
607 | if (nbsh & K8_NBSH_ERR_CPU_VAL) | 607 | if (nbsh & NBSH_ERR_CPU_VAL) |
608 | core = nbsh & nb_err_cpumask; | 608 | core = nbsh & nb_err_cpumask; |
609 | } else { | 609 | } else { |
610 | u8 assoc_cpus = nbsh & nb_err_cpumask; | 610 | u8 assoc_cpus = nbsh & nb_err_cpumask; |
diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h index 45dda47173f2..70a0bb2c13c5 100644 --- a/drivers/edac/mce_amd.h +++ b/drivers/edac/mce_amd.h | |||
@@ -31,19 +31,11 @@ | |||
31 | #define R4(x) (((x) >> 4) & 0xf) | 31 | #define R4(x) (((x) >> 4) & 0xf) |
32 | #define R4_MSG(x) ((R4(x) < 9) ? rrrr_msgs[R4(x)] : "Wrong R4!") | 32 | #define R4_MSG(x) ((R4(x) < 9) ? rrrr_msgs[R4(x)] : "Wrong R4!") |
33 | 33 | ||
34 | #define K8_NBSH 0x4C | 34 | /* |
35 | 35 | * F3x4C bits (MCi_STATUS' high half) | |
36 | #define K8_NBSH_VALID_BIT BIT(31) | 36 | */ |
37 | #define K8_NBSH_OVERFLOW BIT(30) | 37 | #define NBSH_VALID_ERROR_ADDR BIT(26) |
38 | #define K8_NBSH_UC_ERR BIT(29) | 38 | #define NBSH_ERR_CPU_VAL BIT(24) |
39 | #define K8_NBSH_ERR_EN BIT(28) | ||
40 | #define K8_NBSH_MISCV BIT(27) | ||
41 | #define K8_NBSH_VALID_ERROR_ADDR BIT(26) | ||
42 | #define K8_NBSH_PCC BIT(25) | ||
43 | #define K8_NBSH_ERR_CPU_VAL BIT(24) | ||
44 | #define K8_NBSH_CECC BIT(14) | ||
45 | #define K8_NBSH_UECC BIT(13) | ||
46 | #define K8_NBSH_ERR_SCRUBER BIT(8) | ||
47 | 39 | ||
48 | enum tt_ids { | 40 | enum tt_ids { |
49 | TT_INSTR = 0, | 41 | TT_INSTR = 0, |