mce.h (d6e8a150850601277039a548ffcdddd1bfe3e365) mce.h (cda6618d060b5e8afc93e691d4bcd987f3dd4393)
1/*
2 * Machine check exception header file.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *

--- 17 unchanged lines hidden (view full) ---

26
27enum MCE_Version {
28 MCE_V1 = 1,
29};
30
31enum MCE_Severity {
32 MCE_SEV_NO_ERROR = 0,
33 MCE_SEV_WARNING = 1,
1/*
2 * Machine check exception header file.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *

--- 17 unchanged lines hidden (view full) ---

26
27enum MCE_Version {
28 MCE_V1 = 1,
29};
30
31enum MCE_Severity {
32 MCE_SEV_NO_ERROR = 0,
33 MCE_SEV_WARNING = 1,
34 MCE_SEV_ERROR_SYNC = 2,
34 MCE_SEV_SEVERE = 2,
35 MCE_SEV_FATAL = 3,
36};
37
38enum MCE_Disposition {
39 MCE_DISPOSITION_RECOVERED = 0,
40 MCE_DISPOSITION_NOT_RECOVERED = 1,
41};
42

--- 62 unchanged lines hidden (view full) ---

105 MCE_LINK_ERROR_IFETCH_TIMEOUT = 1,
106 MCE_LINK_ERROR_PAGE_TABLE_WALK_IFETCH_TIMEOUT = 2,
107 MCE_LINK_ERROR_LOAD_TIMEOUT = 3,
108 MCE_LINK_ERROR_STORE_TIMEOUT = 4,
109 MCE_LINK_ERROR_PAGE_TABLE_WALK_LOAD_STORE_TIMEOUT = 5,
110};
111
112struct machine_check_event {
35 MCE_SEV_FATAL = 3,
36};
37
38enum MCE_Disposition {
39 MCE_DISPOSITION_RECOVERED = 0,
40 MCE_DISPOSITION_NOT_RECOVERED = 1,
41};
42

--- 62 unchanged lines hidden (view full) ---

105 MCE_LINK_ERROR_IFETCH_TIMEOUT = 1,
106 MCE_LINK_ERROR_PAGE_TABLE_WALK_IFETCH_TIMEOUT = 2,
107 MCE_LINK_ERROR_LOAD_TIMEOUT = 3,
108 MCE_LINK_ERROR_STORE_TIMEOUT = 4,
109 MCE_LINK_ERROR_PAGE_TABLE_WALK_LOAD_STORE_TIMEOUT = 5,
110};
111
112struct machine_check_event {
113 enum MCE_Version version:8; /* 0x00 */
114 uint8_t in_use; /* 0x01 */
115 enum MCE_Severity severity:8; /* 0x02 */
116 enum MCE_Initiator initiator:8; /* 0x03 */
117 enum MCE_ErrorType error_type:8; /* 0x04 */
118 enum MCE_Disposition disposition:8; /* 0x05 */
119 uint16_t cpu; /* 0x06 */
120 uint64_t gpr3; /* 0x08 */
121 uint64_t srr0; /* 0x10 */
122 uint64_t srr1; /* 0x18 */
123 union { /* 0x20 */
113 enum MCE_Version version:8;
114 u8 in_use;
115 enum MCE_Severity severity:8;
116 enum MCE_Initiator initiator:8;
117 enum MCE_ErrorType error_type:8;
118 enum MCE_Disposition disposition:8;
119 bool sync_error;
120 u16 cpu;
121 u64 gpr3;
122 u64 srr0;
123 u64 srr1;
124 union {
124 struct {
125 enum MCE_UeErrorType ue_error_type:8;
125 struct {
126 enum MCE_UeErrorType ue_error_type:8;
126 uint8_t effective_address_provided;
127 uint8_t physical_address_provided;
128 uint8_t reserved_1[5];
129 uint64_t effective_address;
130 uint64_t physical_address;
131 uint8_t reserved_2[8];
127 u8 effective_address_provided;
128 u8 physical_address_provided;
129 u8 reserved_1[5];
130 u64 effective_address;
131 u64 physical_address;
132 u8 reserved_2[8];
132 } ue_error;
133
134 struct {
135 enum MCE_SlbErrorType slb_error_type:8;
133 } ue_error;
134
135 struct {
136 enum MCE_SlbErrorType slb_error_type:8;
136 uint8_t effective_address_provided;
137 uint8_t reserved_1[6];
138 uint64_t effective_address;
139 uint8_t reserved_2[16];
137 u8 effective_address_provided;
138 u8 reserved_1[6];
139 u64 effective_address;
140 u8 reserved_2[16];
140 } slb_error;
141
142 struct {
143 enum MCE_EratErrorType erat_error_type:8;
141 } slb_error;
142
143 struct {
144 enum MCE_EratErrorType erat_error_type:8;
144 uint8_t effective_address_provided;
145 uint8_t reserved_1[6];
146 uint64_t effective_address;
147 uint8_t reserved_2[16];
145 u8 effective_address_provided;
146 u8 reserved_1[6];
147 u64 effective_address;
148 u8 reserved_2[16];
148 } erat_error;
149
150 struct {
151 enum MCE_TlbErrorType tlb_error_type:8;
149 } erat_error;
150
151 struct {
152 enum MCE_TlbErrorType tlb_error_type:8;
152 uint8_t effective_address_provided;
153 uint8_t reserved_1[6];
154 uint64_t effective_address;
155 uint8_t reserved_2[16];
153 u8 effective_address_provided;
154 u8 reserved_1[6];
155 u64 effective_address;
156 u8 reserved_2[16];
156 } tlb_error;
157
158 struct {
159 enum MCE_UserErrorType user_error_type:8;
157 } tlb_error;
158
159 struct {
160 enum MCE_UserErrorType user_error_type:8;
160 uint8_t effective_address_provided;
161 uint8_t reserved_1[6];
162 uint64_t effective_address;
163 uint8_t reserved_2[16];
161 u8 effective_address_provided;
162 u8 reserved_1[6];
163 u64 effective_address;
164 u8 reserved_2[16];
164 } user_error;
165
166 struct {
167 enum MCE_RaErrorType ra_error_type:8;
165 } user_error;
166
167 struct {
168 enum MCE_RaErrorType ra_error_type:8;
168 uint8_t effective_address_provided;
169 uint8_t reserved_1[6];
170 uint64_t effective_address;
171 uint8_t reserved_2[16];
169 u8 effective_address_provided;
170 u8 reserved_1[6];
171 u64 effective_address;
172 u8 reserved_2[16];
172 } ra_error;
173
174 struct {
175 enum MCE_LinkErrorType link_error_type:8;
173 } ra_error;
174
175 struct {
176 enum MCE_LinkErrorType link_error_type:8;
176 uint8_t effective_address_provided;
177 uint8_t reserved_1[6];
178 uint64_t effective_address;
179 uint8_t reserved_2[16];
177 u8 effective_address_provided;
178 u8 reserved_1[6];
179 u64 effective_address;
180 u8 reserved_2[16];
180 } link_error;
181 } u;
182};
183
184struct mce_error_info {
185 enum MCE_ErrorType error_type:8;
186 union {
187 enum MCE_UeErrorType ue_error_type:8;
188 enum MCE_SlbErrorType slb_error_type:8;
189 enum MCE_EratErrorType erat_error_type:8;
190 enum MCE_TlbErrorType tlb_error_type:8;
191 enum MCE_UserErrorType user_error_type:8;
192 enum MCE_RaErrorType ra_error_type:8;
193 enum MCE_LinkErrorType link_error_type:8;
194 } u;
195 enum MCE_Severity severity:8;
196 enum MCE_Initiator initiator:8;
181 } link_error;
182 } u;
183};
184
185struct mce_error_info {
186 enum MCE_ErrorType error_type:8;
187 union {
188 enum MCE_UeErrorType ue_error_type:8;
189 enum MCE_SlbErrorType slb_error_type:8;
190 enum MCE_EratErrorType erat_error_type:8;
191 enum MCE_TlbErrorType tlb_error_type:8;
192 enum MCE_UserErrorType user_error_type:8;
193 enum MCE_RaErrorType ra_error_type:8;
194 enum MCE_LinkErrorType link_error_type:8;
195 } u;
196 enum MCE_Severity severity:8;
197 enum MCE_Initiator initiator:8;
198 bool sync_error;
197};
198
199#define MAX_MC_EVT 100
200
201/* Release flags for get_mce_event() */
202#define MCE_EVENT_RELEASE true
203#define MCE_EVENT_DONTRELEASE false
204

--- 13 unchanged lines hidden ---
199};
200
201#define MAX_MC_EVT 100
202
203/* Release flags for get_mce_event() */
204#define MCE_EVENT_RELEASE true
205#define MCE_EVENT_DONTRELEASE false
206

--- 13 unchanged lines hidden ---