diff options
| author | Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com> | 2014-11-04 12:41:08 -0500 |
|---|---|---|
| committer | Borislav Petkov <bp@suse.de> | 2014-11-04 12:49:20 -0500 |
| commit | bc4febe93c2fd7d0e74dad773bad2ed0237780ee (patch) | |
| tree | 5b61bff16d580d78944eb22970206ea0fa429619 /drivers | |
| parent | a597d2a5d9820dbbadd70583170c48c7290427df (diff) | |
EDAC, MCE, AMD: Add decoding table for MC6 xec
Extended error code meanings are tabulated for other banks. Extend that
tradition for MC6 too.
Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Link: http://lkml.kernel.org/r/1415122868-10969-1-git-send-email-aravind.gopalakrishnan@amd.com
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/edac/mce_amd.c | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index f78c1c54dbd5..5d4efae864e4 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c | |||
| @@ -138,6 +138,15 @@ static const char * const mc5_mce_desc[] = { | |||
| 138 | "Retire status queue" | 138 | "Retire status queue" |
| 139 | }; | 139 | }; |
| 140 | 140 | ||
| 141 | static const char * const mc6_mce_desc[] = { | ||
| 142 | "Hardware Assertion", | ||
| 143 | "Free List", | ||
| 144 | "Physical Register File", | ||
| 145 | "Retire Queue", | ||
| 146 | "Scheduler table", | ||
| 147 | "Status Register File", | ||
| 148 | }; | ||
| 149 | |||
| 141 | static bool f12h_mc0_mce(u16 ec, u8 xec) | 150 | static bool f12h_mc0_mce(u16 ec, u8 xec) |
| 142 | { | 151 | { |
| 143 | bool ret = false; | 152 | bool ret = false; |
| @@ -672,38 +681,10 @@ static void decode_mc6_mce(struct mce *m) | |||
| 672 | 681 | ||
| 673 | pr_emerg(HW_ERR "MC6 Error: "); | 682 | pr_emerg(HW_ERR "MC6 Error: "); |
| 674 | 683 | ||
| 675 | switch (xec) { | 684 | if (xec > 0x5) |
| 676 | case 0x0: | ||
| 677 | pr_cont("Hardware Assertion"); | ||
| 678 | break; | ||
| 679 | |||
| 680 | case 0x1: | ||
| 681 | pr_cont("Free List"); | ||
| 682 | break; | ||
| 683 | |||
| 684 | case 0x2: | ||
| 685 | pr_cont("Physical Register File"); | ||
| 686 | break; | ||
| 687 | |||
| 688 | case 0x3: | ||
| 689 | pr_cont("Retire Queue"); | ||
| 690 | break; | ||
| 691 | |||
| 692 | case 0x4: | ||
| 693 | pr_cont("Scheduler table"); | ||
| 694 | break; | ||
| 695 | |||
| 696 | case 0x5: | ||
| 697 | pr_cont("Status Register File"); | ||
| 698 | break; | ||
| 699 | |||
| 700 | default: | ||
| 701 | goto wrong_mc6_mce; | 685 | goto wrong_mc6_mce; |
| 702 | break; | ||
| 703 | } | ||
| 704 | |||
| 705 | pr_cont(" parity error.\n"); | ||
| 706 | 686 | ||
| 687 | pr_cont("%s parity error.\n", mc6_mce_desc[xec]); | ||
| 707 | return; | 688 | return; |
| 708 | 689 | ||
| 709 | wrong_mc6_mce: | 690 | wrong_mc6_mce: |
