diff options
author | Tony Luck <tony.luck@intel.com> | 2012-01-03 14:48:04 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2012-01-03 15:07:07 -0500 |
commit | 5f7b88d51e89771f64c15903b96b5933dd0bc6d8 (patch) | |
tree | b6ee73357d24d1ea194babf152878f8a7f609c8f /arch/x86/kernel | |
parent | a8c321fbf9aeced45519248e5901af8cbc240510 (diff) |
x86/mce: Recognise machine check bank signature for data path error
Action required data path signature is defined in table 15-19 of SDM:
+-----------------------------------------------------------------------------+
| SRAR Error | Valid | OVER | UC | EN | MISCV | ADDRV | PCC | S | AR | MCACOD |
| Data Load | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0x134 |
+-----------------------------------------------------------------------------+
Recognise this, and pass MCE_AR_SEVERITY code back to do_machine_check() if
we have the action handler configured (CONFIG_MEMORY_FAILURE=y)
Acked-by: Borislav Petkov <bp@amd64.org>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce-severity.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c index 7395d5f4272d..f6c92f99efa0 100644 --- a/arch/x86/kernel/cpu/mcheck/mce-severity.c +++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c | |||
@@ -54,6 +54,7 @@ static struct severity { | |||
54 | #define MASK(x, y) .mask = x, .result = y | 54 | #define MASK(x, y) .mask = x, .result = y |
55 | #define MCI_UC_S (MCI_STATUS_UC|MCI_STATUS_S) | 55 | #define MCI_UC_S (MCI_STATUS_UC|MCI_STATUS_S) |
56 | #define MCI_UC_SAR (MCI_STATUS_UC|MCI_STATUS_S|MCI_STATUS_AR) | 56 | #define MCI_UC_SAR (MCI_STATUS_UC|MCI_STATUS_S|MCI_STATUS_AR) |
57 | #define MCI_ADDR (MCI_STATUS_ADDRV|MCI_STATUS_MISCV) | ||
57 | #define MCACOD 0xffff | 58 | #define MCACOD 0xffff |
58 | 59 | ||
59 | MCESEV( | 60 | MCESEV( |
@@ -102,11 +103,24 @@ static struct severity { | |||
102 | SER, BITCLR(MCI_STATUS_S) | 103 | SER, BITCLR(MCI_STATUS_S) |
103 | ), | 104 | ), |
104 | 105 | ||
105 | /* AR add known MCACODs here */ | ||
106 | MCESEV( | 106 | MCESEV( |
107 | PANIC, "Action required with lost events", | 107 | PANIC, "Action required with lost events", |
108 | SER, BITSET(MCI_STATUS_OVER|MCI_UC_SAR) | 108 | SER, BITSET(MCI_STATUS_OVER|MCI_UC_SAR) |
109 | ), | 109 | ), |
110 | |||
111 | /* known AR MCACODs: */ | ||
112 | #ifdef CONFIG_MEMORY_FAILURE | ||
113 | MCESEV( | ||
114 | KEEP, "HT thread notices Action required: data load error", | ||
115 | SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR|MCI_ADDR|MCACOD, MCI_UC_SAR|MCI_ADDR|0x0134), | ||
116 | MCGMASK(MCG_STATUS_EIPV, 0) | ||
117 | ), | ||
118 | MCESEV( | ||
119 | AR, "Action required: data load error", | ||
120 | SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR|MCI_ADDR|MCACOD, MCI_UC_SAR|MCI_ADDR|0x0134), | ||
121 | USER | ||
122 | ), | ||
123 | #endif | ||
110 | MCESEV( | 124 | MCESEV( |
111 | PANIC, "Action required: unknown MCACOD", | 125 | PANIC, "Action required: unknown MCACOD", |
112 | SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_SAR) | 126 | SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_SAR) |