diff options
| -rw-r--r-- | drivers/edac/mce_amd.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index afda6de5d7e3..c14abe3e4074 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c | |||
| @@ -692,6 +692,46 @@ wrong_fr_mce: | |||
| 692 | pr_emerg(HW_ERR "Corrupted FR MCE info?\n"); | 692 | pr_emerg(HW_ERR "Corrupted FR MCE info?\n"); |
| 693 | } | 693 | } |
| 694 | 694 | ||
| 695 | static void amd_decode_fp_mce(struct mce *m) | ||
| 696 | { | ||
| 697 | u8 xec = (m->status >> 16) & xec_mask; | ||
| 698 | |||
| 699 | pr_emerg(HW_ERR "Floating Point Unit Error: "); | ||
| 700 | |||
| 701 | switch (xec) { | ||
| 702 | case 0x1: | ||
| 703 | pr_cont("Free List"); | ||
| 704 | break; | ||
| 705 | |||
| 706 | case 0x2: | ||
| 707 | pr_cont("Physical Register File"); | ||
| 708 | break; | ||
| 709 | |||
| 710 | case 0x3: | ||
| 711 | pr_cont("Retire Queue"); | ||
| 712 | break; | ||
| 713 | |||
| 714 | case 0x4: | ||
| 715 | pr_cont("Scheduler table"); | ||
| 716 | break; | ||
| 717 | |||
| 718 | case 0x5: | ||
| 719 | pr_cont("Status Register File"); | ||
| 720 | break; | ||
| 721 | |||
| 722 | default: | ||
| 723 | goto wrong_fp_mce; | ||
| 724 | break; | ||
| 725 | } | ||
| 726 | |||
| 727 | pr_cont(" parity error.\n"); | ||
| 728 | |||
| 729 | return; | ||
| 730 | |||
| 731 | wrong_fp_mce: | ||
| 732 | pr_emerg(HW_ERR "Corrupted FP MCE info?\n"); | ||
| 733 | } | ||
| 734 | |||
| 695 | static inline void amd_decode_err_code(u16 ec) | 735 | static inline void amd_decode_err_code(u16 ec) |
| 696 | { | 736 | { |
| 697 | if (TLB_ERROR(ec)) { | 737 | if (TLB_ERROR(ec)) { |
| @@ -777,6 +817,10 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data) | |||
| 777 | amd_decode_fr_mce(m); | 817 | amd_decode_fr_mce(m); |
| 778 | break; | 818 | break; |
| 779 | 819 | ||
| 820 | case 6: | ||
| 821 | amd_decode_fp_mce(m); | ||
| 822 | break; | ||
| 823 | |||
| 780 | default: | 824 | default: |
| 781 | break; | 825 | break; |
| 782 | } | 826 | } |
