diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-16 13:09:43 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-16 13:09:43 -0500 |
| commit | 661e338f728d101b4839b6b157d44cfcb80e3c5e (patch) | |
| tree | 5d40053d81777116b7617712b64860eac5642b0e /drivers | |
| parent | 6a5df38f5f07981dda5457ec6c05efe1c4200d84 (diff) | |
| parent | 256f7276af20c88b492353710d5d6640b09c3d63 (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
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/edac/edac_mce_amd.c | 24 |
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) | |||
| 333 | static inline void amd_decode_err_code(unsigned int ec) | 338 | static 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)) { |
