aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/acpi/actbl.h30
-rw-r--r--include/acpi/actbl1.h339
-rw-r--r--include/acpi/actbl2.h339
3 files changed, 557 insertions, 151 deletions
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index 55fcfc6725b2..1b6587952604 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -58,8 +58,9 @@
58 ******************************************************************************/ 58 ******************************************************************************/
59 59
60/* 60/*
61 * Values for description table header signatures. Useful because they make 61 * Values for description table header signatures for tables defined in this
62 * it more difficult to inadvertently type in the wrong signature. 62 * file. Useful because they make it more difficult to inadvertently type in
63 * the wrong signature.
63 */ 64 */
64#define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ 65#define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */
65#define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ 66#define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */
@@ -123,6 +124,7 @@ struct acpi_generic_address {
123/******************************************************************************* 124/*******************************************************************************
124 * 125 *
125 * RSDP - Root System Description Pointer (Signature is "RSD PTR ") 126 * RSDP - Root System Description Pointer (Signature is "RSD PTR ")
127 * Version 2
126 * 128 *
127 ******************************************************************************/ 129 ******************************************************************************/
128 130
@@ -143,6 +145,7 @@ struct acpi_table_rsdp {
143/******************************************************************************* 145/*******************************************************************************
144 * 146 *
145 * RSDT/XSDT - Root System Description Tables 147 * RSDT/XSDT - Root System Description Tables
148 * Version 1 (both)
146 * 149 *
147 ******************************************************************************/ 150 ******************************************************************************/
148 151
@@ -176,23 +179,24 @@ struct acpi_table_facs {
176 u8 reserved1[24]; /* Reserved, must be zero */ 179 u8 reserved1[24]; /* Reserved, must be zero */
177}; 180};
178 181
179/* global_lock flags */ 182/* Masks for global_lock flag field above */
180 183
181#define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */ 184#define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */
182#define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */ 185#define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */
183 186
184/* Flags */ 187/* Masks for Flags field above */
185 188
186#define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ 189#define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */
187#define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */ 190#define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */
188 191
189/* ospm_flags */ 192/* Masks for ospm_flags field above */
190 193
191#define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */ 194#define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */
192 195
193/******************************************************************************* 196/*******************************************************************************
194 * 197 *
195 * FADT - Fixed ACPI Description Table (Signature "FACP") 198 * FADT - Fixed ACPI Description Table (Signature "FACP")
199 * Version 4
196 * 200 *
197 ******************************************************************************/ 201 ******************************************************************************/
198 202
@@ -253,7 +257,7 @@ struct acpi_table_fadt {
253 struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ 257 struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */
254}; 258};
255 259
256/* FADT Boot Architecture Flags (boot_flags) */ 260/* Masks for FADT Boot Architecture Flags (boot_flags) */
257 261
258#define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */ 262#define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */
259#define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */ 263#define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */
@@ -263,7 +267,7 @@ struct acpi_table_fadt {
263 267
264#define FADT2_REVISION_ID 3 268#define FADT2_REVISION_ID 3
265 269
266/* FADT flags */ 270/* Masks for FADT flags */
267 271
268#define ACPI_FADT_WBINVD (1) /* 00: [V1] The wbinvd instruction works properly */ 272#define ACPI_FADT_WBINVD (1) /* 00: [V1] The wbinvd instruction works properly */
269#define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] wbinvd flushes but does not invalidate caches */ 273#define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] wbinvd flushes but does not invalidate caches */
@@ -286,7 +290,7 @@ struct acpi_table_fadt {
286#define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */ 290#define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */
287#define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local x_aPICs must use physical dest mode (ACPI 3.0) */ 291#define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local x_aPICs must use physical dest mode (ACPI 3.0) */
288 292
289/* FADT Prefered Power Management Profiles */ 293/* Values for preferred_profile (Prefered Power Management Profiles) */
290 294
291enum acpi_prefered_pm_profiles { 295enum acpi_prefered_pm_profiles {
292 PM_UNSPECIFIED = 0, 296 PM_UNSPECIFIED = 0,
@@ -304,14 +308,16 @@ enum acpi_prefered_pm_profiles {
304 308
305#define ACPI_FADT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_table_fadt, f) 309#define ACPI_FADT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_table_fadt, f)
306 310
311/*
312 * Internal table-related structures
313 */
307union acpi_name_union { 314union acpi_name_union {
308 u32 integer; 315 u32 integer;
309 char ascii[4]; 316 char ascii[4];
310}; 317};
311 318
312/* 319/* Internal ACPI Table Descriptor. One per ACPI table. */
313 * Internal ACPI Table Descriptor. One per ACPI table 320
314 */
315struct acpi_table_desc { 321struct acpi_table_desc {
316 acpi_physical_address address; 322 acpi_physical_address address;
317 struct acpi_table_header *pointer; 323 struct acpi_table_header *pointer;
@@ -321,7 +327,7 @@ struct acpi_table_desc {
321 u8 flags; 327 u8 flags;
322}; 328};
323 329
324/* Flags for above */ 330/* Masks for Flags field above */
325 331
326#define ACPI_TABLE_ORIGIN_UNKNOWN (0) 332#define ACPI_TABLE_ORIGIN_UNKNOWN (0)
327#define ACPI_TABLE_ORIGIN_MAPPED (1) 333#define ACPI_TABLE_ORIGIN_MAPPED (1)
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 {
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index b271aba0e524..6f3dce9991e1 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -14,8 +14,9 @@
14 ******************************************************************************/ 14 ******************************************************************************/
15 15
16/* 16/*
17 * Values for description table header signatures. Useful because they make 17 * Values for description table header signatures for tables defined in this
18 * it more difficult to inadvertently type in the wrong signature. 18 * file. Useful because they make it more difficult to inadvertently type in
19 * the wrong signature.
19 */ 20 */
20#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 21#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
21#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 22#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
@@ -23,12 +24,14 @@
23#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 24#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
24#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 25#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
25#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ 26#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */
27#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
26#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 28#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
27#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 29#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
28#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 30#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
29#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 31#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
30#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 32#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
31#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 33#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
34#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
32#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 35#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
33#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 36#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
34 37
@@ -47,6 +50,7 @@
47/******************************************************************************* 50/*******************************************************************************
48 * 51 *
49 * ASF - Alert Standard Format table (Signature "ASF!") 52 * ASF - Alert Standard Format table (Signature "ASF!")
53 * Revision 0x10
50 * 54 *
51 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 55 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
52 * 56 *
@@ -91,6 +95,10 @@ struct acpi_asf_info {
91 u8 reserved2[3]; 95 u8 reserved2[3];
92}; 96};
93 97
98/* Masks for Flags field above */
99
100#define ACPI_ASF_SMBUS_PROTOCOLS (1)
101
94/* 1: ASF Alerts */ 102/* 1: ASF Alerts */
95 103
96struct acpi_asf_alert { 104struct acpi_asf_alert {
@@ -156,6 +164,9 @@ struct acpi_asf_address {
156/******************************************************************************* 164/*******************************************************************************
157 * 165 *
158 * BOOT - Simple Boot Flag Table 166 * BOOT - Simple Boot Flag Table
167 * Version 1
168 *
169 * Conforms to the "Simple Boot Flag Specification", Version 2.1
159 * 170 *
160 ******************************************************************************/ 171 ******************************************************************************/
161 172
@@ -168,6 +179,9 @@ struct acpi_table_boot {
168/******************************************************************************* 179/*******************************************************************************
169 * 180 *
170 * DBGP - Debug Port table 181 * DBGP - Debug Port table
182 * Version 1
183 *
184 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
171 * 185 *
172 ******************************************************************************/ 186 ******************************************************************************/
173 187
@@ -181,7 +195,10 @@ struct acpi_table_dbgp {
181/******************************************************************************* 195/*******************************************************************************
182 * 196 *
183 * DMAR - DMA Remapping table 197 * DMAR - DMA Remapping table
184 * From "Intel Virtualization Technology for Directed I/O", Sept. 2007 198 * Version 1
199 *
200 * Conforms to "Intel Virtualization Technology for Directed I/O",
201 * Version 1.2, Sept. 2008
185 * 202 *
186 ******************************************************************************/ 203 ******************************************************************************/
187 204
@@ -192,7 +209,7 @@ struct acpi_table_dmar {
192 u8 reserved[10]; 209 u8 reserved[10];
193}; 210};
194 211
195/* Flags */ 212/* Masks for Flags field above */
196 213
197#define ACPI_DMAR_INTR_REMAP (1) 214#define ACPI_DMAR_INTR_REMAP (1)
198 215
@@ -209,9 +226,12 @@ enum acpi_dmar_type {
209 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 226 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
210 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 227 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
211 ACPI_DMAR_TYPE_ATSR = 2, 228 ACPI_DMAR_TYPE_ATSR = 2,
212 ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 229 ACPI_DMAR_HARDWARE_AFFINITY = 3,
230 ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */
213}; 231};
214 232
233/* DMAR Device Scope structure */
234
215struct acpi_dmar_device_scope { 235struct acpi_dmar_device_scope {
216 u8 entry_type; 236 u8 entry_type;
217 u8 length; 237 u8 length;
@@ -250,7 +270,7 @@ struct acpi_dmar_hardware_unit {
250 u64 address; /* Register Base Address */ 270 u64 address; /* Register Base Address */
251}; 271};
252 272
253/* Flags */ 273/* Masks for Flags field above */
254 274
255#define ACPI_DMAR_INCLUDE_ALL (1) 275#define ACPI_DMAR_INCLUDE_ALL (1)
256 276
@@ -264,7 +284,7 @@ struct acpi_dmar_reserved_memory {
264 u64 end_address; /* 4_k aligned limit address */ 284 u64 end_address; /* 4_k aligned limit address */
265}; 285};
266 286
267/* Flags */ 287/* Masks for Flags field above */
268 288
269#define ACPI_DMAR_ALLOW_ALL (1) 289#define ACPI_DMAR_ALLOW_ALL (1)
270 290
@@ -277,13 +297,26 @@ struct acpi_dmar_atsr {
277 u16 segment; 297 u16 segment;
278}; 298};
279 299
280/* Flags */ 300/* Masks for Flags field above */
281 301
282#define ACPI_DMAR_ALL_PORTS (1) 302#define ACPI_DMAR_ALL_PORTS (1)
283 303
304/* 3: Remapping Hardware Static Affinity Structure */
305
306struct acpi_dmar_rhsa {
307 struct acpi_dmar_header header;
308 u32 reserved;
309 u64 base_address;
310 u32 proximity_domain;
311};
312
284/******************************************************************************* 313/*******************************************************************************
285 * 314 *
286 * HPET - High Precision Event Timer table 315 * HPET - High Precision Event Timer table
316 * Version 1
317 *
318 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
319 * Version 1.0a, October 2004
287 * 320 *
288 ******************************************************************************/ 321 ******************************************************************************/
289 322
@@ -296,17 +329,28 @@ struct acpi_table_hpet {
296 u8 flags; 329 u8 flags;
297}; 330};
298 331
299/*! Flags */ 332/* Masks for Flags field above */
300 333
301#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 334#define ACPI_HPET_PAGE_PROTECT_MASK (3)
302#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */
303#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */
304 335
305/*! [End] no source code translation !*/ 336/* Values for Page Protect flags */
337
338enum acpi_hpet_page_protect {
339 ACPI_HPET_NO_PAGE_PROTECT = 0,
340 ACPI_HPET_PAGE_PROTECT4 = 1,
341 ACPI_HPET_PAGE_PROTECT64 = 2
342};
306 343
307/******************************************************************************* 344/*******************************************************************************
308 * 345 *
309 * IBFT - Boot Firmware Table 346 * IBFT - Boot Firmware Table
347 * Version 1
348 *
349 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
350 * Specification", Version 1.01, March 1, 2007
351 *
352 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
353 * Therefore, it is not currently supported by the disassembler.
310 * 354 *
311 ******************************************************************************/ 355 ******************************************************************************/
312 356
@@ -396,7 +440,182 @@ struct acpi_ibft_target {
396 440
397/******************************************************************************* 441/*******************************************************************************
398 * 442 *
443 * IVRS - I/O Virtualization Reporting Structure
444 * Version 1
445 *
446 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
447 * Revision 1.26, February 2009.
448 *
449 ******************************************************************************/
450
451struct acpi_table_ivrs {
452 struct acpi_table_header header; /* Common ACPI table header */
453 u32 info; /* Common virtualization info */
454 u64 reserved;
455};
456
457/* Values for Info field above */
458
459#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */
460#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */
461#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */
462
463/* IVRS subtable header */
464
465struct acpi_ivrs_header {
466 u8 type; /* Subtable type */
467 u8 flags;
468 u16 length; /* Subtable length */
469 u16 device_id; /* ID of IOMMU */
470};
471
472/* Values for subtable Type above */
473
474enum acpi_ivrs_type {
475 ACPI_IVRS_TYPE_HARDWARE = 0x10,
476 ACPI_IVRS_TYPE_MEMORY1 = 0x20,
477 ACPI_IVRS_TYPE_MEMORY2 = 0x21,
478 ACPI_IVRS_TYPE_MEMORY3 = 0x22
479};
480
481/* Masks for Flags field above for IVHD subtable */
482
483#define ACPI_IVHD_TT_ENABLE (1)
484#define ACPI_IVHD_PASS_PW (1<<1)
485#define ACPI_IVHD_RES_PASS_PW (1<<2)
486#define ACPI_IVHD_ISOC (1<<3)
487#define ACPI_IVHD_IOTLB (1<<4)
488
489/* Masks for Flags field above for IVMD subtable */
490
491#define ACPI_IVMD_UNITY (1)
492#define ACPI_IVMD_READ (1<<1)
493#define ACPI_IVMD_WRITE (1<<2)
494#define ACPI_IVMD_EXCLUSION_RANGE (1<<3)
495
496/*
497 * IVRS subtables, correspond to Type in struct acpi_ivrs_header
498 */
499
500/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
501
502struct acpi_ivrs_hardware {
503 struct acpi_ivrs_header header;
504 u16 capability_offset; /* Offset for IOMMU control fields */
505 u64 base_address; /* IOMMU control registers */
506 u16 pci_segment_group;
507 u16 info; /* MSI number and unit ID */
508 u32 reserved;
509};
510
511/* Masks for Info field above */
512
513#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */
514#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */
515
516/*
517 * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
518 * Upper two bits of the Type field are the (encoded) length of the structure.
519 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
520 * are reserved for future use but not defined.
521 */
522struct acpi_ivrs_de_header {
523 u8 type;
524 u16 id;
525 u8 data_setting;
526};
527
528/* Length of device entry is in the top two bits of Type field above */
529
530#define ACPI_IVHD_ENTRY_LENGTH 0xC0
531
532/* Values for device entry Type field above */
533
534enum acpi_ivrs_device_entry_type {
535 /* 4-byte device entries, all use struct acpi_ivrs_device4 */
536
537 ACPI_IVRS_TYPE_PAD4 = 0,
538 ACPI_IVRS_TYPE_ALL = 1,
539 ACPI_IVRS_TYPE_SELECT = 2,
540 ACPI_IVRS_TYPE_START = 3,
541 ACPI_IVRS_TYPE_END = 4,
542
543 /* 8-byte device entries */
544
545 ACPI_IVRS_TYPE_PAD8 = 64,
546 ACPI_IVRS_TYPE_NOT_USED = 65,
547 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */
548 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */
549 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */
550 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */
551 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */
552};
553
554/* Values for Data field above */
555
556#define ACPI_IVHD_INIT_PASS (1)
557#define ACPI_IVHD_EINT_PASS (1<<1)
558#define ACPI_IVHD_NMI_PASS (1<<2)
559#define ACPI_IVHD_SYSTEM_MGMT (3<<4)
560#define ACPI_IVHD_LINT0_PASS (1<<6)
561#define ACPI_IVHD_LINT1_PASS (1<<7)
562
563/* Types 0-4: 4-byte device entry */
564
565struct acpi_ivrs_device4 {
566 struct acpi_ivrs_de_header header;
567};
568
569/* Types 66-67: 8-byte device entry */
570
571struct acpi_ivrs_device8a {
572 struct acpi_ivrs_de_header header;
573 u8 reserved1;
574 u16 used_id;
575 u8 reserved2;
576};
577
578/* Types 70-71: 8-byte device entry */
579
580struct acpi_ivrs_device8b {
581 struct acpi_ivrs_de_header header;
582 u32 extended_data;
583};
584
585/* Values for extended_data above */
586
587#define ACPI_IVHD_ATS_DISABLED (1<<31)
588
589/* Type 72: 8-byte device entry */
590
591struct acpi_ivrs_device8c {
592 struct acpi_ivrs_de_header header;
593 u8 handle;
594 u16 used_id;
595 u8 variety;
596};
597
598/* Values for Variety field above */
599
600#define ACPI_IVHD_IOAPIC 1
601#define ACPI_IVHD_HPET 2
602
603/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
604
605struct acpi_ivrs_memory {
606 struct acpi_ivrs_header header;
607 u16 aux_data;
608 u64 reserved;
609 u64 start_address;
610 u64 memory_length;
611};
612
613/*******************************************************************************
614 *
399 * MCFG - PCI Memory Mapped Configuration table and sub-table 615 * MCFG - PCI Memory Mapped Configuration table and sub-table
616 * Version 1
617 *
618 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
400 * 619 *
401 ******************************************************************************/ 620 ******************************************************************************/
402 621
@@ -418,6 +637,10 @@ struct acpi_mcfg_allocation {
418/******************************************************************************* 637/*******************************************************************************
419 * 638 *
420 * SPCR - Serial Port Console Redirection table 639 * SPCR - Serial Port Console Redirection table
640 * Version 1
641 *
642 * Conforms to "Serial Port Console Redirection Table",
643 * Version 1.00, January 11, 2002
421 * 644 *
422 ******************************************************************************/ 645 ******************************************************************************/
423 646
@@ -445,16 +668,25 @@ struct acpi_table_spcr {
445 u32 reserved2; 668 u32 reserved2;
446}; 669};
447 670
671/* Masks for pci_flags field above */
672
673#define ACPI_SPCR_DO_NOT_DISABLE (1)
674
448/******************************************************************************* 675/*******************************************************************************
449 * 676 *
450 * SPMI - Server Platform Management Interface table 677 * SPMI - Server Platform Management Interface table
678 * Version 5
679 *
680 * Conforms to "Intelligent Platform Management Interface Specification
681 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
682 * June 12, 2009 markup.
451 * 683 *
452 ******************************************************************************/ 684 ******************************************************************************/
453 685
454struct acpi_table_spmi { 686struct acpi_table_spmi {
455 struct acpi_table_header header; /* Common ACPI table header */ 687 struct acpi_table_header header; /* Common ACPI table header */
456 u8 reserved;
457 u8 interface_type; 688 u8 interface_type;
689 u8 reserved; /* Must be 1 */
458 u16 spec_revision; /* Version of IPMI */ 690 u16 spec_revision; /* Version of IPMI */
459 u8 interrupt_type; 691 u8 interrupt_type;
460 u8 gpe_number; /* GPE assigned */ 692 u8 gpe_number; /* GPE assigned */
@@ -466,11 +698,27 @@ struct acpi_table_spmi {
466 u8 pci_bus; 698 u8 pci_bus;
467 u8 pci_device; 699 u8 pci_device;
468 u8 pci_function; 700 u8 pci_function;
701 u8 reserved2;
702};
703
704/* Values for interface_type above */
705
706enum acpi_spmi_interface_types {
707 ACPI_SPMI_NOT_USED = 0,
708 ACPI_SPMI_KEYBOARD = 1,
709 ACPI_SPMI_SMI = 2,
710 ACPI_SPMI_BLOCK_TRANSFER = 3,
711 ACPI_SPMI_SMBUS = 4,
712 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */
469}; 713};
470 714
471/******************************************************************************* 715/*******************************************************************************
472 * 716 *
473 * TCPA - Trusted Computing Platform Alliance table 717 * TCPA - Trusted Computing Platform Alliance table
718 * Version 1
719 *
720 * Conforms to "TCG PC Specific Implementation Specification",
721 * Version 1.1, August 18, 2003
474 * 722 *
475 ******************************************************************************/ 723 ******************************************************************************/
476 724
@@ -484,6 +732,10 @@ struct acpi_table_tcpa {
484/******************************************************************************* 732/*******************************************************************************
485 * 733 *
486 * UEFI - UEFI Boot optimization Table 734 * UEFI - UEFI Boot optimization Table
735 * Version 1
736 *
737 * Conforms to "Unified Extensible Firmware Interface Specification",
738 * Version 2.3, May 8, 2009
487 * 739 *
488 ******************************************************************************/ 740 ******************************************************************************/
489 741
@@ -491,12 +743,34 @@ struct acpi_table_uefi {
491 struct acpi_table_header header; /* Common ACPI table header */ 743 struct acpi_table_header header; /* Common ACPI table header */
492 u8 identifier[16]; /* UUID identifier */ 744 u8 identifier[16]; /* UUID identifier */
493 u16 data_offset; /* Offset of remaining data in table */ 745 u16 data_offset; /* Offset of remaining data in table */
494 u8 data;
495}; 746};
496 747
497/******************************************************************************* 748/*******************************************************************************
498 * 749 *
750 * WAET - Windows ACPI Emulated devices Table
751 * Version 1
752 *
753 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
754 *
755 ******************************************************************************/
756
757struct acpi_table_waet {
758 struct acpi_table_header header; /* Common ACPI table header */
759 u32 flags;
760};
761
762/* Masks for Flags field above */
763
764#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */
765#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */
766
767/*******************************************************************************
768 *
499 * WDAT - Watchdog Action Table 769 * WDAT - Watchdog Action Table
770 * Version 1
771 *
772 * Conforms to "Hardware Watchdog Timers Design Specification",
773 * Copyright 2006 Microsoft Corporation.
500 * 774 *
501 ******************************************************************************/ 775 ******************************************************************************/
502 776
@@ -516,10 +790,20 @@ struct acpi_table_wdat {
516 u32 entries; /* Number of watchdog entries that follow */ 790 u32 entries; /* Number of watchdog entries that follow */
517}; 791};
518 792
793/* Masks for Flags field above */
794
795#define ACPI_WDAT_ENABLED (1)
796#define ACPI_WDAT_STOPPED 0x80
797
519/* WDAT Instruction Entries (actions) */ 798/* WDAT Instruction Entries (actions) */
520 799
521struct acpi_wdat_entry { 800struct acpi_wdat_entry {
522 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 801 u8 action;
802 u8 instruction;
803 u16 reserved;
804 struct acpi_generic_address register_region;
805 u32 value; /* Value used with Read/Write register */
806 u32 mask; /* Bitmask required for this register instruction */
523}; 807};
524 808
525/* Values for Action field above */ 809/* Values for Action field above */
@@ -556,28 +840,27 @@ enum acpi_wdat_instructions {
556/******************************************************************************* 840/*******************************************************************************
557 * 841 *
558 * WDRT - Watchdog Resource Table 842 * WDRT - Watchdog Resource Table
843 * Version 1
844 *
845 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
846 * Version 1.01, August 28, 2006
559 * 847 *
560 ******************************************************************************/ 848 ******************************************************************************/
561 849
562struct acpi_table_wdrt { 850struct acpi_table_wdrt {
563 struct acpi_table_header header; /* Common ACPI table header */ 851 struct acpi_table_header header; /* Common ACPI table header */
564 u32 header_length; /* Watchdog Header Length */ 852 struct acpi_generic_address control_register;
565 u8 pci_segment; /* PCI Segment number */ 853 struct acpi_generic_address count_register;
854 u16 pci_device_id;
855 u16 pci_vendor_id;
566 u8 pci_bus; /* PCI Bus number */ 856 u8 pci_bus; /* PCI Bus number */
567 u8 pci_device; /* PCI Device number */ 857 u8 pci_device; /* PCI Device number */
568 u8 pci_function; /* PCI Function number */ 858 u8 pci_function; /* PCI Function number */
569 u32 timer_period; /* Period of one timer count (msec) */ 859 u8 pci_segment; /* PCI Segment number */
570 u32 max_count; /* Maximum counter value supported */ 860 u16 max_count; /* Maximum counter value supported */
571 u32 min_count; /* Minimum counter value */ 861 u8 units;
572 u8 flags;
573 u8 reserved[3];
574 u32 entries; /* Number of watchdog entries that follow */
575}; 862};
576 863
577/* Flags */
578
579#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */
580
581/* Reset to default packing */ 864/* Reset to default packing */
582 865
583#pragma pack() 866#pragma pack()