aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/actbl1.h
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2009-07-26 22:53:00 -0400
committerLen Brown <len.brown@intel.com>2009-08-28 19:40:38 -0400
commit6e2d5ebd0d36199920676fdceaff4f4bfe66297b (patch)
tree334c129986a3ae126378a001d871d3e4267db6ea /include/acpi/actbl1.h
parentb24aad44438d5bc21cbbfb94a99d9bf710d8295b (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.h339
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
87struct acpi_subtable_header { 95struct 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
94struct acpi_whea_header { 102struct 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
118struct acpi_bert_region { 127struct 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
145enum 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
146struct acpi_cpep_polling { 172struct 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
175struct acpi_table_einj { 202struct 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
190enum acpi_einj_actions { 222enum 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
257enum 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
244enum acpi_erst_actions { 305enum 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
352enum 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
364struct 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
302struct acpi_hest_header { 383struct 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
308enum acpi_hest_types { 390enum 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
328struct acpi_hest_xpf_error_bank { 410 * struct acpi_hest_ia_corrected structures.
411 */
412struct 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
342struct 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
352struct 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
365struct acpi_hest_aer_common { 426struct 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
385struct acpi_hest_notify { 450struct 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
418struct acpi_hest_xpf_machine_check { 488struct 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
434struct acpi_table_hest_xpf_corrected { 503struct 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
449struct acpi_hest_xpf_nmi { 517struct 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
460struct 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
468struct 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 {
491struct acpi_hest_aer_bridge { 544struct 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
501struct acpi_hest_generic { 554struct 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
569struct 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
587struct 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
538enum acpi_madt_type { 622enum 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
787struct 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
797struct 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
760struct acpi_srat_mem_affinity { 877struct acpi_srat_mem_affinity {