Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

EDAC, MCE: Add F15h FP MCE decoder

Add decoder for FP MCEs.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>

+44
+44
drivers/edac/mce_amd.c
··· 692 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 735 static inline void amd_decode_err_code(u16 ec) 696 736 { 697 737 if (TLB_ERROR(ec)) { ··· 815 775 816 776 case 5: 817 777 amd_decode_fr_mce(m); 778 + break; 779 + 780 + case 6: 781 + amd_decode_fp_mce(m); 818 782 break; 819 783 820 784 default: