aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 13:09:43 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 13:09:43 -0500
commit661e338f728d101b4839b6b157d44cfcb80e3c5e (patch)
tree5d40053d81777116b7617712b64860eac5642b0e
parent6a5df38f5f07981dda5457ec6c05efe1c4200d84 (diff)
parent256f7276af20c88b492353710d5d6640b09c3d63 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp: edac, mce, amd: silence GART TLB errors edac, mce: correct corenum reporting
-rw-r--r--drivers/edac/edac_mce_amd.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/drivers/edac/edac_mce_amd.c b/drivers/edac/edac_mce_amd.c
index c693fcc2213c..8fc91a019620 100644
--- a/drivers/edac/edac_mce_amd.c
+++ b/drivers/edac/edac_mce_amd.c
@@ -299,6 +299,12 @@ void amd_decode_nb_mce(int node_id, struct err_regs *regs, int handle_errors)
299 if (!handle_errors) 299 if (!handle_errors)
300 return; 300 return;
301 301
302 /*
303 * GART TLB error reporting is disabled by default. Bail out early.
304 */
305 if (TLB_ERROR(ec) && !report_gart_errors)
306 return;
307
302 pr_emerg(" Northbridge Error, node %d", node_id); 308 pr_emerg(" Northbridge Error, node %d", node_id);
303 309
304 /* 310 /*
@@ -310,10 +316,9 @@ void amd_decode_nb_mce(int node_id, struct err_regs *regs, int handle_errors)
310 if (regs->nbsh & K8_NBSH_ERR_CPU_VAL) 316 if (regs->nbsh & K8_NBSH_ERR_CPU_VAL)
311 pr_cont(", core: %u\n", (u8)(regs->nbsh & 0xf)); 317 pr_cont(", core: %u\n", (u8)(regs->nbsh & 0xf));
312 } else { 318 } else {
313 pr_cont(", core: %d\n", ilog2((regs->nbsh & 0xf))); 319 pr_cont(", core: %d\n", fls((regs->nbsh & 0xf) - 1));
314 } 320 }
315 321
316
317 pr_emerg("%s.\n", EXT_ERR_MSG(xec)); 322 pr_emerg("%s.\n", EXT_ERR_MSG(xec));
318 323
319 if (BUS_ERROR(ec) && nb_bus_decoder) 324 if (BUS_ERROR(ec) && nb_bus_decoder)
@@ -333,21 +338,6 @@ static void amd_decode_fr_mce(u64 mc5_status)
333static inline void amd_decode_err_code(unsigned int ec) 338static inline void amd_decode_err_code(unsigned int ec)
334{ 339{
335 if (TLB_ERROR(ec)) { 340 if (TLB_ERROR(ec)) {
336 /*
337 * GART errors are intended to help graphics driver developers
338 * to detect bad GART PTEs. It is recommended by AMD to disable
339 * GART table walk error reporting by default[1] (currently
340 * being disabled in mce_cpu_quirks()) and according to the
341 * comment in mce_cpu_quirks(), such GART errors can be
342 * incorrectly triggered. We may see these errors anyway and
343 * unless requested by the user, they won't be reported.
344 *
345 * [1] section 13.10.1 on BIOS and Kernel Developers Guide for
346 * AMD NPT family 0Fh processors
347 */
348 if (!report_gart_errors)
349 return;
350
351 pr_emerg(" Transaction: %s, Cache Level %s\n", 341 pr_emerg(" Transaction: %s, Cache Level %s\n",
352 TT_MSG(ec), LL_MSG(ec)); 342 TT_MSG(ec), LL_MSG(ec));
353 } else if (MEM_ERROR(ec)) { 343 } else if (MEM_ERROR(ec)) {