diff options
author | Bob Moore <robert.moore@intel.com> | 2009-07-26 22:53:00 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-08-28 19:40:38 -0400 |
commit | 6e2d5ebd0d36199920676fdceaff4f4bfe66297b (patch) | |
tree | 334c129986a3ae126378a001d871d3e4267db6ea /include/acpi/actbl1.h | |
parent | b24aad44438d5bc21cbbfb94a99d9bf710d8295b (diff) |
ACPICA: ACPI 4: Update headers for new and changed ACPI tables.
Add IVRS,MSCT,UEFI,WAET,WDAT.
Updated several existing tables for ACPI 4.0-related changes.
Added document references for all tables not defined in ACPI spec.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi/actbl1.h')
-rw-r--r-- | include/acpi/actbl1.h | 339 |
1 files changed, 228 insertions, 111 deletions
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index 582af1fcb8f5..0417f2abc44b 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h | |||
@@ -56,8 +56,9 @@ | |||
56 | ******************************************************************************/ | 56 | ******************************************************************************/ |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * Values for description table header signatures. Useful because they make | 59 | * Values for description table header signatures for tables defined in this |
60 | * it more difficult to inadvertently type in the wrong signature. | 60 | * file. Useful because they make it more difficult to inadvertently type in |
61 | * the wrong signature. | ||
61 | */ | 62 | */ |
62 | #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ | 63 | #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ |
63 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ | 64 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ |
@@ -66,6 +67,7 @@ | |||
66 | #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ | 67 | #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ |
67 | #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ | 68 | #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ |
68 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ | 69 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ |
70 | #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ | ||
69 | #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ | 71 | #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ |
70 | #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ | 72 | #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ |
71 | #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ | 73 | #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ |
@@ -82,14 +84,20 @@ | |||
82 | * portable, so do not use any other bitfield types. | 84 | * portable, so do not use any other bitfield types. |
83 | */ | 85 | */ |
84 | 86 | ||
85 | /* Common Subtable header (used in MADT, SRAT, etc.) */ | 87 | /******************************************************************************* |
88 | * | ||
89 | * Common subtable headers | ||
90 | * | ||
91 | ******************************************************************************/ | ||
92 | |||
93 | /* Generic subtable header (used in MADT, SRAT, etc.) */ | ||
86 | 94 | ||
87 | struct acpi_subtable_header { | 95 | struct acpi_subtable_header { |
88 | u8 type; | 96 | u8 type; |
89 | u8 length; | 97 | u8 length; |
90 | }; | 98 | }; |
91 | 99 | ||
92 | /* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ | 100 | /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ |
93 | 101 | ||
94 | struct acpi_whea_header { | 102 | struct acpi_whea_header { |
95 | u8 action; | 103 | u8 action; |
@@ -103,7 +111,8 @@ struct acpi_whea_header { | |||
103 | 111 | ||
104 | /******************************************************************************* | 112 | /******************************************************************************* |
105 | * | 113 | * |
106 | * BERT - Boot Error Record Table | 114 | * BERT - Boot Error Record Table (ACPI 4.0) |
115 | * Version 1 | ||
107 | * | 116 | * |
108 | ******************************************************************************/ | 117 | ******************************************************************************/ |
109 | 118 | ||
@@ -113,26 +122,43 @@ struct acpi_table_bert { | |||
113 | u64 address; /* Physical addresss of the error region */ | 122 | u64 address; /* Physical addresss of the error region */ |
114 | }; | 123 | }; |
115 | 124 | ||
116 | /* Boot Error Region */ | 125 | /* Boot Error Region (not a subtable, pointed to by Address field above) */ |
117 | 126 | ||
118 | struct acpi_bert_region { | 127 | struct acpi_bert_region { |
119 | u32 block_status; | 128 | u32 block_status; /* Type of error information */ |
120 | u32 raw_data_offset; | 129 | u32 raw_data_offset; /* Offset to raw error data */ |
121 | u32 raw_data_length; | 130 | u32 raw_data_length; /* Length of raw error data */ |
122 | u32 data_length; | 131 | u32 data_length; /* Length of generic error data */ |
123 | u32 error_severity; | 132 | u32 error_severity; /* Severity code */ |
124 | }; | 133 | }; |
125 | 134 | ||
126 | /* block_status Flags */ | 135 | /* Values for block_status flags above */ |
127 | 136 | ||
128 | #define ACPI_BERT_UNCORRECTABLE (1) | 137 | #define ACPI_BERT_UNCORRECTABLE (1) |
129 | #define ACPI_BERT_CORRECTABLE (2) | 138 | #define ACPI_BERT_CORRECTABLE (1<<1) |
130 | #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) | 139 | #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) |
131 | #define ACPI_BERT_MULTIPLE_CORRECTABLE (8) | 140 | #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) |
141 | #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ | ||
142 | |||
143 | /* Values for error_severity above */ | ||
144 | |||
145 | enum acpi_bert_error_severity { | ||
146 | ACPI_BERT_ERROR_CORRECTABLE = 0, | ||
147 | ACPI_BERT_ERROR_FATAL = 1, | ||
148 | ACPI_BERT_ERROR_CORRECTED = 2, | ||
149 | ACPI_BERT_ERROR_NONE = 3, | ||
150 | ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ | ||
151 | }; | ||
152 | |||
153 | /* | ||
154 | * Note: The generic error data that follows the error_severity field above | ||
155 | * uses the struct acpi_hest_generic_data defined under the HEST table below | ||
156 | */ | ||
132 | 157 | ||
133 | /******************************************************************************* | 158 | /******************************************************************************* |
134 | * | 159 | * |
135 | * CPEP - Corrected Platform Error Polling table | 160 | * CPEP - Corrected Platform Error Polling table (ACPI 4.0) |
161 | * Version 1 | ||
136 | * | 162 | * |
137 | ******************************************************************************/ | 163 | ******************************************************************************/ |
138 | 164 | ||
@@ -144,8 +170,7 @@ struct acpi_table_cpep { | |||
144 | /* Subtable */ | 170 | /* Subtable */ |
145 | 171 | ||
146 | struct acpi_cpep_polling { | 172 | struct acpi_cpep_polling { |
147 | u8 type; | 173 | struct acpi_subtable_header header; |
148 | u8 length; | ||
149 | u8 id; /* Processor ID */ | 174 | u8 id; /* Processor ID */ |
150 | u8 eid; /* Processor EID */ | 175 | u8 eid; /* Processor EID */ |
151 | u32 interval; /* Polling interval (msec) */ | 176 | u32 interval; /* Polling interval (msec) */ |
@@ -154,6 +179,7 @@ struct acpi_cpep_polling { | |||
154 | /******************************************************************************* | 179 | /******************************************************************************* |
155 | * | 180 | * |
156 | * ECDT - Embedded Controller Boot Resources Table | 181 | * ECDT - Embedded Controller Boot Resources Table |
182 | * Version 1 | ||
157 | * | 183 | * |
158 | ******************************************************************************/ | 184 | ******************************************************************************/ |
159 | 185 | ||
@@ -168,14 +194,16 @@ struct acpi_table_ecdt { | |||
168 | 194 | ||
169 | /******************************************************************************* | 195 | /******************************************************************************* |
170 | * | 196 | * |
171 | * EINJ - Error Injection Table | 197 | * EINJ - Error Injection Table (ACPI 4.0) |
198 | * Version 1 | ||
172 | * | 199 | * |
173 | ******************************************************************************/ | 200 | ******************************************************************************/ |
174 | 201 | ||
175 | struct acpi_table_einj { | 202 | struct acpi_table_einj { |
176 | struct acpi_table_header header; /* Common ACPI table header */ | 203 | struct acpi_table_header header; /* Common ACPI table header */ |
177 | u32 header_length; | 204 | u32 header_length; |
178 | u32 reserved; | 205 | u8 flags; |
206 | u8 reserved[3]; | ||
179 | u32 entries; | 207 | u32 entries; |
180 | }; | 208 | }; |
181 | 209 | ||
@@ -185,6 +213,10 @@ struct acpi_einj_entry { | |||
185 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | 213 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ |
186 | }; | 214 | }; |
187 | 215 | ||
216 | /* Masks for Flags field above */ | ||
217 | |||
218 | #define ACPI_EINJ_PRESERVE (1) | ||
219 | |||
188 | /* Values for Action field above */ | 220 | /* Values for Action field above */ |
189 | 221 | ||
190 | enum acpi_einj_actions { | 222 | enum acpi_einj_actions { |
@@ -220,9 +252,34 @@ struct acpi_einj_trigger { | |||
220 | u32 entry_count; | 252 | u32 entry_count; |
221 | }; | 253 | }; |
222 | 254 | ||
255 | /* Command status return values */ | ||
256 | |||
257 | enum acpi_einj_command_status { | ||
258 | ACPI_EINJ_SUCCESS = 0, | ||
259 | ACPI_EINJ_FAILURE = 1, | ||
260 | ACPI_EINJ_INVALID_ACCESS = 2, | ||
261 | ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ | ||
262 | }; | ||
263 | |||
264 | /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ | ||
265 | |||
266 | #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) | ||
267 | #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) | ||
268 | #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) | ||
269 | #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) | ||
270 | #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) | ||
271 | #define ACPI_EINJ_MEMORY_FATAL (1<<5) | ||
272 | #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) | ||
273 | #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) | ||
274 | #define ACPI_EINJ_PCIX_FATAL (1<<8) | ||
275 | #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) | ||
276 | #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) | ||
277 | #define ACPI_EINJ_PLATFORM_FATAL (1<<11) | ||
278 | |||
223 | /******************************************************************************* | 279 | /******************************************************************************* |
224 | * | 280 | * |
225 | * ERST - Error Record Serialization Table | 281 | * ERST - Error Record Serialization Table (ACPI 4.0) |
282 | * Version 1 | ||
226 | * | 283 | * |
227 | ******************************************************************************/ | 284 | ******************************************************************************/ |
228 | 285 | ||
@@ -239,19 +296,23 @@ struct acpi_erst_entry { | |||
239 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | 296 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ |
240 | }; | 297 | }; |
241 | 298 | ||
299 | /* Masks for Flags field above */ | ||
300 | |||
301 | #define ACPI_ERST_PRESERVE (1) | ||
302 | |||
242 | /* Values for Action field above */ | 303 | /* Values for Action field above */ |
243 | 304 | ||
244 | enum acpi_erst_actions { | 305 | enum acpi_erst_actions { |
245 | ACPI_ERST_BEGIN_WRITE_OPERATION = 0, | 306 | ACPI_ERST_BEGIN_WRITE = 0, |
246 | ACPI_ERST_BEGIN_READ_OPERATION = 1, | 307 | ACPI_ERST_BEGIN_READ = 1, |
247 | ACPI_ERST_BETGIN_CLEAR_OPERATION = 2, | 308 | ACPI_ERST_BEGIN_CLEAR = 2, |
248 | ACPI_ERST_END_OPERATION = 3, | 309 | ACPI_ERST_END = 3, |
249 | ACPI_ERST_SET_RECORD_OFFSET = 4, | 310 | ACPI_ERST_SET_RECORD_OFFSET = 4, |
250 | ACPI_ERST_EXECUTE_OPERATION = 5, | 311 | ACPI_ERST_EXECUTE_OPERATION = 5, |
251 | ACPI_ERST_CHECK_BUSY_STATUS = 6, | 312 | ACPI_ERST_CHECK_BUSY_STATUS = 6, |
252 | ACPI_ERST_GET_COMMAND_STATUS = 7, | 313 | ACPI_ERST_GET_COMMAND_STATUS = 7, |
253 | ACPI_ERST_GET_RECORD_IDENTIFIER = 8, | 314 | ACPI_ERST_GET_RECORD_ID = 8, |
254 | ACPI_ERST_SET_RECORD_IDENTIFIER = 9, | 315 | ACPI_ERST_SET_RECORD_ID = 9, |
255 | ACPI_ERST_GET_RECORD_COUNT = 10, | 316 | ACPI_ERST_GET_RECORD_COUNT = 10, |
256 | ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, | 317 | ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, |
257 | ACPI_ERST_NOT_USED = 12, | 318 | ACPI_ERST_NOT_USED = 12, |
@@ -286,9 +347,29 @@ enum acpi_erst_instructions { | |||
286 | ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ | 347 | ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ |
287 | }; | 348 | }; |
288 | 349 | ||
350 | /* Command status return values */ | ||
351 | |||
352 | enum acpi_erst_command_status { | ||
353 | ACPI_ERST_SUCESS = 0, | ||
354 | ACPI_ERST_NO_SPACE = 1, | ||
355 | ACPI_ERST_NOT_AVAILABLE = 2, | ||
356 | ACPI_ERST_FAILURE = 3, | ||
357 | ACPI_ERST_RECORD_EMPTY = 4, | ||
358 | ACPI_ERST_NOT_FOUND = 5, | ||
359 | ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ | ||
360 | }; | ||
361 | |||
362 | /* Error Record Serialization Information */ | ||
363 | |||
364 | struct acpi_erst_info { | ||
365 | u16 signature; /* Should be "ER" */ | ||
366 | u8 data[48]; | ||
367 | }; | ||
368 | |||
289 | /******************************************************************************* | 369 | /******************************************************************************* |
290 | * | 370 | * |
291 | * HEST - Hardware Error Source Table | 371 | * HEST - Hardware Error Source Table (ACPI 4.0) |
372 | * Version 1 | ||
292 | * | 373 | * |
293 | ******************************************************************************/ | 374 | ******************************************************************************/ |
294 | 375 | ||
@@ -301,70 +382,49 @@ struct acpi_table_hest { | |||
301 | 382 | ||
302 | struct acpi_hest_header { | 383 | struct acpi_hest_header { |
303 | u16 type; | 384 | u16 type; |
385 | u16 source_id; | ||
304 | }; | 386 | }; |
305 | 387 | ||
306 | /* Values for Type field above for subtables */ | 388 | /* Values for Type field above for subtables */ |
307 | 389 | ||
308 | enum acpi_hest_types { | 390 | enum acpi_hest_types { |
309 | ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, | 391 | ACPI_HEST_TYPE_IA32_CHECK = 0, |
310 | ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, | 392 | ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, |
311 | ACPI_HEST_TYPE_XPF_UNUSED = 2, | 393 | ACPI_HEST_TYPE_IA32_NMI = 2, |
312 | ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, | 394 | ACPI_HEST_TYPE_NOT_USED3 = 3, |
313 | ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, | 395 | ACPI_HEST_TYPE_NOT_USED4 = 4, |
314 | ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, | 396 | ACPI_HEST_TYPE_NOT_USED5 = 5, |
315 | ACPI_HEST_TYPE_AER_ROOT_PORT = 6, | 397 | ACPI_HEST_TYPE_AER_ROOT_PORT = 6, |
316 | ACPI_HEST_TYPE_AER_ENDPOINT = 7, | 398 | ACPI_HEST_TYPE_AER_ENDPOINT = 7, |
317 | ACPI_HEST_TYPE_AER_BRIDGE = 8, | 399 | ACPI_HEST_TYPE_AER_BRIDGE = 8, |
318 | ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, | 400 | ACPI_HEST_TYPE_GENERIC_ERROR = 9, |
319 | ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ | 401 | ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ |
320 | }; | 402 | }; |
321 | 403 | ||
322 | /* | 404 | /* |
323 | * HEST Sub-subtables | 405 | * HEST substructures contained in subtables |
324 | */ | 406 | */ |
325 | 407 | ||
326 | /* XPF Machine Check Error Bank */ | 408 | /* |
327 | 409 | * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and | |
328 | struct acpi_hest_xpf_error_bank { | 410 | * struct acpi_hest_ia_corrected structures. |
411 | */ | ||
412 | struct acpi_hest_ia_error_bank { | ||
329 | u8 bank_number; | 413 | u8 bank_number; |
330 | u8 clear_status_on_init; | 414 | u8 clear_status_on_init; |
331 | u8 status_format; | 415 | u8 status_format; |
332 | u8 config_write_enable; | 416 | u8 reserved; |
333 | u32 control_register; | 417 | u32 control_register; |
334 | u64 control_init_data; | 418 | u64 control_data; |
335 | u32 status_register; | 419 | u32 status_register; |
336 | u32 address_register; | 420 | u32 address_register; |
337 | u32 misc_register; | 421 | u32 misc_register; |
338 | }; | 422 | }; |
339 | 423 | ||
340 | /* Generic Error Status */ | 424 | /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ |
341 | |||
342 | struct acpi_hest_generic_status { | ||
343 | u32 block_status; | ||
344 | u32 raw_data_offset; | ||
345 | u32 raw_data_length; | ||
346 | u32 data_length; | ||
347 | u32 error_severity; | ||
348 | }; | ||
349 | |||
350 | /* Generic Error Data */ | ||
351 | |||
352 | struct acpi_hest_generic_data { | ||
353 | u8 section_type[16]; | ||
354 | u32 error_severity; | ||
355 | u16 revision; | ||
356 | u8 validation_bits; | ||
357 | u8 flags; | ||
358 | u32 error_data_length; | ||
359 | u8 fru_id[16]; | ||
360 | u8 fru_text[20]; | ||
361 | }; | ||
362 | |||
363 | /* Common HEST structure for PCI/AER types below (6,7,8) */ | ||
364 | 425 | ||
365 | struct acpi_hest_aer_common { | 426 | struct acpi_hest_aer_common { |
366 | u16 source_id; | 427 | u16 reserved1; |
367 | u16 config_write_enable; | ||
368 | u8 flags; | 428 | u8 flags; |
369 | u8 enabled; | 429 | u8 enabled; |
370 | u32 records_to_pre_allocate; | 430 | u32 records_to_pre_allocate; |
@@ -373,13 +433,18 @@ struct acpi_hest_aer_common { | |||
373 | u16 device; | 433 | u16 device; |
374 | u16 function; | 434 | u16 function; |
375 | u16 device_control; | 435 | u16 device_control; |
376 | u16 reserved; | 436 | u16 reserved2; |
377 | u32 uncorrectable_error_mask; | 437 | u32 uncorrectable_error_mask; |
378 | u32 uncorrectable_error_severity; | 438 | u32 uncorrectable_error_severity; |
379 | u32 correctable_error_mask; | 439 | u32 correctable_error_mask; |
380 | u32 advanced_error_capabilities; | 440 | u32 advanced_error_capabilities; |
381 | }; | 441 | }; |
382 | 442 | ||
443 | /* Masks for HEST Flags fields */ | ||
444 | |||
445 | #define ACPI_HEST_FIRMWARE_FIRST (1) | ||
446 | #define ACPI_HEST_GLOBAL (1<<1) | ||
447 | |||
383 | /* Hardware Error Notification */ | 448 | /* Hardware Error Notification */ |
384 | 449 | ||
385 | struct acpi_hest_notify { | 450 | struct acpi_hest_notify { |
@@ -405,71 +470,59 @@ enum acpi_hest_notify_types { | |||
405 | ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ | 470 | ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ |
406 | }; | 471 | }; |
407 | 472 | ||
473 | /* Values for config_write_enable bitfield above */ | ||
474 | |||
475 | #define ACPI_HEST_TYPE (1) | ||
476 | #define ACPI_HEST_POLL_INTERVAL (1<<1) | ||
477 | #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) | ||
478 | #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) | ||
479 | #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) | ||
480 | #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) | ||
481 | |||
408 | /* | 482 | /* |
409 | * HEST subtables | 483 | * HEST subtables |
410 | * | ||
411 | * From WHEA Design Document, 16 May 2007. | ||
412 | * Note: There is no subtable type 2 in this version of the document, | ||
413 | * and there are two different subtable type 3s. | ||
414 | */ | 484 | */ |
415 | 485 | ||
416 | /* 0: XPF Machine Check Exception */ | 486 | /* 0: IA32 Machine Check Exception */ |
417 | 487 | ||
418 | struct acpi_hest_xpf_machine_check { | 488 | struct acpi_hest_ia_machine_check { |
419 | struct acpi_hest_header header; | 489 | struct acpi_hest_header header; |
420 | u16 source_id; | 490 | u16 reserved1; |
421 | u16 config_write_enable; | ||
422 | u8 flags; | 491 | u8 flags; |
423 | u8 reserved1; | 492 | u8 enabled; |
424 | u32 records_to_pre_allocate; | 493 | u32 records_to_pre_allocate; |
425 | u32 max_sections_per_record; | 494 | u32 max_sections_per_record; |
426 | u64 global_capability_data; | 495 | u64 global_capability_data; |
427 | u64 global_control_data; | 496 | u64 global_control_data; |
428 | u8 num_hardware_banks; | 497 | u8 num_hardware_banks; |
429 | u8 reserved2[7]; | 498 | u8 reserved3[7]; |
430 | }; | 499 | }; |
431 | 500 | ||
432 | /* 1: XPF Corrected Machine Check */ | 501 | /* 1: IA32 Corrected Machine Check */ |
433 | 502 | ||
434 | struct acpi_table_hest_xpf_corrected { | 503 | struct acpi_table_hest_ia_corrected { |
435 | struct acpi_hest_header header; | 504 | struct acpi_hest_header header; |
436 | u16 source_id; | 505 | u16 reserved1; |
437 | u16 config_write_enable; | ||
438 | u8 flags; | 506 | u8 flags; |
439 | u8 enabled; | 507 | u8 enabled; |
440 | u32 records_to_pre_allocate; | 508 | u32 records_to_pre_allocate; |
441 | u32 max_sections_per_record; | 509 | u32 max_sections_per_record; |
442 | struct acpi_hest_notify notify; | 510 | struct acpi_hest_notify notify; |
443 | u8 num_hardware_banks; | 511 | u8 num_hardware_banks; |
444 | u8 reserved[3]; | 512 | u8 reserved2[3]; |
445 | }; | 513 | }; |
446 | 514 | ||
447 | /* 3: XPF Non-Maskable Interrupt */ | 515 | /* 2: IA32 Non-Maskable Interrupt */ |
448 | 516 | ||
449 | struct acpi_hest_xpf_nmi { | 517 | struct acpi_hest_ia_nmi { |
450 | struct acpi_hest_header header; | 518 | struct acpi_hest_header header; |
451 | u16 source_id; | ||
452 | u32 reserved; | 519 | u32 reserved; |
453 | u32 records_to_pre_allocate; | 520 | u32 records_to_pre_allocate; |
454 | u32 max_sections_per_record; | 521 | u32 max_sections_per_record; |
455 | u32 max_raw_data_length; | 522 | u32 max_raw_data_length; |
456 | }; | 523 | }; |
457 | 524 | ||
458 | /* 4: IPF Corrected Machine Check */ | 525 | /* 3,4,5: Not used */ |
459 | |||
460 | struct acpi_hest_ipf_corrected { | ||
461 | struct acpi_hest_header header; | ||
462 | u8 enabled; | ||
463 | u8 reserved; | ||
464 | }; | ||
465 | |||
466 | /* 5: IPF Corrected Platform Error */ | ||
467 | |||
468 | struct acpi_hest_ipf_corrected_platform { | ||
469 | struct acpi_hest_header header; | ||
470 | u8 enabled; | ||
471 | u8 reserved; | ||
472 | }; | ||
473 | 526 | ||
474 | /* 6: PCI Express Root Port AER */ | 527 | /* 6: PCI Express Root Port AER */ |
475 | 528 | ||
@@ -491,30 +544,61 @@ struct acpi_hest_aer { | |||
491 | struct acpi_hest_aer_bridge { | 544 | struct acpi_hest_aer_bridge { |
492 | struct acpi_hest_header header; | 545 | struct acpi_hest_header header; |
493 | struct acpi_hest_aer_common aer; | 546 | struct acpi_hest_aer_common aer; |
494 | u32 secondary_uncorrectable_error_mask; | 547 | u32 second_uncorrectable_error_mask; |
495 | u32 secondary_uncorrectable_error_severity; | 548 | u32 second_uncorrectable_error_severity; |
496 | u32 secondary_advanced_capabilities; | 549 | u32 second_advanced_capabilities; |
497 | }; | 550 | }; |
498 | 551 | ||
499 | /* 9: Generic Hardware Error Source */ | 552 | /* 9: Generic Hardware Error Source */ |
500 | 553 | ||
501 | struct acpi_hest_generic { | 554 | struct acpi_hest_generic { |
502 | struct acpi_hest_header header; | 555 | struct acpi_hest_header header; |
503 | u16 source_id; | ||
504 | u16 related_source_id; | 556 | u16 related_source_id; |
505 | u8 config_write_enable; | 557 | u8 reserved; |
506 | u8 enabled; | 558 | u8 enabled; |
507 | u32 records_to_pre_allocate; | 559 | u32 records_to_pre_allocate; |
508 | u32 max_sections_per_record; | 560 | u32 max_sections_per_record; |
509 | u32 max_raw_data_length; | 561 | u32 max_raw_data_length; |
510 | struct acpi_generic_address error_status_address; | 562 | struct acpi_generic_address error_status_address; |
511 | struct acpi_hest_notify notify; | 563 | struct acpi_hest_notify notify; |
512 | u32 error_status_block_length; | 564 | u32 error_block_length; |
565 | }; | ||
566 | |||
567 | /* Generic Error Status block */ | ||
568 | |||
569 | struct acpi_hest_generic_status { | ||
570 | u32 block_status; | ||
571 | u32 raw_data_offset; | ||
572 | u32 raw_data_length; | ||
573 | u32 data_length; | ||
574 | u32 error_severity; | ||
575 | }; | ||
576 | |||
577 | /* Values for block_status flags above */ | ||
578 | |||
579 | #define ACPI_HEST_UNCORRECTABLE (1) | ||
580 | #define ACPI_HEST_CORRECTABLE (1<<1) | ||
581 | #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) | ||
582 | #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) | ||
583 | #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ | ||
584 | |||
585 | /* Generic Error Data entry */ | ||
586 | |||
587 | struct acpi_hest_generic_data { | ||
588 | u8 section_type[16]; | ||
589 | u32 error_severity; | ||
590 | u16 revision; | ||
591 | u8 validation_bits; | ||
592 | u8 flags; | ||
593 | u32 error_data_length; | ||
594 | u8 fru_id[16]; | ||
595 | u8 fru_text[20]; | ||
513 | }; | 596 | }; |
514 | 597 | ||
515 | /******************************************************************************* | 598 | /******************************************************************************* |
516 | * | 599 | * |
517 | * MADT - Multiple APIC Description Table | 600 | * MADT - Multiple APIC Description Table |
601 | * Version 3 | ||
518 | * | 602 | * |
519 | ******************************************************************************/ | 603 | ******************************************************************************/ |
520 | 604 | ||
@@ -524,16 +608,16 @@ struct acpi_table_madt { | |||
524 | u32 flags; | 608 | u32 flags; |
525 | }; | 609 | }; |
526 | 610 | ||
527 | /* Flags */ | 611 | /* Masks for Flags field above */ |
528 | 612 | ||
529 | #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ | 613 | #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ |
530 | 614 | ||
531 | /* Values for PCATCompat flag */ | 615 | /* Values for PCATCompat flag */ |
532 | 616 | ||
533 | #define ACPI_MADT_DUAL_PIC 0 | 617 | #define ACPI_MADT_DUAL_PIC 0 |
534 | #define ACPI_MADT_MULTIPLE_APIC 1 | 618 | #define ACPI_MADT_MULTIPLE_APIC 1 |
535 | 619 | ||
536 | /* Values for subtable type in struct acpi_subtable_header */ | 620 | /* Values for MADT subtable type in struct acpi_subtable_header */ |
537 | 621 | ||
538 | enum acpi_madt_type { | 622 | enum acpi_madt_type { |
539 | ACPI_MADT_TYPE_LOCAL_APIC = 0, | 623 | ACPI_MADT_TYPE_LOCAL_APIC = 0, |
@@ -644,7 +728,7 @@ struct acpi_madt_interrupt_source { | |||
644 | u32 flags; /* Interrupt Source Flags */ | 728 | u32 flags; /* Interrupt Source Flags */ |
645 | }; | 729 | }; |
646 | 730 | ||
647 | /* Flags field above */ | 731 | /* Masks for Flags field above */ |
648 | 732 | ||
649 | #define ACPI_MADT_CPEI_OVERRIDE (1) | 733 | #define ACPI_MADT_CPEI_OVERRIDE (1) |
650 | 734 | ||
@@ -695,7 +779,34 @@ struct acpi_madt_local_x2apic_nmi { | |||
695 | 779 | ||
696 | /******************************************************************************* | 780 | /******************************************************************************* |
697 | * | 781 | * |
782 | * MSCT - Maximum System Characteristics Table (ACPI 4.0) | ||
783 | * Version 1 | ||
784 | * | ||
785 | ******************************************************************************/ | ||
786 | |||
787 | struct acpi_table_msct { | ||
788 | struct acpi_table_header header; /* Common ACPI table header */ | ||
789 | u32 proximity_offset; /* Location of proximity info struct(s) */ | ||
790 | u32 max_proximity_domains; /* Max number of proximity domains */ | ||
791 | u32 max_clock_domains; /* Max number of clock domains */ | ||
792 | u64 max_address; /* Max physical address in system */ | ||
793 | }; | ||
794 | |||
795 | /* Subtable - Maximum Proximity Domain Information. Version 1 */ | ||
796 | |||
797 | struct acpi_msct_proximity { | ||
798 | u8 revision; | ||
799 | u8 length; | ||
800 | u32 range_start; /* Start of domain range */ | ||
801 | u32 range_end; /* End of domain range */ | ||
802 | u32 processor_capacity; | ||
803 | u64 memory_capacity; /* In bytes */ | ||
804 | }; | ||
805 | |||
806 | /******************************************************************************* | ||
807 | * | ||
698 | * SBST - Smart Battery Specification Table | 808 | * SBST - Smart Battery Specification Table |
809 | * Version 1 | ||
699 | * | 810 | * |
700 | ******************************************************************************/ | 811 | ******************************************************************************/ |
701 | 812 | ||
@@ -709,6 +820,7 @@ struct acpi_table_sbst { | |||
709 | /******************************************************************************* | 820 | /******************************************************************************* |
710 | * | 821 | * |
711 | * SLIT - System Locality Distance Information Table | 822 | * SLIT - System Locality Distance Information Table |
823 | * Version 1 | ||
712 | * | 824 | * |
713 | ******************************************************************************/ | 825 | ******************************************************************************/ |
714 | 826 | ||
@@ -721,6 +833,7 @@ struct acpi_table_slit { | |||
721 | /******************************************************************************* | 833 | /******************************************************************************* |
722 | * | 834 | * |
723 | * SRAT - System Resource Affinity Table | 835 | * SRAT - System Resource Affinity Table |
836 | * Version 3 | ||
724 | * | 837 | * |
725 | ******************************************************************************/ | 838 | ******************************************************************************/ |
726 | 839 | ||
@@ -755,6 +868,10 @@ struct acpi_srat_cpu_affinity { | |||
755 | u32 reserved; /* Reserved, must be zero */ | 868 | u32 reserved; /* Reserved, must be zero */ |
756 | }; | 869 | }; |
757 | 870 | ||
871 | /* Flags */ | ||
872 | |||
873 | #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ | ||
874 | |||
758 | /* 1: Memory Affinity */ | 875 | /* 1: Memory Affinity */ |
759 | 876 | ||
760 | struct acpi_srat_mem_affinity { | 877 | struct acpi_srat_mem_affinity { |