Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenactbl1.h
Go to the documentation of this file.
00001 /****************************************************************************** 00002 * 00003 * Name: actbl1.h - Additional ACPI table definitions 00004 * 00005 *****************************************************************************/ 00006 00007 /****************************************************************************** 00008 * 00009 * 1. Copyright Notice 00010 * 00011 * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp. 00012 * All rights reserved. 00013 * 00014 * 2. License 00015 * 00016 * 2.1. This is your license from Intel Corp. under its intellectual property 00017 * rights. You may have additional license terms from the party that provided 00018 * you this software, covering your right to use that party's intellectual 00019 * property rights. 00020 * 00021 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 00022 * copy of the source code appearing in this file ("Covered Code") an 00023 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 00024 * base code distributed originally by Intel ("Original Intel Code") to copy, 00025 * make derivatives, distribute, use and display any portion of the Covered 00026 * Code in any form, with the right to sublicense such rights; and 00027 * 00028 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 00029 * license (with the right to sublicense), under only those claims of Intel 00030 * patents that are infringed by the Original Intel Code, to make, use, sell, 00031 * offer to sell, and import the Covered Code and derivative works thereof 00032 * solely to the minimum extent necessary to exercise the above copyright 00033 * license, and in no event shall the patent license extend to any additions 00034 * to or modifications of the Original Intel Code. No other license or right 00035 * is granted directly or by implication, estoppel or otherwise; 00036 * 00037 * The above copyright and patent license is granted only if the following 00038 * conditions are met: 00039 * 00040 * 3. Conditions 00041 * 00042 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 00043 * Redistribution of source code of any substantial portion of the Covered 00044 * Code or modification with rights to further distribute source must include 00045 * the above Copyright Notice, the above License, this list of Conditions, 00046 * and the following Disclaimer and Export Compliance provision. In addition, 00047 * Licensee must cause all Covered Code to which Licensee contributes to 00048 * contain a file documenting the changes Licensee made to create that Covered 00049 * Code and the date of any change. Licensee must include in that file the 00050 * documentation of any changes made by any predecessor Licensee. Licensee 00051 * must include a prominent statement that the modification is derived, 00052 * directly or indirectly, from Original Intel Code. 00053 * 00054 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 00055 * Redistribution of source code of any substantial portion of the Covered 00056 * Code or modification without rights to further distribute source must 00057 * include the following Disclaimer and Export Compliance provision in the 00058 * documentation and/or other materials provided with distribution. In 00059 * addition, Licensee may not authorize further sublicense of source of any 00060 * portion of the Covered Code, and must include terms to the effect that the 00061 * license from Licensee to its licensee is limited to the intellectual 00062 * property embodied in the software Licensee provides to its licensee, and 00063 * not to intellectual property embodied in modifications its licensee may 00064 * make. 00065 * 00066 * 3.3. Redistribution of Executable. Redistribution in executable form of any 00067 * substantial portion of the Covered Code or modification must reproduce the 00068 * above Copyright Notice, and the following Disclaimer and Export Compliance 00069 * provision in the documentation and/or other materials provided with the 00070 * distribution. 00071 * 00072 * 3.4. Intel retains all right, title, and interest in and to the Original 00073 * Intel Code. 00074 * 00075 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 00076 * Intel shall be used in advertising or otherwise to promote the sale, use or 00077 * other dealings in products derived from or relating to the Covered Code 00078 * without prior written authorization from Intel. 00079 * 00080 * 4. Disclaimer and Export Compliance 00081 * 00082 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 00083 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 00084 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 00085 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 00086 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 00087 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 00088 * PARTICULAR PURPOSE. 00089 * 00090 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 00091 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 00092 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 00093 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 00094 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 00095 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 00096 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 00097 * LIMITED REMEDY. 00098 * 00099 * 4.3. Licensee shall not export, either directly or indirectly, any of this 00100 * software or system incorporating such software without first obtaining any 00101 * required license or other approval from the U. S. Department of Commerce or 00102 * any other agency or department of the United States Government. In the 00103 * event Licensee exports any such software from the United States or 00104 * re-exports any such software from a foreign destination, Licensee shall 00105 * ensure that the distribution and export/re-export of the software is in 00106 * compliance with all laws, regulations, orders, or other restrictions of the 00107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 00108 * any of its subsidiaries will export/re-export any technical data, process, 00109 * software, or service, directly or indirectly, to any country for which the 00110 * United States government or any agency thereof requires an export license, 00111 * other governmental approval, or letter of assurance, without first obtaining 00112 * such license, approval or letter. 00113 * 00114 *****************************************************************************/ 00115 00116 #ifndef __ACTBL1_H__ 00117 #define __ACTBL1_H__ 00118 00119 00120 /******************************************************************************* 00121 * 00122 * Additional ACPI Tables (1) 00123 * 00124 * These tables are not consumed directly by the ACPICA subsystem, but are 00125 * included here to support device drivers and the AML disassembler. 00126 * 00127 * The tables in this file are fully defined within the ACPI specification. 00128 * 00129 ******************************************************************************/ 00130 00131 00132 /* 00133 * Values for description table header signatures for tables defined in this 00134 * file. Useful because they make it more difficult to inadvertently type in 00135 * the wrong signature. 00136 */ 00137 #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 00138 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 00139 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 00140 #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 00141 #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 00142 #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 00143 #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 00144 #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ 00145 #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 00146 #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 00147 #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 00148 00149 00150 /* 00151 * All tables must be byte-packed to match the ACPI specification, since 00152 * the tables are provided by the system BIOS. 00153 */ 00154 #pragma pack(1) 00155 00156 /* 00157 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 00158 * This is the only type that is even remotely portable. Anything else is not 00159 * portable, so do not use any other bitfield types. 00160 */ 00161 00162 00163 /******************************************************************************* 00164 * 00165 * Common subtable headers 00166 * 00167 ******************************************************************************/ 00168 00169 /* Generic subtable header (used in MADT, SRAT, etc.) */ 00170 00171 typedef struct acpi_subtable_header 00172 { 00173 UINT8 Type; 00174 UINT8 Length; 00175 00176 } ACPI_SUBTABLE_HEADER; 00177 00178 00179 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 00180 00181 typedef struct acpi_whea_header 00182 { 00183 UINT8 Action; 00184 UINT8 Instruction; 00185 UINT8 Flags; 00186 UINT8 Reserved; 00187 ACPI_GENERIC_ADDRESS RegisterRegion; 00188 UINT64 Value; /* Value used with Read/Write register */ 00189 UINT64 Mask; /* Bitmask required for this register instruction */ 00190 00191 } ACPI_WHEA_HEADER; 00192 00193 00194 /******************************************************************************* 00195 * 00196 * BERT - Boot Error Record Table (ACPI 4.0) 00197 * Version 1 00198 * 00199 ******************************************************************************/ 00200 00201 typedef struct acpi_table_bert 00202 { 00203 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00204 UINT32 RegionLength; /* Length of the boot error region */ 00205 UINT64 Address; /* Physical addresss of the error region */ 00206 00207 } ACPI_TABLE_BERT; 00208 00209 00210 /* Boot Error Region (not a subtable, pointed to by Address field above) */ 00211 00212 typedef struct acpi_bert_region 00213 { 00214 UINT32 BlockStatus; /* Type of error information */ 00215 UINT32 RawDataOffset; /* Offset to raw error data */ 00216 UINT32 RawDataLength; /* Length of raw error data */ 00217 UINT32 DataLength; /* Length of generic error data */ 00218 UINT32 ErrorSeverity; /* Severity code */ 00219 00220 } ACPI_BERT_REGION; 00221 00222 /* Values for BlockStatus flags above */ 00223 00224 #define ACPI_BERT_UNCORRECTABLE (1) 00225 #define ACPI_BERT_CORRECTABLE (1<<1) 00226 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 00227 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 00228 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 00229 00230 /* Values for ErrorSeverity above */ 00231 00232 enum AcpiBertErrorSeverity 00233 { 00234 ACPI_BERT_ERROR_CORRECTABLE = 0, 00235 ACPI_BERT_ERROR_FATAL = 1, 00236 ACPI_BERT_ERROR_CORRECTED = 2, 00237 ACPI_BERT_ERROR_NONE = 3, 00238 ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 00239 }; 00240 00241 /* 00242 * Note: The generic error data that follows the ErrorSeverity field above 00243 * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below 00244 */ 00245 00246 00247 /******************************************************************************* 00248 * 00249 * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 00250 * Version 1 00251 * 00252 ******************************************************************************/ 00253 00254 typedef struct acpi_table_cpep 00255 { 00256 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00257 UINT64 Reserved; 00258 00259 } ACPI_TABLE_CPEP; 00260 00261 00262 /* Subtable */ 00263 00264 typedef struct acpi_cpep_polling 00265 { 00266 ACPI_SUBTABLE_HEADER Header; 00267 UINT8 Id; /* Processor ID */ 00268 UINT8 Eid; /* Processor EID */ 00269 UINT32 Interval; /* Polling interval (msec) */ 00270 00271 } ACPI_CPEP_POLLING; 00272 00273 00274 /******************************************************************************* 00275 * 00276 * ECDT - Embedded Controller Boot Resources Table 00277 * Version 1 00278 * 00279 ******************************************************************************/ 00280 00281 typedef struct acpi_table_ecdt 00282 { 00283 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00284 ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 00285 ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 00286 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 00287 UINT8 Gpe; /* The GPE for the EC */ 00288 UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 00289 00290 } ACPI_TABLE_ECDT; 00291 00292 00293 /******************************************************************************* 00294 * 00295 * EINJ - Error Injection Table (ACPI 4.0) 00296 * Version 1 00297 * 00298 ******************************************************************************/ 00299 00300 typedef struct acpi_table_einj 00301 { 00302 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00303 UINT32 HeaderLength; 00304 UINT8 Flags; 00305 UINT8 Reserved[3]; 00306 UINT32 Entries; 00307 00308 } ACPI_TABLE_EINJ; 00309 00310 00311 /* EINJ Injection Instruction Entries (actions) */ 00312 00313 typedef struct acpi_einj_entry 00314 { 00315 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 00316 00317 } ACPI_EINJ_ENTRY; 00318 00319 /* Masks for Flags field above */ 00320 00321 #define ACPI_EINJ_PRESERVE (1) 00322 00323 /* Values for Action field above */ 00324 00325 enum AcpiEinjActions 00326 { 00327 ACPI_EINJ_BEGIN_OPERATION = 0, 00328 ACPI_EINJ_GET_TRIGGER_TABLE = 1, 00329 ACPI_EINJ_SET_ERROR_TYPE = 2, 00330 ACPI_EINJ_GET_ERROR_TYPE = 3, 00331 ACPI_EINJ_END_OPERATION = 4, 00332 ACPI_EINJ_EXECUTE_OPERATION = 5, 00333 ACPI_EINJ_CHECK_BUSY_STATUS = 6, 00334 ACPI_EINJ_GET_COMMAND_STATUS = 7, 00335 ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 00336 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 00337 }; 00338 00339 /* Values for Instruction field above */ 00340 00341 enum AcpiEinjInstructions 00342 { 00343 ACPI_EINJ_READ_REGISTER = 0, 00344 ACPI_EINJ_READ_REGISTER_VALUE = 1, 00345 ACPI_EINJ_WRITE_REGISTER = 2, 00346 ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 00347 ACPI_EINJ_NOOP = 4, 00348 ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 00349 }; 00350 00351 00352 /* EINJ Trigger Error Action Table */ 00353 00354 typedef struct acpi_einj_trigger 00355 { 00356 UINT32 HeaderSize; 00357 UINT32 Revision; 00358 UINT32 TableSize; 00359 UINT32 EntryCount; 00360 00361 } ACPI_EINJ_TRIGGER; 00362 00363 /* Command status return values */ 00364 00365 enum AcpiEinjCommandStatus 00366 { 00367 ACPI_EINJ_SUCCESS = 0, 00368 ACPI_EINJ_FAILURE = 1, 00369 ACPI_EINJ_INVALID_ACCESS = 2, 00370 ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 00371 }; 00372 00373 00374 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 00375 00376 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 00377 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 00378 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 00379 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 00380 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 00381 #define ACPI_EINJ_MEMORY_FATAL (1<<5) 00382 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 00383 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 00384 #define ACPI_EINJ_PCIX_FATAL (1<<8) 00385 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 00386 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 00387 #define ACPI_EINJ_PLATFORM_FATAL (1<<11) 00388 00389 00390 /******************************************************************************* 00391 * 00392 * ERST - Error Record Serialization Table (ACPI 4.0) 00393 * Version 1 00394 * 00395 ******************************************************************************/ 00396 00397 typedef struct acpi_table_erst 00398 { 00399 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00400 UINT32 HeaderLength; 00401 UINT32 Reserved; 00402 UINT32 Entries; 00403 00404 } ACPI_TABLE_ERST; 00405 00406 00407 /* ERST Serialization Entries (actions) */ 00408 00409 typedef struct acpi_erst_entry 00410 { 00411 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 00412 00413 } ACPI_ERST_ENTRY; 00414 00415 /* Masks for Flags field above */ 00416 00417 #define ACPI_ERST_PRESERVE (1) 00418 00419 /* Values for Action field above */ 00420 00421 enum AcpiErstActions 00422 { 00423 ACPI_ERST_BEGIN_WRITE = 0, 00424 ACPI_ERST_BEGIN_READ = 1, 00425 ACPI_ERST_BEGIN_CLEAR = 2, 00426 ACPI_ERST_END = 3, 00427 ACPI_ERST_SET_RECORD_OFFSET = 4, 00428 ACPI_ERST_EXECUTE_OPERATION = 5, 00429 ACPI_ERST_CHECK_BUSY_STATUS = 6, 00430 ACPI_ERST_GET_COMMAND_STATUS = 7, 00431 ACPI_ERST_GET_RECORD_ID = 8, 00432 ACPI_ERST_SET_RECORD_ID = 9, 00433 ACPI_ERST_GET_RECORD_COUNT = 10, 00434 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 00435 ACPI_ERST_NOT_USED = 12, 00436 ACPI_ERST_GET_ERROR_RANGE = 13, 00437 ACPI_ERST_GET_ERROR_LENGTH = 14, 00438 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 00439 ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 00440 }; 00441 00442 /* Values for Instruction field above */ 00443 00444 enum AcpiErstInstructions 00445 { 00446 ACPI_ERST_READ_REGISTER = 0, 00447 ACPI_ERST_READ_REGISTER_VALUE = 1, 00448 ACPI_ERST_WRITE_REGISTER = 2, 00449 ACPI_ERST_WRITE_REGISTER_VALUE = 3, 00450 ACPI_ERST_NOOP = 4, 00451 ACPI_ERST_LOAD_VAR1 = 5, 00452 ACPI_ERST_LOAD_VAR2 = 6, 00453 ACPI_ERST_STORE_VAR1 = 7, 00454 ACPI_ERST_ADD = 8, 00455 ACPI_ERST_SUBTRACT = 9, 00456 ACPI_ERST_ADD_VALUE = 10, 00457 ACPI_ERST_SUBTRACT_VALUE = 11, 00458 ACPI_ERST_STALL = 12, 00459 ACPI_ERST_STALL_WHILE_TRUE = 13, 00460 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 00461 ACPI_ERST_GOTO = 15, 00462 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 00463 ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 00464 ACPI_ERST_MOVE_DATA = 18, 00465 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 00466 }; 00467 00468 /* Command status return values */ 00469 00470 enum AcpiErstCommandStatus 00471 { 00472 ACPI_ERST_SUCESS = 0, 00473 ACPI_ERST_NO_SPACE = 1, 00474 ACPI_ERST_NOT_AVAILABLE = 2, 00475 ACPI_ERST_FAILURE = 3, 00476 ACPI_ERST_RECORD_EMPTY = 4, 00477 ACPI_ERST_NOT_FOUND = 5, 00478 ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 00479 }; 00480 00481 00482 /* Error Record Serialization Information */ 00483 00484 typedef struct acpi_erst_info 00485 { 00486 UINT16 Signature; /* Should be "ER" */ 00487 UINT8 Data[48]; 00488 00489 } ACPI_ERST_INFO; 00490 00491 00492 /******************************************************************************* 00493 * 00494 * HEST - Hardware Error Source Table (ACPI 4.0) 00495 * Version 1 00496 * 00497 ******************************************************************************/ 00498 00499 typedef struct acpi_table_hest 00500 { 00501 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00502 UINT32 ErrorSourceCount; 00503 00504 } ACPI_TABLE_HEST; 00505 00506 00507 /* HEST subtable header */ 00508 00509 typedef struct acpi_hest_header 00510 { 00511 UINT16 Type; 00512 UINT16 SourceId; 00513 00514 } ACPI_HEST_HEADER; 00515 00516 00517 /* Values for Type field above for subtables */ 00518 00519 enum AcpiHestTypes 00520 { 00521 ACPI_HEST_TYPE_IA32_CHECK = 0, 00522 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 00523 ACPI_HEST_TYPE_IA32_NMI = 2, 00524 ACPI_HEST_TYPE_NOT_USED3 = 3, 00525 ACPI_HEST_TYPE_NOT_USED4 = 4, 00526 ACPI_HEST_TYPE_NOT_USED5 = 5, 00527 ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 00528 ACPI_HEST_TYPE_AER_ENDPOINT = 7, 00529 ACPI_HEST_TYPE_AER_BRIDGE = 8, 00530 ACPI_HEST_TYPE_GENERIC_ERROR = 9, 00531 ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 00532 }; 00533 00534 00535 /* 00536 * HEST substructures contained in subtables 00537 */ 00538 00539 /* 00540 * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and 00541 * ACPI_HEST_IA_CORRECTED structures. 00542 */ 00543 typedef struct acpi_hest_ia_error_bank 00544 { 00545 UINT8 BankNumber; 00546 UINT8 ClearStatusOnInit; 00547 UINT8 StatusFormat; 00548 UINT8 Reserved; 00549 UINT32 ControlRegister; 00550 UINT64 ControlData; 00551 UINT32 StatusRegister; 00552 UINT32 AddressRegister; 00553 UINT32 MiscRegister; 00554 00555 } ACPI_HEST_IA_ERROR_BANK; 00556 00557 00558 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 00559 00560 typedef struct acpi_hest_aer_common 00561 { 00562 UINT16 Reserved1; 00563 UINT8 Flags; 00564 UINT8 Enabled; 00565 UINT32 RecordsToPreallocate; 00566 UINT32 MaxSectionsPerRecord; 00567 UINT32 Bus; 00568 UINT16 Device; 00569 UINT16 Function; 00570 UINT16 DeviceControl; 00571 UINT16 Reserved2; 00572 UINT32 UncorrectableMask; 00573 UINT32 UncorrectableSeverity; 00574 UINT32 CorrectableMask; 00575 UINT32 AdvancedCapabilities; 00576 00577 } ACPI_HEST_AER_COMMON; 00578 00579 /* Masks for HEST Flags fields */ 00580 00581 #define ACPI_HEST_FIRMWARE_FIRST (1) 00582 #define ACPI_HEST_GLOBAL (1<<1) 00583 00584 00585 /* Hardware Error Notification */ 00586 00587 typedef struct acpi_hest_notify 00588 { 00589 UINT8 Type; 00590 UINT8 Length; 00591 UINT16 ConfigWriteEnable; 00592 UINT32 PollInterval; 00593 UINT32 Vector; 00594 UINT32 PollingThresholdValue; 00595 UINT32 PollingThresholdWindow; 00596 UINT32 ErrorThresholdValue; 00597 UINT32 ErrorThresholdWindow; 00598 00599 } ACPI_HEST_NOTIFY; 00600 00601 /* Values for Notify Type field above */ 00602 00603 enum AcpiHestNotifyTypes 00604 { 00605 ACPI_HEST_NOTIFY_POLLED = 0, 00606 ACPI_HEST_NOTIFY_EXTERNAL = 1, 00607 ACPI_HEST_NOTIFY_LOCAL = 2, 00608 ACPI_HEST_NOTIFY_SCI = 3, 00609 ACPI_HEST_NOTIFY_NMI = 4, 00610 ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 00611 }; 00612 00613 /* Values for ConfigWriteEnable bitfield above */ 00614 00615 #define ACPI_HEST_TYPE (1) 00616 #define ACPI_HEST_POLL_INTERVAL (1<<1) 00617 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 00618 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 00619 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 00620 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 00621 00622 00623 /* 00624 * HEST subtables 00625 */ 00626 00627 /* 0: IA32 Machine Check Exception */ 00628 00629 typedef struct acpi_hest_ia_machine_check 00630 { 00631 ACPI_HEST_HEADER Header; 00632 UINT16 Reserved1; 00633 UINT8 Flags; 00634 UINT8 Enabled; 00635 UINT32 RecordsToPreallocate; 00636 UINT32 MaxSectionsPerRecord; 00637 UINT64 GlobalCapabilityData; 00638 UINT64 GlobalControlData; 00639 UINT8 NumHardwareBanks; 00640 UINT8 Reserved3[7]; 00641 00642 } ACPI_HEST_IA_MACHINE_CHECK; 00643 00644 00645 /* 1: IA32 Corrected Machine Check */ 00646 00647 typedef struct acpi_hest_ia_corrected 00648 { 00649 ACPI_HEST_HEADER Header; 00650 UINT16 Reserved1; 00651 UINT8 Flags; 00652 UINT8 Enabled; 00653 UINT32 RecordsToPreallocate; 00654 UINT32 MaxSectionsPerRecord; 00655 ACPI_HEST_NOTIFY Notify; 00656 UINT8 NumHardwareBanks; 00657 UINT8 Reserved2[3]; 00658 00659 } ACPI_HEST_IA_CORRECTED; 00660 00661 00662 /* 2: IA32 Non-Maskable Interrupt */ 00663 00664 typedef struct acpi_hest_ia_nmi 00665 { 00666 ACPI_HEST_HEADER Header; 00667 UINT32 Reserved; 00668 UINT32 RecordsToPreallocate; 00669 UINT32 MaxSectionsPerRecord; 00670 UINT32 MaxRawDataLength; 00671 00672 } ACPI_HEST_IA_NMI; 00673 00674 00675 /* 3,4,5: Not used */ 00676 00677 /* 6: PCI Express Root Port AER */ 00678 00679 typedef struct acpi_hest_aer_root 00680 { 00681 ACPI_HEST_HEADER Header; 00682 ACPI_HEST_AER_COMMON Aer; 00683 UINT32 RootErrorCommand; 00684 00685 } ACPI_HEST_AER_ROOT; 00686 00687 00688 /* 7: PCI Express AER (AER Endpoint) */ 00689 00690 typedef struct acpi_hest_aer 00691 { 00692 ACPI_HEST_HEADER Header; 00693 ACPI_HEST_AER_COMMON Aer; 00694 00695 } ACPI_HEST_AER; 00696 00697 00698 /* 8: PCI Express/PCI-X Bridge AER */ 00699 00700 typedef struct acpi_hest_aer_bridge 00701 { 00702 ACPI_HEST_HEADER Header; 00703 ACPI_HEST_AER_COMMON Aer; 00704 UINT32 UncorrectableMask2; 00705 UINT32 UncorrectableSeverity2; 00706 UINT32 AdvancedCapabilities2; 00707 00708 } ACPI_HEST_AER_BRIDGE; 00709 00710 00711 /* 9: Generic Hardware Error Source */ 00712 00713 typedef struct acpi_hest_generic 00714 { 00715 ACPI_HEST_HEADER Header; 00716 UINT16 RelatedSourceId; 00717 UINT8 Reserved; 00718 UINT8 Enabled; 00719 UINT32 RecordsToPreallocate; 00720 UINT32 MaxSectionsPerRecord; 00721 UINT32 MaxRawDataLength; 00722 ACPI_GENERIC_ADDRESS ErrorStatusAddress; 00723 ACPI_HEST_NOTIFY Notify; 00724 UINT32 ErrorBlockLength; 00725 00726 } ACPI_HEST_GENERIC; 00727 00728 00729 /* Generic Error Status block */ 00730 00731 typedef struct acpi_hest_generic_status 00732 { 00733 UINT32 BlockStatus; 00734 UINT32 RawDataOffset; 00735 UINT32 RawDataLength; 00736 UINT32 DataLength; 00737 UINT32 ErrorSeverity; 00738 00739 } ACPI_HEST_GENERIC_STATUS; 00740 00741 /* Values for BlockStatus flags above */ 00742 00743 #define ACPI_HEST_UNCORRECTABLE (1) 00744 #define ACPI_HEST_CORRECTABLE (1<<1) 00745 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 00746 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 00747 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 00748 00749 00750 /* Generic Error Data entry */ 00751 00752 typedef struct acpi_hest_generic_data 00753 { 00754 UINT8 SectionType[16]; 00755 UINT32 ErrorSeverity; 00756 UINT16 Revision; 00757 UINT8 ValidationBits; 00758 UINT8 Flags; 00759 UINT32 ErrorDataLength; 00760 UINT8 FruId[16]; 00761 UINT8 FruText[20]; 00762 00763 } ACPI_HEST_GENERIC_DATA; 00764 00765 00766 /******************************************************************************* 00767 * 00768 * MADT - Multiple APIC Description Table 00769 * Version 3 00770 * 00771 ******************************************************************************/ 00772 00773 typedef struct acpi_table_madt 00774 { 00775 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00776 UINT32 Address; /* Physical address of local APIC */ 00777 UINT32 Flags; 00778 00779 } ACPI_TABLE_MADT; 00780 00781 /* Masks for Flags field above */ 00782 00783 #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 00784 00785 /* Values for PCATCompat flag */ 00786 00787 #define ACPI_MADT_DUAL_PIC 0 00788 #define ACPI_MADT_MULTIPLE_APIC 1 00789 00790 00791 /* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */ 00792 00793 enum AcpiMadtType 00794 { 00795 ACPI_MADT_TYPE_LOCAL_APIC = 0, 00796 ACPI_MADT_TYPE_IO_APIC = 1, 00797 ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 00798 ACPI_MADT_TYPE_NMI_SOURCE = 3, 00799 ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 00800 ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 00801 ACPI_MADT_TYPE_IO_SAPIC = 6, 00802 ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 00803 ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 00804 ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 00805 ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 00806 ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ 00807 }; 00808 00809 00810 /* 00811 * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 00812 */ 00813 00814 /* 0: Processor Local APIC */ 00815 00816 typedef struct acpi_madt_local_apic 00817 { 00818 ACPI_SUBTABLE_HEADER Header; 00819 UINT8 ProcessorId; /* ACPI processor id */ 00820 UINT8 Id; /* Processor's local APIC id */ 00821 UINT32 LapicFlags; 00822 00823 } ACPI_MADT_LOCAL_APIC; 00824 00825 00826 /* 1: IO APIC */ 00827 00828 typedef struct acpi_madt_io_apic 00829 { 00830 ACPI_SUBTABLE_HEADER Header; 00831 UINT8 Id; /* I/O APIC ID */ 00832 UINT8 Reserved; /* Reserved - must be zero */ 00833 UINT32 Address; /* APIC physical address */ 00834 UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 00835 00836 } ACPI_MADT_IO_APIC; 00837 00838 00839 /* 2: Interrupt Override */ 00840 00841 typedef struct acpi_madt_interrupt_override 00842 { 00843 ACPI_SUBTABLE_HEADER Header; 00844 UINT8 Bus; /* 0 - ISA */ 00845 UINT8 SourceIrq; /* Interrupt source (IRQ) */ 00846 UINT32 GlobalIrq; /* Global system interrupt */ 00847 UINT16 IntiFlags; 00848 00849 } ACPI_MADT_INTERRUPT_OVERRIDE; 00850 00851 00852 /* 3: NMI Source */ 00853 00854 typedef struct acpi_madt_nmi_source 00855 { 00856 ACPI_SUBTABLE_HEADER Header; 00857 UINT16 IntiFlags; 00858 UINT32 GlobalIrq; /* Global system interrupt */ 00859 00860 } ACPI_MADT_NMI_SOURCE; 00861 00862 00863 /* 4: Local APIC NMI */ 00864 00865 typedef struct acpi_madt_local_apic_nmi 00866 { 00867 ACPI_SUBTABLE_HEADER Header; 00868 UINT8 ProcessorId; /* ACPI processor id */ 00869 UINT16 IntiFlags; 00870 UINT8 Lint; /* LINTn to which NMI is connected */ 00871 00872 } ACPI_MADT_LOCAL_APIC_NMI; 00873 00874 00875 /* 5: Address Override */ 00876 00877 typedef struct acpi_madt_local_apic_override 00878 { 00879 ACPI_SUBTABLE_HEADER Header; 00880 UINT16 Reserved; /* Reserved, must be zero */ 00881 UINT64 Address; /* APIC physical address */ 00882 00883 } ACPI_MADT_LOCAL_APIC_OVERRIDE; 00884 00885 00886 /* 6: I/O Sapic */ 00887 00888 typedef struct acpi_madt_io_sapic 00889 { 00890 ACPI_SUBTABLE_HEADER Header; 00891 UINT8 Id; /* I/O SAPIC ID */ 00892 UINT8 Reserved; /* Reserved, must be zero */ 00893 UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 00894 UINT64 Address; /* SAPIC physical address */ 00895 00896 } ACPI_MADT_IO_SAPIC; 00897 00898 00899 /* 7: Local Sapic */ 00900 00901 typedef struct acpi_madt_local_sapic 00902 { 00903 ACPI_SUBTABLE_HEADER Header; 00904 UINT8 ProcessorId; /* ACPI processor id */ 00905 UINT8 Id; /* SAPIC ID */ 00906 UINT8 Eid; /* SAPIC EID */ 00907 UINT8 Reserved[3]; /* Reserved, must be zero */ 00908 UINT32 LapicFlags; 00909 UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 00910 char UidString[1]; /* String UID - ACPI 3.0 */ 00911 00912 } ACPI_MADT_LOCAL_SAPIC; 00913 00914 00915 /* 8: Platform Interrupt Source */ 00916 00917 typedef struct acpi_madt_interrupt_source 00918 { 00919 ACPI_SUBTABLE_HEADER Header; 00920 UINT16 IntiFlags; 00921 UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 00922 UINT8 Id; /* Processor ID */ 00923 UINT8 Eid; /* Processor EID */ 00924 UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 00925 UINT32 GlobalIrq; /* Global system interrupt */ 00926 UINT32 Flags; /* Interrupt Source Flags */ 00927 00928 } ACPI_MADT_INTERRUPT_SOURCE; 00929 00930 /* Masks for Flags field above */ 00931 00932 #define ACPI_MADT_CPEI_OVERRIDE (1) 00933 00934 00935 /* 9: Processor Local X2APIC (ACPI 4.0) */ 00936 00937 typedef struct acpi_madt_local_x2apic 00938 { 00939 ACPI_SUBTABLE_HEADER Header; 00940 UINT16 Reserved; /* Reserved - must be zero */ 00941 UINT32 LocalApicId; /* Processor x2APIC ID */ 00942 UINT32 LapicFlags; 00943 UINT32 Uid; /* ACPI processor UID */ 00944 00945 } ACPI_MADT_LOCAL_X2APIC; 00946 00947 00948 /* 10: Local X2APIC NMI (ACPI 4.0) */ 00949 00950 typedef struct acpi_madt_local_x2apic_nmi 00951 { 00952 ACPI_SUBTABLE_HEADER Header; 00953 UINT16 IntiFlags; 00954 UINT32 Uid; /* ACPI processor UID */ 00955 UINT8 Lint; /* LINTn to which NMI is connected */ 00956 UINT8 Reserved[3]; /* Reserved - must be zero */ 00957 00958 } ACPI_MADT_LOCAL_X2APIC_NMI; 00959 00960 00961 /* 00962 * Common flags fields for MADT subtables 00963 */ 00964 00965 /* MADT Local APIC flags (LapicFlags) */ 00966 00967 #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 00968 00969 /* MADT MPS INTI flags (IntiFlags) */ 00970 00971 #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 00972 #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 00973 00974 /* Values for MPS INTI flags */ 00975 00976 #define ACPI_MADT_POLARITY_CONFORMS 0 00977 #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 00978 #define ACPI_MADT_POLARITY_RESERVED 2 00979 #define ACPI_MADT_POLARITY_ACTIVE_LOW 3 00980 00981 #define ACPI_MADT_TRIGGER_CONFORMS (0) 00982 #define ACPI_MADT_TRIGGER_EDGE (1<<2) 00983 #define ACPI_MADT_TRIGGER_RESERVED (2<<2) 00984 #define ACPI_MADT_TRIGGER_LEVEL (3<<2) 00985 00986 00987 /******************************************************************************* 00988 * 00989 * MSCT - Maximum System Characteristics Table (ACPI 4.0) 00990 * Version 1 00991 * 00992 ******************************************************************************/ 00993 00994 typedef struct acpi_table_msct 00995 { 00996 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 00997 UINT32 ProximityOffset; /* Location of proximity info struct(s) */ 00998 UINT32 MaxProximityDomains;/* Max number of proximity domains */ 00999 UINT32 MaxClockDomains; /* Max number of clock domains */ 01000 UINT64 MaxAddress; /* Max physical address in system */ 01001 01002 } ACPI_TABLE_MSCT; 01003 01004 01005 /* Subtable - Maximum Proximity Domain Information. Version 1 */ 01006 01007 typedef struct acpi_msct_proximity 01008 { 01009 UINT8 Revision; 01010 UINT8 Length; 01011 UINT32 RangeStart; /* Start of domain range */ 01012 UINT32 RangeEnd; /* End of domain range */ 01013 UINT32 ProcessorCapacity; 01014 UINT64 MemoryCapacity; /* In bytes */ 01015 01016 } ACPI_MSCT_PROXIMITY; 01017 01018 01019 /******************************************************************************* 01020 * 01021 * SBST - Smart Battery Specification Table 01022 * Version 1 01023 * 01024 ******************************************************************************/ 01025 01026 typedef struct acpi_table_sbst 01027 { 01028 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 01029 UINT32 WarningLevel; 01030 UINT32 LowLevel; 01031 UINT32 CriticalLevel; 01032 01033 } ACPI_TABLE_SBST; 01034 01035 01036 /******************************************************************************* 01037 * 01038 * SLIT - System Locality Distance Information Table 01039 * Version 1 01040 * 01041 ******************************************************************************/ 01042 01043 typedef struct acpi_table_slit 01044 { 01045 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 01046 UINT64 LocalityCount; 01047 UINT8 Entry[1]; /* Real size = localities^2 */ 01048 01049 } ACPI_TABLE_SLIT; 01050 01051 01052 /******************************************************************************* 01053 * 01054 * SRAT - System Resource Affinity Table 01055 * Version 3 01056 * 01057 ******************************************************************************/ 01058 01059 typedef struct acpi_table_srat 01060 { 01061 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 01062 UINT32 TableRevision; /* Must be value '1' */ 01063 UINT64 Reserved; /* Reserved, must be zero */ 01064 01065 } ACPI_TABLE_SRAT; 01066 01067 /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 01068 01069 enum AcpiSratType 01070 { 01071 ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 01072 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 01073 ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 01074 ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 01075 }; 01076 01077 /* 01078 * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 01079 */ 01080 01081 /* 0: Processor Local APIC/SAPIC Affinity */ 01082 01083 typedef struct acpi_srat_cpu_affinity 01084 { 01085 ACPI_SUBTABLE_HEADER Header; 01086 UINT8 ProximityDomainLo; 01087 UINT8 ApicId; 01088 UINT32 Flags; 01089 UINT8 LocalSapicEid; 01090 UINT8 ProximityDomainHi[3]; 01091 UINT32 Reserved; /* Reserved, must be zero */ 01092 01093 } ACPI_SRAT_CPU_AFFINITY; 01094 01095 /* Flags */ 01096 01097 #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 01098 01099 01100 /* 1: Memory Affinity */ 01101 01102 typedef struct acpi_srat_mem_affinity 01103 { 01104 ACPI_SUBTABLE_HEADER Header; 01105 UINT32 ProximityDomain; 01106 UINT16 Reserved; /* Reserved, must be zero */ 01107 UINT64 BaseAddress; 01108 UINT64 Length; 01109 UINT32 Reserved1; 01110 UINT32 Flags; 01111 UINT64 Reserved2; /* Reserved, must be zero */ 01112 01113 } ACPI_SRAT_MEM_AFFINITY; 01114 01115 /* Flags */ 01116 01117 #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 01118 #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 01119 #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 01120 01121 01122 /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 01123 01124 typedef struct acpi_srat_x2apic_cpu_affinity 01125 { 01126 ACPI_SUBTABLE_HEADER Header; 01127 UINT16 Reserved; /* Reserved, must be zero */ 01128 UINT32 ProximityDomain; 01129 UINT32 ApicId; 01130 UINT32 Flags; 01131 UINT32 ClockDomain; 01132 UINT32 Reserved2; 01133 01134 } ACPI_SRAT_X2APIC_CPU_AFFINITY; 01135 01136 /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 01137 01138 #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 01139 01140 01141 /* Reset to default packing */ 01142 01143 #pragma pack() 01144 01145 #endif /* __ACTBL1_H__ */ Generated on Sat May 26 2012 04:25:52 for ReactOS by
1.7.6.1
|