diff options
| author | Borislav Petkov <borislav.petkov@amd.com> | 2009-07-28 08:20:46 -0400 |
|---|---|---|
| committer | Borislav Petkov <borislav.petkov@amd.com> | 2009-09-14 13:01:37 -0400 |
| commit | 53bd5fedca7d0c28b35b02cab5f4e27bf8d7fabe (patch) | |
| tree | 10798765e935f772afe8b75494fb75bd9e46e82a | |
| parent | f9350efd6f37ef60d2334739edb76ef1f8ee0183 (diff) | |
EDAC, AMD: decode FR MCEs
See Fam10h BKDG (31116, rev. 3.28), Table 101.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
| -rw-r--r-- | drivers/edac/edac_mce_amd.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/edac/edac_mce_amd.c b/drivers/edac/edac_mce_amd.c index 228482855362..c8ca7136dacc 100644 --- a/drivers/edac/edac_mce_amd.c +++ b/drivers/edac/edac_mce_amd.c | |||
| @@ -321,6 +321,15 @@ void amd_decode_nb_mce(int node_id, struct err_regs *regs, int handle_errors) | |||
| 321 | } | 321 | } |
| 322 | EXPORT_SYMBOL_GPL(amd_decode_nb_mce); | 322 | EXPORT_SYMBOL_GPL(amd_decode_nb_mce); |
| 323 | 323 | ||
| 324 | static void amd_decode_fr_mce(u64 mc5_status) | ||
| 325 | { | ||
| 326 | /* we have only one error signature so match all fields at once. */ | ||
| 327 | if ((mc5_status & 0xffff) == 0x0f0f) | ||
| 328 | pr_emerg(" FR Error: CPU Watchdog timer expire.\n"); | ||
| 329 | else | ||
| 330 | pr_warning("Corrupted FR MCE info?\n"); | ||
| 331 | } | ||
| 332 | |||
| 324 | static inline void amd_decode_err_code(unsigned int ec) | 333 | static inline void amd_decode_err_code(unsigned int ec) |
| 325 | { | 334 | { |
| 326 | if (TLB_ERROR(ec)) { | 335 | if (TLB_ERROR(ec)) { |
| @@ -401,6 +410,10 @@ void decode_mce(struct mce *m) | |||
| 401 | amd_decode_nb_mce(node, ®s, 1); | 410 | amd_decode_nb_mce(node, ®s, 1); |
| 402 | break; | 411 | break; |
| 403 | 412 | ||
| 413 | case 5: | ||
| 414 | amd_decode_fr_mce(m->status); | ||
| 415 | break; | ||
| 416 | |||
| 404 | default: | 417 | default: |
| 405 | break; | 418 | break; |
| 406 | } | 419 | } |
