10Sstevel@tonic-gate /****************************************************************************** 20Sstevel@tonic-gate * 32623Smyers * Name: actbl1.h - Additional ACPI table definitions 40Sstevel@tonic-gate * 50Sstevel@tonic-gate *****************************************************************************/ 60Sstevel@tonic-gate 70Sstevel@tonic-gate /****************************************************************************** 80Sstevel@tonic-gate * 90Sstevel@tonic-gate * 1. Copyright Notice 100Sstevel@tonic-gate * 119980SDana.Myers@Sun.COM * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp. 120Sstevel@tonic-gate * All rights reserved. 130Sstevel@tonic-gate * 140Sstevel@tonic-gate * 2. License 150Sstevel@tonic-gate * 160Sstevel@tonic-gate * 2.1. This is your license from Intel Corp. under its intellectual property 170Sstevel@tonic-gate * rights. You may have additional license terms from the party that provided 180Sstevel@tonic-gate * you this software, covering your right to use that party's intellectual 190Sstevel@tonic-gate * property rights. 200Sstevel@tonic-gate * 210Sstevel@tonic-gate * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220Sstevel@tonic-gate * copy of the source code appearing in this file ("Covered Code") an 230Sstevel@tonic-gate * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240Sstevel@tonic-gate * base code distributed originally by Intel ("Original Intel Code") to copy, 250Sstevel@tonic-gate * make derivatives, distribute, use and display any portion of the Covered 260Sstevel@tonic-gate * Code in any form, with the right to sublicense such rights; and 270Sstevel@tonic-gate * 280Sstevel@tonic-gate * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290Sstevel@tonic-gate * license (with the right to sublicense), under only those claims of Intel 300Sstevel@tonic-gate * patents that are infringed by the Original Intel Code, to make, use, sell, 310Sstevel@tonic-gate * offer to sell, and import the Covered Code and derivative works thereof 320Sstevel@tonic-gate * solely to the minimum extent necessary to exercise the above copyright 330Sstevel@tonic-gate * license, and in no event shall the patent license extend to any additions 340Sstevel@tonic-gate * to or modifications of the Original Intel Code. No other license or right 350Sstevel@tonic-gate * is granted directly or by implication, estoppel or otherwise; 360Sstevel@tonic-gate * 370Sstevel@tonic-gate * The above copyright and patent license is granted only if the following 380Sstevel@tonic-gate * conditions are met: 390Sstevel@tonic-gate * 400Sstevel@tonic-gate * 3. Conditions 410Sstevel@tonic-gate * 420Sstevel@tonic-gate * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 440Sstevel@tonic-gate * Code or modification with rights to further distribute source must include 450Sstevel@tonic-gate * the above Copyright Notice, the above License, this list of Conditions, 460Sstevel@tonic-gate * and the following Disclaimer and Export Compliance provision. In addition, 470Sstevel@tonic-gate * Licensee must cause all Covered Code to which Licensee contributes to 480Sstevel@tonic-gate * contain a file documenting the changes Licensee made to create that Covered 490Sstevel@tonic-gate * Code and the date of any change. Licensee must include in that file the 500Sstevel@tonic-gate * documentation of any changes made by any predecessor Licensee. Licensee 510Sstevel@tonic-gate * must include a prominent statement that the modification is derived, 520Sstevel@tonic-gate * directly or indirectly, from Original Intel Code. 530Sstevel@tonic-gate * 540Sstevel@tonic-gate * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 560Sstevel@tonic-gate * Code or modification without rights to further distribute source must 570Sstevel@tonic-gate * include the following Disclaimer and Export Compliance provision in the 580Sstevel@tonic-gate * documentation and/or other materials provided with distribution. In 590Sstevel@tonic-gate * addition, Licensee may not authorize further sublicense of source of any 600Sstevel@tonic-gate * portion of the Covered Code, and must include terms to the effect that the 610Sstevel@tonic-gate * license from Licensee to its licensee is limited to the intellectual 620Sstevel@tonic-gate * property embodied in the software Licensee provides to its licensee, and 630Sstevel@tonic-gate * not to intellectual property embodied in modifications its licensee may 640Sstevel@tonic-gate * make. 650Sstevel@tonic-gate * 660Sstevel@tonic-gate * 3.3. Redistribution of Executable. Redistribution in executable form of any 670Sstevel@tonic-gate * substantial portion of the Covered Code or modification must reproduce the 680Sstevel@tonic-gate * above Copyright Notice, and the following Disclaimer and Export Compliance 690Sstevel@tonic-gate * provision in the documentation and/or other materials provided with the 700Sstevel@tonic-gate * distribution. 710Sstevel@tonic-gate * 720Sstevel@tonic-gate * 3.4. Intel retains all right, title, and interest in and to the Original 730Sstevel@tonic-gate * Intel Code. 740Sstevel@tonic-gate * 750Sstevel@tonic-gate * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760Sstevel@tonic-gate * Intel shall be used in advertising or otherwise to promote the sale, use or 770Sstevel@tonic-gate * other dealings in products derived from or relating to the Covered Code 780Sstevel@tonic-gate * without prior written authorization from Intel. 790Sstevel@tonic-gate * 800Sstevel@tonic-gate * 4. Disclaimer and Export Compliance 810Sstevel@tonic-gate * 820Sstevel@tonic-gate * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830Sstevel@tonic-gate * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840Sstevel@tonic-gate * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850Sstevel@tonic-gate * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860Sstevel@tonic-gate * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870Sstevel@tonic-gate * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880Sstevel@tonic-gate * PARTICULAR PURPOSE. 890Sstevel@tonic-gate * 900Sstevel@tonic-gate * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910Sstevel@tonic-gate * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920Sstevel@tonic-gate * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930Sstevel@tonic-gate * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940Sstevel@tonic-gate * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950Sstevel@tonic-gate * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960Sstevel@tonic-gate * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970Sstevel@tonic-gate * LIMITED REMEDY. 980Sstevel@tonic-gate * 990Sstevel@tonic-gate * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000Sstevel@tonic-gate * software or system incorporating such software without first obtaining any 1010Sstevel@tonic-gate * required license or other approval from the U. S. Department of Commerce or 1020Sstevel@tonic-gate * any other agency or department of the United States Government. In the 1030Sstevel@tonic-gate * event Licensee exports any such software from the United States or 1040Sstevel@tonic-gate * re-exports any such software from a foreign destination, Licensee shall 1050Sstevel@tonic-gate * ensure that the distribution and export/re-export of the software is in 1060Sstevel@tonic-gate * compliance with all laws, regulations, orders, or other restrictions of the 1070Sstevel@tonic-gate * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080Sstevel@tonic-gate * any of its subsidiaries will export/re-export any technical data, process, 1090Sstevel@tonic-gate * software, or service, directly or indirectly, to any country for which the 1100Sstevel@tonic-gate * United States government or any agency thereof requires an export license, 1110Sstevel@tonic-gate * other governmental approval, or letter of assurance, without first obtaining 1120Sstevel@tonic-gate * such license, approval or letter. 1130Sstevel@tonic-gate * 1140Sstevel@tonic-gate *****************************************************************************/ 1150Sstevel@tonic-gate 1160Sstevel@tonic-gate #ifndef __ACTBL1_H__ 1170Sstevel@tonic-gate #define __ACTBL1_H__ 1180Sstevel@tonic-gate 1192623Smyers 1202623Smyers /******************************************************************************* 1212623Smyers * 122*11225SDana.Myers@Sun.COM * Additional ACPI Tables (1) 1232623Smyers * 1242623Smyers * These tables are not consumed directly by the ACPICA subsystem, but are 1252623Smyers * included here to support device drivers and the AML disassembler. 1262623Smyers * 127*11225SDana.Myers@Sun.COM * The tables in this file are fully defined within the ACPI specification. 128*11225SDana.Myers@Sun.COM * 1292623Smyers ******************************************************************************/ 1302623Smyers 1310Sstevel@tonic-gate 1320Sstevel@tonic-gate /* 133*11225SDana.Myers@Sun.COM * Values for description table header signatures for tables defined in this 134*11225SDana.Myers@Sun.COM * file. Useful because they make it more difficult to inadvertently type in 135*11225SDana.Myers@Sun.COM * the wrong signature. 1360Sstevel@tonic-gate */ 1377851SDana.Myers@Sun.COM #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 1382623Smyers #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 1392623Smyers #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 1407851SDana.Myers@Sun.COM #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 1417851SDana.Myers@Sun.COM #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 1427851SDana.Myers@Sun.COM #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 1432623Smyers #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 144*11225SDana.Myers@Sun.COM #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ 1452623Smyers #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 1462623Smyers #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 1472623Smyers #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 148347Smyers 1490Sstevel@tonic-gate 1500Sstevel@tonic-gate /* 1512623Smyers * All tables must be byte-packed to match the ACPI specification, since 1522623Smyers * the tables are provided by the system BIOS. 1532623Smyers */ 1542623Smyers #pragma pack(1) 1552623Smyers 1562623Smyers /* 1572623Smyers * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 1582623Smyers * This is the only type that is even remotely portable. Anything else is not 1592623Smyers * portable, so do not use any other bitfield types. 1602623Smyers */ 1612623Smyers 1622623Smyers 163*11225SDana.Myers@Sun.COM /******************************************************************************* 164*11225SDana.Myers@Sun.COM * 165*11225SDana.Myers@Sun.COM * Common subtable headers 166*11225SDana.Myers@Sun.COM * 167*11225SDana.Myers@Sun.COM ******************************************************************************/ 168*11225SDana.Myers@Sun.COM 169*11225SDana.Myers@Sun.COM /* Generic subtable header (used in MADT, SRAT, etc.) */ 1707851SDana.Myers@Sun.COM 1717851SDana.Myers@Sun.COM typedef struct acpi_subtable_header 1727851SDana.Myers@Sun.COM { 1737851SDana.Myers@Sun.COM UINT8 Type; 1747851SDana.Myers@Sun.COM UINT8 Length; 1757851SDana.Myers@Sun.COM 1767851SDana.Myers@Sun.COM } ACPI_SUBTABLE_HEADER; 1777851SDana.Myers@Sun.COM 1787851SDana.Myers@Sun.COM 179*11225SDana.Myers@Sun.COM /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 1807851SDana.Myers@Sun.COM 1817851SDana.Myers@Sun.COM typedef struct acpi_whea_header 1827851SDana.Myers@Sun.COM { 1837851SDana.Myers@Sun.COM UINT8 Action; 1847851SDana.Myers@Sun.COM UINT8 Instruction; 1857851SDana.Myers@Sun.COM UINT8 Flags; 1867851SDana.Myers@Sun.COM UINT8 Reserved; 1877851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS RegisterRegion; 1887851SDana.Myers@Sun.COM UINT64 Value; /* Value used with Read/Write register */ 1897851SDana.Myers@Sun.COM UINT64 Mask; /* Bitmask required for this register instruction */ 1907851SDana.Myers@Sun.COM 1917851SDana.Myers@Sun.COM } ACPI_WHEA_HEADER; 1927851SDana.Myers@Sun.COM 1937851SDana.Myers@Sun.COM 1942623Smyers /******************************************************************************* 1952623Smyers * 196*11225SDana.Myers@Sun.COM * BERT - Boot Error Record Table (ACPI 4.0) 197*11225SDana.Myers@Sun.COM * Version 1 1987851SDana.Myers@Sun.COM * 1997851SDana.Myers@Sun.COM ******************************************************************************/ 2007851SDana.Myers@Sun.COM 2017851SDana.Myers@Sun.COM typedef struct acpi_table_bert 2027851SDana.Myers@Sun.COM { 2037851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2047851SDana.Myers@Sun.COM UINT32 RegionLength; /* Length of the boot error region */ 2057851SDana.Myers@Sun.COM UINT64 Address; /* Physical addresss of the error region */ 2067851SDana.Myers@Sun.COM 2077851SDana.Myers@Sun.COM } ACPI_TABLE_BERT; 2087851SDana.Myers@Sun.COM 2097851SDana.Myers@Sun.COM 210*11225SDana.Myers@Sun.COM /* Boot Error Region (not a subtable, pointed to by Address field above) */ 2117851SDana.Myers@Sun.COM 2127851SDana.Myers@Sun.COM typedef struct acpi_bert_region 2137851SDana.Myers@Sun.COM { 214*11225SDana.Myers@Sun.COM UINT32 BlockStatus; /* Type of error information */ 215*11225SDana.Myers@Sun.COM UINT32 RawDataOffset; /* Offset to raw error data */ 216*11225SDana.Myers@Sun.COM UINT32 RawDataLength; /* Length of raw error data */ 217*11225SDana.Myers@Sun.COM UINT32 DataLength; /* Length of generic error data */ 218*11225SDana.Myers@Sun.COM UINT32 ErrorSeverity; /* Severity code */ 2197851SDana.Myers@Sun.COM 2207851SDana.Myers@Sun.COM } ACPI_BERT_REGION; 2217851SDana.Myers@Sun.COM 222*11225SDana.Myers@Sun.COM /* Values for BlockStatus flags above */ 2237851SDana.Myers@Sun.COM 2247851SDana.Myers@Sun.COM #define ACPI_BERT_UNCORRECTABLE (1) 225*11225SDana.Myers@Sun.COM #define ACPI_BERT_CORRECTABLE (1<<1) 226*11225SDana.Myers@Sun.COM #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 227*11225SDana.Myers@Sun.COM #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 228*11225SDana.Myers@Sun.COM #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 229*11225SDana.Myers@Sun.COM 230*11225SDana.Myers@Sun.COM /* Values for ErrorSeverity above */ 231*11225SDana.Myers@Sun.COM 232*11225SDana.Myers@Sun.COM enum AcpiBertErrorSeverity 233*11225SDana.Myers@Sun.COM { 234*11225SDana.Myers@Sun.COM ACPI_BERT_ERROR_CORRECTABLE = 0, 235*11225SDana.Myers@Sun.COM ACPI_BERT_ERROR_FATAL = 1, 236*11225SDana.Myers@Sun.COM ACPI_BERT_ERROR_CORRECTED = 2, 237*11225SDana.Myers@Sun.COM ACPI_BERT_ERROR_NONE = 3, 238*11225SDana.Myers@Sun.COM ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 239*11225SDana.Myers@Sun.COM }; 240*11225SDana.Myers@Sun.COM 241*11225SDana.Myers@Sun.COM /* 242*11225SDana.Myers@Sun.COM * Note: The generic error data that follows the ErrorSeverity field above 243*11225SDana.Myers@Sun.COM * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below 244*11225SDana.Myers@Sun.COM */ 2457851SDana.Myers@Sun.COM 2467851SDana.Myers@Sun.COM 2477851SDana.Myers@Sun.COM /******************************************************************************* 2487851SDana.Myers@Sun.COM * 249*11225SDana.Myers@Sun.COM * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 250*11225SDana.Myers@Sun.COM * Version 1 2512623Smyers * 2522623Smyers ******************************************************************************/ 2532623Smyers 2542623Smyers typedef struct acpi_table_cpep 2552623Smyers { 2567851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2572623Smyers UINT64 Reserved; 2582623Smyers 2592623Smyers } ACPI_TABLE_CPEP; 2602623Smyers 2617851SDana.Myers@Sun.COM 2622623Smyers /* Subtable */ 2632623Smyers 2642623Smyers typedef struct acpi_cpep_polling 2652623Smyers { 266*11225SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 2677851SDana.Myers@Sun.COM UINT8 Id; /* Processor ID */ 2687851SDana.Myers@Sun.COM UINT8 Eid; /* Processor EID */ 2697851SDana.Myers@Sun.COM UINT32 Interval; /* Polling interval (msec) */ 2702623Smyers 2712623Smyers } ACPI_CPEP_POLLING; 2722623Smyers 2732623Smyers 2742623Smyers /******************************************************************************* 2752623Smyers * 2762623Smyers * ECDT - Embedded Controller Boot Resources Table 277*11225SDana.Myers@Sun.COM * Version 1 2782623Smyers * 2792623Smyers ******************************************************************************/ 2802623Smyers 2817851SDana.Myers@Sun.COM typedef struct acpi_table_ecdt 2827851SDana.Myers@Sun.COM { 2837851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2847851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 2857851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 2867851SDana.Myers@Sun.COM UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 2877851SDana.Myers@Sun.COM UINT8 Gpe; /* The GPE for the EC */ 2887851SDana.Myers@Sun.COM UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 2897851SDana.Myers@Sun.COM 2907851SDana.Myers@Sun.COM } ACPI_TABLE_ECDT; 2917851SDana.Myers@Sun.COM 2927851SDana.Myers@Sun.COM 2937851SDana.Myers@Sun.COM /******************************************************************************* 2947851SDana.Myers@Sun.COM * 295*11225SDana.Myers@Sun.COM * EINJ - Error Injection Table (ACPI 4.0) 296*11225SDana.Myers@Sun.COM * Version 1 2977851SDana.Myers@Sun.COM * 2987851SDana.Myers@Sun.COM ******************************************************************************/ 2997851SDana.Myers@Sun.COM 3007851SDana.Myers@Sun.COM typedef struct acpi_table_einj 3017851SDana.Myers@Sun.COM { 3027851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 3037851SDana.Myers@Sun.COM UINT32 HeaderLength; 304*11225SDana.Myers@Sun.COM UINT8 Flags; 305*11225SDana.Myers@Sun.COM UINT8 Reserved[3]; 3067851SDana.Myers@Sun.COM UINT32 Entries; 3077851SDana.Myers@Sun.COM 3087851SDana.Myers@Sun.COM } ACPI_TABLE_EINJ; 3097851SDana.Myers@Sun.COM 310*11225SDana.Myers@Sun.COM 3117851SDana.Myers@Sun.COM /* EINJ Injection Instruction Entries (actions) */ 3127851SDana.Myers@Sun.COM 3137851SDana.Myers@Sun.COM typedef struct acpi_einj_entry 3147851SDana.Myers@Sun.COM { 3157851SDana.Myers@Sun.COM ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 3167851SDana.Myers@Sun.COM 3177851SDana.Myers@Sun.COM } ACPI_EINJ_ENTRY; 3187851SDana.Myers@Sun.COM 319*11225SDana.Myers@Sun.COM /* Masks for Flags field above */ 320*11225SDana.Myers@Sun.COM 321*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PRESERVE (1) 322*11225SDana.Myers@Sun.COM 3237851SDana.Myers@Sun.COM /* Values for Action field above */ 3247851SDana.Myers@Sun.COM 3257851SDana.Myers@Sun.COM enum AcpiEinjActions 3267851SDana.Myers@Sun.COM { 3277851SDana.Myers@Sun.COM ACPI_EINJ_BEGIN_OPERATION = 0, 3287851SDana.Myers@Sun.COM ACPI_EINJ_GET_TRIGGER_TABLE = 1, 3297851SDana.Myers@Sun.COM ACPI_EINJ_SET_ERROR_TYPE = 2, 3307851SDana.Myers@Sun.COM ACPI_EINJ_GET_ERROR_TYPE = 3, 3317851SDana.Myers@Sun.COM ACPI_EINJ_END_OPERATION = 4, 3327851SDana.Myers@Sun.COM ACPI_EINJ_EXECUTE_OPERATION = 5, 3337851SDana.Myers@Sun.COM ACPI_EINJ_CHECK_BUSY_STATUS = 6, 3347851SDana.Myers@Sun.COM ACPI_EINJ_GET_COMMAND_STATUS = 7, 3357851SDana.Myers@Sun.COM ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 3367851SDana.Myers@Sun.COM ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 3377851SDana.Myers@Sun.COM }; 3387851SDana.Myers@Sun.COM 3397851SDana.Myers@Sun.COM /* Values for Instruction field above */ 3407851SDana.Myers@Sun.COM 3417851SDana.Myers@Sun.COM enum AcpiEinjInstructions 3427851SDana.Myers@Sun.COM { 3437851SDana.Myers@Sun.COM ACPI_EINJ_READ_REGISTER = 0, 3447851SDana.Myers@Sun.COM ACPI_EINJ_READ_REGISTER_VALUE = 1, 3457851SDana.Myers@Sun.COM ACPI_EINJ_WRITE_REGISTER = 2, 3467851SDana.Myers@Sun.COM ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 3477851SDana.Myers@Sun.COM ACPI_EINJ_NOOP = 4, 3487851SDana.Myers@Sun.COM ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 3497851SDana.Myers@Sun.COM }; 3507851SDana.Myers@Sun.COM 351*11225SDana.Myers@Sun.COM 3527851SDana.Myers@Sun.COM /* EINJ Trigger Error Action Table */ 3537851SDana.Myers@Sun.COM 3547851SDana.Myers@Sun.COM typedef struct acpi_einj_trigger 3557851SDana.Myers@Sun.COM { 3567851SDana.Myers@Sun.COM UINT32 HeaderSize; 3577851SDana.Myers@Sun.COM UINT32 Revision; 3587851SDana.Myers@Sun.COM UINT32 TableSize; 3597851SDana.Myers@Sun.COM UINT32 EntryCount; 3607851SDana.Myers@Sun.COM 3617851SDana.Myers@Sun.COM } ACPI_EINJ_TRIGGER; 3627851SDana.Myers@Sun.COM 363*11225SDana.Myers@Sun.COM /* Command status return values */ 364*11225SDana.Myers@Sun.COM 365*11225SDana.Myers@Sun.COM enum AcpiEinjCommandStatus 366*11225SDana.Myers@Sun.COM { 367*11225SDana.Myers@Sun.COM ACPI_EINJ_SUCCESS = 0, 368*11225SDana.Myers@Sun.COM ACPI_EINJ_FAILURE = 1, 369*11225SDana.Myers@Sun.COM ACPI_EINJ_INVALID_ACCESS = 2, 370*11225SDana.Myers@Sun.COM ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 371*11225SDana.Myers@Sun.COM }; 372*11225SDana.Myers@Sun.COM 373*11225SDana.Myers@Sun.COM 374*11225SDana.Myers@Sun.COM /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 375*11225SDana.Myers@Sun.COM 376*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 377*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 378*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 379*11225SDana.Myers@Sun.COM #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 380*11225SDana.Myers@Sun.COM #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 381*11225SDana.Myers@Sun.COM #define ACPI_EINJ_MEMORY_FATAL (1<<5) 382*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 383*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 384*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PCIX_FATAL (1<<8) 385*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 386*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 387*11225SDana.Myers@Sun.COM #define ACPI_EINJ_PLATFORM_FATAL (1<<11) 388*11225SDana.Myers@Sun.COM 3897851SDana.Myers@Sun.COM 3907851SDana.Myers@Sun.COM /******************************************************************************* 3917851SDana.Myers@Sun.COM * 392*11225SDana.Myers@Sun.COM * ERST - Error Record Serialization Table (ACPI 4.0) 393*11225SDana.Myers@Sun.COM * Version 1 3947851SDana.Myers@Sun.COM * 3957851SDana.Myers@Sun.COM ******************************************************************************/ 3967851SDana.Myers@Sun.COM 3977851SDana.Myers@Sun.COM typedef struct acpi_table_erst 3987851SDana.Myers@Sun.COM { 3997851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4007851SDana.Myers@Sun.COM UINT32 HeaderLength; 4017851SDana.Myers@Sun.COM UINT32 Reserved; 4027851SDana.Myers@Sun.COM UINT32 Entries; 4037851SDana.Myers@Sun.COM 4047851SDana.Myers@Sun.COM } ACPI_TABLE_ERST; 4057851SDana.Myers@Sun.COM 406*11225SDana.Myers@Sun.COM 4077851SDana.Myers@Sun.COM /* ERST Serialization Entries (actions) */ 4087851SDana.Myers@Sun.COM 4097851SDana.Myers@Sun.COM typedef struct acpi_erst_entry 4107851SDana.Myers@Sun.COM { 4117851SDana.Myers@Sun.COM ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 4127851SDana.Myers@Sun.COM 4137851SDana.Myers@Sun.COM } ACPI_ERST_ENTRY; 4147851SDana.Myers@Sun.COM 415*11225SDana.Myers@Sun.COM /* Masks for Flags field above */ 416*11225SDana.Myers@Sun.COM 417*11225SDana.Myers@Sun.COM #define ACPI_ERST_PRESERVE (1) 418*11225SDana.Myers@Sun.COM 4197851SDana.Myers@Sun.COM /* Values for Action field above */ 4207851SDana.Myers@Sun.COM 4217851SDana.Myers@Sun.COM enum AcpiErstActions 4227851SDana.Myers@Sun.COM { 423*11225SDana.Myers@Sun.COM ACPI_ERST_BEGIN_WRITE = 0, 424*11225SDana.Myers@Sun.COM ACPI_ERST_BEGIN_READ = 1, 425*11225SDana.Myers@Sun.COM ACPI_ERST_BEGIN_CLEAR = 2, 426*11225SDana.Myers@Sun.COM ACPI_ERST_END = 3, 4277851SDana.Myers@Sun.COM ACPI_ERST_SET_RECORD_OFFSET = 4, 4287851SDana.Myers@Sun.COM ACPI_ERST_EXECUTE_OPERATION = 5, 4297851SDana.Myers@Sun.COM ACPI_ERST_CHECK_BUSY_STATUS = 6, 4307851SDana.Myers@Sun.COM ACPI_ERST_GET_COMMAND_STATUS = 7, 431*11225SDana.Myers@Sun.COM ACPI_ERST_GET_RECORD_ID = 8, 432*11225SDana.Myers@Sun.COM ACPI_ERST_SET_RECORD_ID = 9, 4337851SDana.Myers@Sun.COM ACPI_ERST_GET_RECORD_COUNT = 10, 4347851SDana.Myers@Sun.COM ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 4357851SDana.Myers@Sun.COM ACPI_ERST_NOT_USED = 12, 4367851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_RANGE = 13, 4377851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_LENGTH = 14, 4387851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 4397851SDana.Myers@Sun.COM ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 4407851SDana.Myers@Sun.COM }; 4417851SDana.Myers@Sun.COM 4427851SDana.Myers@Sun.COM /* Values for Instruction field above */ 4437851SDana.Myers@Sun.COM 4447851SDana.Myers@Sun.COM enum AcpiErstInstructions 4457851SDana.Myers@Sun.COM { 4467851SDana.Myers@Sun.COM ACPI_ERST_READ_REGISTER = 0, 4477851SDana.Myers@Sun.COM ACPI_ERST_READ_REGISTER_VALUE = 1, 4487851SDana.Myers@Sun.COM ACPI_ERST_WRITE_REGISTER = 2, 4497851SDana.Myers@Sun.COM ACPI_ERST_WRITE_REGISTER_VALUE = 3, 4507851SDana.Myers@Sun.COM ACPI_ERST_NOOP = 4, 4517851SDana.Myers@Sun.COM ACPI_ERST_LOAD_VAR1 = 5, 4527851SDana.Myers@Sun.COM ACPI_ERST_LOAD_VAR2 = 6, 4537851SDana.Myers@Sun.COM ACPI_ERST_STORE_VAR1 = 7, 4547851SDana.Myers@Sun.COM ACPI_ERST_ADD = 8, 4557851SDana.Myers@Sun.COM ACPI_ERST_SUBTRACT = 9, 4567851SDana.Myers@Sun.COM ACPI_ERST_ADD_VALUE = 10, 4577851SDana.Myers@Sun.COM ACPI_ERST_SUBTRACT_VALUE = 11, 4587851SDana.Myers@Sun.COM ACPI_ERST_STALL = 12, 4597851SDana.Myers@Sun.COM ACPI_ERST_STALL_WHILE_TRUE = 13, 4607851SDana.Myers@Sun.COM ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 4617851SDana.Myers@Sun.COM ACPI_ERST_GOTO = 15, 4627851SDana.Myers@Sun.COM ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 4637851SDana.Myers@Sun.COM ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 4647851SDana.Myers@Sun.COM ACPI_ERST_MOVE_DATA = 18, 4657851SDana.Myers@Sun.COM ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 4667851SDana.Myers@Sun.COM }; 4677851SDana.Myers@Sun.COM 468*11225SDana.Myers@Sun.COM /* Command status return values */ 469*11225SDana.Myers@Sun.COM 470*11225SDana.Myers@Sun.COM enum AcpiErstCommandStatus 471*11225SDana.Myers@Sun.COM { 472*11225SDana.Myers@Sun.COM ACPI_ERST_SUCESS = 0, 473*11225SDana.Myers@Sun.COM ACPI_ERST_NO_SPACE = 1, 474*11225SDana.Myers@Sun.COM ACPI_ERST_NOT_AVAILABLE = 2, 475*11225SDana.Myers@Sun.COM ACPI_ERST_FAILURE = 3, 476*11225SDana.Myers@Sun.COM ACPI_ERST_RECORD_EMPTY = 4, 477*11225SDana.Myers@Sun.COM ACPI_ERST_NOT_FOUND = 5, 478*11225SDana.Myers@Sun.COM ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 479*11225SDana.Myers@Sun.COM }; 480*11225SDana.Myers@Sun.COM 481*11225SDana.Myers@Sun.COM 482*11225SDana.Myers@Sun.COM /* Error Record Serialization Information */ 483*11225SDana.Myers@Sun.COM 484*11225SDana.Myers@Sun.COM typedef struct acpi_erst_info 485*11225SDana.Myers@Sun.COM { 486*11225SDana.Myers@Sun.COM UINT16 Signature; /* Should be "ER" */ 487*11225SDana.Myers@Sun.COM UINT8 Data[48]; 488*11225SDana.Myers@Sun.COM 489*11225SDana.Myers@Sun.COM } ACPI_ERST_INFO; 490*11225SDana.Myers@Sun.COM 4917851SDana.Myers@Sun.COM 4927851SDana.Myers@Sun.COM /******************************************************************************* 4937851SDana.Myers@Sun.COM * 494*11225SDana.Myers@Sun.COM * HEST - Hardware Error Source Table (ACPI 4.0) 495*11225SDana.Myers@Sun.COM * Version 1 4967851SDana.Myers@Sun.COM * 4977851SDana.Myers@Sun.COM ******************************************************************************/ 4987851SDana.Myers@Sun.COM 4997851SDana.Myers@Sun.COM typedef struct acpi_table_hest 5007851SDana.Myers@Sun.COM { 5017851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 5027851SDana.Myers@Sun.COM UINT32 ErrorSourceCount; 5037851SDana.Myers@Sun.COM 5047851SDana.Myers@Sun.COM } ACPI_TABLE_HEST; 5057851SDana.Myers@Sun.COM 5067851SDana.Myers@Sun.COM 5077851SDana.Myers@Sun.COM /* HEST subtable header */ 5087851SDana.Myers@Sun.COM 5097851SDana.Myers@Sun.COM typedef struct acpi_hest_header 5107851SDana.Myers@Sun.COM { 5117851SDana.Myers@Sun.COM UINT16 Type; 512*11225SDana.Myers@Sun.COM UINT16 SourceId; 5137851SDana.Myers@Sun.COM 5147851SDana.Myers@Sun.COM } ACPI_HEST_HEADER; 5157851SDana.Myers@Sun.COM 5167851SDana.Myers@Sun.COM 5177851SDana.Myers@Sun.COM /* Values for Type field above for subtables */ 5187851SDana.Myers@Sun.COM 5197851SDana.Myers@Sun.COM enum AcpiHestTypes 5207851SDana.Myers@Sun.COM { 521*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_IA32_CHECK = 0, 522*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 523*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_IA32_NMI = 2, 524*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_NOT_USED3 = 3, 525*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_NOT_USED4 = 4, 526*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_NOT_USED5 = 5, 527*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 528*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_ENDPOINT = 7, 529*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_BRIDGE = 8, 530*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_GENERIC_ERROR = 9, 531*11225SDana.Myers@Sun.COM ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 5327851SDana.Myers@Sun.COM }; 5337851SDana.Myers@Sun.COM 5347851SDana.Myers@Sun.COM 5357851SDana.Myers@Sun.COM /* 536*11225SDana.Myers@Sun.COM * HEST substructures contained in subtables 5377851SDana.Myers@Sun.COM */ 5387851SDana.Myers@Sun.COM 539*11225SDana.Myers@Sun.COM /* 540*11225SDana.Myers@Sun.COM * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and 541*11225SDana.Myers@Sun.COM * ACPI_HEST_IA_CORRECTED structures. 542*11225SDana.Myers@Sun.COM */ 543*11225SDana.Myers@Sun.COM typedef struct acpi_hest_ia_error_bank 5442623Smyers { 5457851SDana.Myers@Sun.COM UINT8 BankNumber; 5467851SDana.Myers@Sun.COM UINT8 ClearStatusOnInit; 5477851SDana.Myers@Sun.COM UINT8 StatusFormat; 548*11225SDana.Myers@Sun.COM UINT8 Reserved; 5497851SDana.Myers@Sun.COM UINT32 ControlRegister; 550*11225SDana.Myers@Sun.COM UINT64 ControlData; 5517851SDana.Myers@Sun.COM UINT32 StatusRegister; 5527851SDana.Myers@Sun.COM UINT32 AddressRegister; 5537851SDana.Myers@Sun.COM UINT32 MiscRegister; 5547851SDana.Myers@Sun.COM 555*11225SDana.Myers@Sun.COM } ACPI_HEST_IA_ERROR_BANK; 5567851SDana.Myers@Sun.COM 5577851SDana.Myers@Sun.COM 558*11225SDana.Myers@Sun.COM /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 5597851SDana.Myers@Sun.COM 5607851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_common 5617851SDana.Myers@Sun.COM { 562*11225SDana.Myers@Sun.COM UINT16 Reserved1; 5637851SDana.Myers@Sun.COM UINT8 Flags; 5647851SDana.Myers@Sun.COM UINT8 Enabled; 565*11225SDana.Myers@Sun.COM UINT32 RecordsToPreallocate; 5667851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 5677851SDana.Myers@Sun.COM UINT32 Bus; 5687851SDana.Myers@Sun.COM UINT16 Device; 5697851SDana.Myers@Sun.COM UINT16 Function; 5707851SDana.Myers@Sun.COM UINT16 DeviceControl; 571*11225SDana.Myers@Sun.COM UINT16 Reserved2; 572*11225SDana.Myers@Sun.COM UINT32 UncorrectableMask; 573*11225SDana.Myers@Sun.COM UINT32 UncorrectableSeverity; 574*11225SDana.Myers@Sun.COM UINT32 CorrectableMask; 575*11225SDana.Myers@Sun.COM UINT32 AdvancedCapabilities; 5767851SDana.Myers@Sun.COM 5777851SDana.Myers@Sun.COM } ACPI_HEST_AER_COMMON; 5787851SDana.Myers@Sun.COM 579*11225SDana.Myers@Sun.COM /* Masks for HEST Flags fields */ 580*11225SDana.Myers@Sun.COM 581*11225SDana.Myers@Sun.COM #define ACPI_HEST_FIRMWARE_FIRST (1) 582*11225SDana.Myers@Sun.COM #define ACPI_HEST_GLOBAL (1<<1) 583*11225SDana.Myers@Sun.COM 5847851SDana.Myers@Sun.COM 5857851SDana.Myers@Sun.COM /* Hardware Error Notification */ 5867851SDana.Myers@Sun.COM 5877851SDana.Myers@Sun.COM typedef struct acpi_hest_notify 5887851SDana.Myers@Sun.COM { 5897851SDana.Myers@Sun.COM UINT8 Type; 5907851SDana.Myers@Sun.COM UINT8 Length; 5917851SDana.Myers@Sun.COM UINT16 ConfigWriteEnable; 5927851SDana.Myers@Sun.COM UINT32 PollInterval; 5937851SDana.Myers@Sun.COM UINT32 Vector; 5947851SDana.Myers@Sun.COM UINT32 PollingThresholdValue; 5957851SDana.Myers@Sun.COM UINT32 PollingThresholdWindow; 5967851SDana.Myers@Sun.COM UINT32 ErrorThresholdValue; 5977851SDana.Myers@Sun.COM UINT32 ErrorThresholdWindow; 5987851SDana.Myers@Sun.COM 5997851SDana.Myers@Sun.COM } ACPI_HEST_NOTIFY; 6007851SDana.Myers@Sun.COM 6017851SDana.Myers@Sun.COM /* Values for Notify Type field above */ 6027851SDana.Myers@Sun.COM 6037851SDana.Myers@Sun.COM enum AcpiHestNotifyTypes 6047851SDana.Myers@Sun.COM { 6057851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_POLLED = 0, 6067851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_EXTERNAL = 1, 6077851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_LOCAL = 2, 6087851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_SCI = 3, 6097851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_NMI = 4, 6107851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 6117851SDana.Myers@Sun.COM }; 6127851SDana.Myers@Sun.COM 613*11225SDana.Myers@Sun.COM /* Values for ConfigWriteEnable bitfield above */ 614*11225SDana.Myers@Sun.COM 615*11225SDana.Myers@Sun.COM #define ACPI_HEST_TYPE (1) 616*11225SDana.Myers@Sun.COM #define ACPI_HEST_POLL_INTERVAL (1<<1) 617*11225SDana.Myers@Sun.COM #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 618*11225SDana.Myers@Sun.COM #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 619*11225SDana.Myers@Sun.COM #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 620*11225SDana.Myers@Sun.COM #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 621*11225SDana.Myers@Sun.COM 6227851SDana.Myers@Sun.COM 6237851SDana.Myers@Sun.COM /* 6247851SDana.Myers@Sun.COM * HEST subtables 6257851SDana.Myers@Sun.COM */ 6267851SDana.Myers@Sun.COM 627*11225SDana.Myers@Sun.COM /* 0: IA32 Machine Check Exception */ 6282623Smyers 629*11225SDana.Myers@Sun.COM typedef struct acpi_hest_ia_machine_check 6307851SDana.Myers@Sun.COM { 6317851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 632*11225SDana.Myers@Sun.COM UINT16 Reserved1; 6337851SDana.Myers@Sun.COM UINT8 Flags; 634*11225SDana.Myers@Sun.COM UINT8 Enabled; 635*11225SDana.Myers@Sun.COM UINT32 RecordsToPreallocate; 6367851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 6377851SDana.Myers@Sun.COM UINT64 GlobalCapabilityData; 6387851SDana.Myers@Sun.COM UINT64 GlobalControlData; 6397851SDana.Myers@Sun.COM UINT8 NumHardwareBanks; 640*11225SDana.Myers@Sun.COM UINT8 Reserved3[7]; 6417851SDana.Myers@Sun.COM 642*11225SDana.Myers@Sun.COM } ACPI_HEST_IA_MACHINE_CHECK; 6437851SDana.Myers@Sun.COM 6447851SDana.Myers@Sun.COM 645*11225SDana.Myers@Sun.COM /* 1: IA32 Corrected Machine Check */ 6467851SDana.Myers@Sun.COM 647*11225SDana.Myers@Sun.COM typedef struct acpi_hest_ia_corrected 6487851SDana.Myers@Sun.COM { 6497851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 650*11225SDana.Myers@Sun.COM UINT16 Reserved1; 6517851SDana.Myers@Sun.COM UINT8 Flags; 6527851SDana.Myers@Sun.COM UINT8 Enabled; 653*11225SDana.Myers@Sun.COM UINT32 RecordsToPreallocate; 6547851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 6557851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY Notify; 6567851SDana.Myers@Sun.COM UINT8 NumHardwareBanks; 657*11225SDana.Myers@Sun.COM UINT8 Reserved2[3]; 6587851SDana.Myers@Sun.COM 659*11225SDana.Myers@Sun.COM } ACPI_HEST_IA_CORRECTED; 6607851SDana.Myers@Sun.COM 6617851SDana.Myers@Sun.COM 662*11225SDana.Myers@Sun.COM /* 2: IA32 Non-Maskable Interrupt */ 6637851SDana.Myers@Sun.COM 664*11225SDana.Myers@Sun.COM typedef struct acpi_hest_ia_nmi 6657851SDana.Myers@Sun.COM { 6667851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 6677851SDana.Myers@Sun.COM UINT32 Reserved; 668*11225SDana.Myers@Sun.COM UINT32 RecordsToPreallocate; 6697851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 6707851SDana.Myers@Sun.COM UINT32 MaxRawDataLength; 6717851SDana.Myers@Sun.COM 672*11225SDana.Myers@Sun.COM } ACPI_HEST_IA_NMI; 6737851SDana.Myers@Sun.COM 6747851SDana.Myers@Sun.COM 675*11225SDana.Myers@Sun.COM /* 3,4,5: Not used */ 6767851SDana.Myers@Sun.COM 6777851SDana.Myers@Sun.COM /* 6: PCI Express Root Port AER */ 6787851SDana.Myers@Sun.COM 6797851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_root 6807851SDana.Myers@Sun.COM { 6817851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 6827851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 6837851SDana.Myers@Sun.COM UINT32 RootErrorCommand; 6847851SDana.Myers@Sun.COM 6857851SDana.Myers@Sun.COM } ACPI_HEST_AER_ROOT; 6867851SDana.Myers@Sun.COM 6877851SDana.Myers@Sun.COM 6887851SDana.Myers@Sun.COM /* 7: PCI Express AER (AER Endpoint) */ 6897851SDana.Myers@Sun.COM 6907851SDana.Myers@Sun.COM typedef struct acpi_hest_aer 6917851SDana.Myers@Sun.COM { 6927851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 6937851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 6947851SDana.Myers@Sun.COM 6957851SDana.Myers@Sun.COM } ACPI_HEST_AER; 6967851SDana.Myers@Sun.COM 6977851SDana.Myers@Sun.COM 6987851SDana.Myers@Sun.COM /* 8: PCI Express/PCI-X Bridge AER */ 6997851SDana.Myers@Sun.COM 7007851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_bridge 7017851SDana.Myers@Sun.COM { 7027851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 7037851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 704*11225SDana.Myers@Sun.COM UINT32 UncorrectableMask2; 705*11225SDana.Myers@Sun.COM UINT32 UncorrectableSeverity2; 706*11225SDana.Myers@Sun.COM UINT32 AdvancedCapabilities2; 7077851SDana.Myers@Sun.COM 7087851SDana.Myers@Sun.COM } ACPI_HEST_AER_BRIDGE; 7097851SDana.Myers@Sun.COM 7107851SDana.Myers@Sun.COM 7117851SDana.Myers@Sun.COM /* 9: Generic Hardware Error Source */ 7127851SDana.Myers@Sun.COM 7137851SDana.Myers@Sun.COM typedef struct acpi_hest_generic 7147851SDana.Myers@Sun.COM { 7157851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 7167851SDana.Myers@Sun.COM UINT16 RelatedSourceId; 717*11225SDana.Myers@Sun.COM UINT8 Reserved; 7187851SDana.Myers@Sun.COM UINT8 Enabled; 719*11225SDana.Myers@Sun.COM UINT32 RecordsToPreallocate; 7207851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 7217851SDana.Myers@Sun.COM UINT32 MaxRawDataLength; 7227851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS ErrorStatusAddress; 7237851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY Notify; 724*11225SDana.Myers@Sun.COM UINT32 ErrorBlockLength; 7257851SDana.Myers@Sun.COM 7267851SDana.Myers@Sun.COM } ACPI_HEST_GENERIC; 7272623Smyers 7282623Smyers 729*11225SDana.Myers@Sun.COM /* Generic Error Status block */ 7302623Smyers 731*11225SDana.Myers@Sun.COM typedef struct acpi_hest_generic_status 7327851SDana.Myers@Sun.COM { 733*11225SDana.Myers@Sun.COM UINT32 BlockStatus; 734*11225SDana.Myers@Sun.COM UINT32 RawDataOffset; 735*11225SDana.Myers@Sun.COM UINT32 RawDataLength; 736*11225SDana.Myers@Sun.COM UINT32 DataLength; 737*11225SDana.Myers@Sun.COM UINT32 ErrorSeverity; 7387851SDana.Myers@Sun.COM 739*11225SDana.Myers@Sun.COM } ACPI_HEST_GENERIC_STATUS; 7407851SDana.Myers@Sun.COM 741*11225SDana.Myers@Sun.COM /* Values for BlockStatus flags above */ 7427851SDana.Myers@Sun.COM 743*11225SDana.Myers@Sun.COM #define ACPI_HEST_UNCORRECTABLE (1) 744*11225SDana.Myers@Sun.COM #define ACPI_HEST_CORRECTABLE (1<<1) 745*11225SDana.Myers@Sun.COM #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 746*11225SDana.Myers@Sun.COM #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 747*11225SDana.Myers@Sun.COM #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 7487851SDana.Myers@Sun.COM 7497851SDana.Myers@Sun.COM 750*11225SDana.Myers@Sun.COM /* Generic Error Data entry */ 7517851SDana.Myers@Sun.COM 752*11225SDana.Myers@Sun.COM typedef struct acpi_hest_generic_data 7537851SDana.Myers@Sun.COM { 754*11225SDana.Myers@Sun.COM UINT8 SectionType[16]; 755*11225SDana.Myers@Sun.COM UINT32 ErrorSeverity; 756*11225SDana.Myers@Sun.COM UINT16 Revision; 757*11225SDana.Myers@Sun.COM UINT8 ValidationBits; 758*11225SDana.Myers@Sun.COM UINT8 Flags; 759*11225SDana.Myers@Sun.COM UINT32 ErrorDataLength; 760*11225SDana.Myers@Sun.COM UINT8 FruId[16]; 761*11225SDana.Myers@Sun.COM UINT8 FruText[20]; 7627851SDana.Myers@Sun.COM 763*11225SDana.Myers@Sun.COM } ACPI_HEST_GENERIC_DATA; 7642623Smyers 7652623Smyers 7662623Smyers /******************************************************************************* 7672623Smyers * 7682623Smyers * MADT - Multiple APIC Description Table 769*11225SDana.Myers@Sun.COM * Version 3 7702623Smyers * 7712623Smyers ******************************************************************************/ 7722623Smyers 7737851SDana.Myers@Sun.COM typedef struct acpi_table_madt 7742623Smyers { 7757851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 7767851SDana.Myers@Sun.COM UINT32 Address; /* Physical address of local APIC */ 7777851SDana.Myers@Sun.COM UINT32 Flags; 778347Smyers 7797851SDana.Myers@Sun.COM } ACPI_TABLE_MADT; 780347Smyers 781*11225SDana.Myers@Sun.COM /* Masks for Flags field above */ 7827851SDana.Myers@Sun.COM 783*11225SDana.Myers@Sun.COM #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 784347Smyers 7857851SDana.Myers@Sun.COM /* Values for PCATCompat flag */ 7862623Smyers 7877851SDana.Myers@Sun.COM #define ACPI_MADT_DUAL_PIC 0 7887851SDana.Myers@Sun.COM #define ACPI_MADT_MULTIPLE_APIC 1 7892623Smyers 7902623Smyers 791*11225SDana.Myers@Sun.COM /* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */ 7922623Smyers 7937851SDana.Myers@Sun.COM enum AcpiMadtType 7947851SDana.Myers@Sun.COM { 7957851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC = 0, 7967851SDana.Myers@Sun.COM ACPI_MADT_TYPE_IO_APIC = 1, 7977851SDana.Myers@Sun.COM ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 7987851SDana.Myers@Sun.COM ACPI_MADT_TYPE_NMI_SOURCE = 3, 7997851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 8007851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 8017851SDana.Myers@Sun.COM ACPI_MADT_TYPE_IO_SAPIC = 6, 8027851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 8037851SDana.Myers@Sun.COM ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 8047851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 8057851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 8067851SDana.Myers@Sun.COM ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ 8077851SDana.Myers@Sun.COM }; 8080Sstevel@tonic-gate 8090Sstevel@tonic-gate 8100Sstevel@tonic-gate /* 8117851SDana.Myers@Sun.COM * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 8120Sstevel@tonic-gate */ 8132623Smyers 8147851SDana.Myers@Sun.COM /* 0: Processor Local APIC */ 8152623Smyers 8167851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic 8172623Smyers { 8187851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8192623Smyers UINT8 ProcessorId; /* ACPI processor id */ 8207851SDana.Myers@Sun.COM UINT8 Id; /* Processor's local APIC id */ 8217851SDana.Myers@Sun.COM UINT32 LapicFlags; 8222623Smyers 8237851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC; 8242623Smyers 825*11225SDana.Myers@Sun.COM 8262623Smyers /* 1: IO APIC */ 8272623Smyers 8287851SDana.Myers@Sun.COM typedef struct acpi_madt_io_apic 8292623Smyers { 8307851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8317851SDana.Myers@Sun.COM UINT8 Id; /* I/O APIC ID */ 8322623Smyers UINT8 Reserved; /* Reserved - must be zero */ 8332623Smyers UINT32 Address; /* APIC physical address */ 8347851SDana.Myers@Sun.COM UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 8352623Smyers 8367851SDana.Myers@Sun.COM } ACPI_MADT_IO_APIC; 8372623Smyers 838*11225SDana.Myers@Sun.COM 8392623Smyers /* 2: Interrupt Override */ 8402623Smyers 8417851SDana.Myers@Sun.COM typedef struct acpi_madt_interrupt_override 8422623Smyers { 8437851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8442623Smyers UINT8 Bus; /* 0 - ISA */ 8457851SDana.Myers@Sun.COM UINT8 SourceIrq; /* Interrupt source (IRQ) */ 8467851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 8477851SDana.Myers@Sun.COM UINT16 IntiFlags; 8482623Smyers 8497851SDana.Myers@Sun.COM } ACPI_MADT_INTERRUPT_OVERRIDE; 8502623Smyers 851*11225SDana.Myers@Sun.COM 8527851SDana.Myers@Sun.COM /* 3: NMI Source */ 8532623Smyers 8547851SDana.Myers@Sun.COM typedef struct acpi_madt_nmi_source 8552623Smyers { 8567851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8577851SDana.Myers@Sun.COM UINT16 IntiFlags; 8587851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 8592623Smyers 8607851SDana.Myers@Sun.COM } ACPI_MADT_NMI_SOURCE; 8612623Smyers 862*11225SDana.Myers@Sun.COM 8632623Smyers /* 4: Local APIC NMI */ 8642623Smyers 8657851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic_nmi 8662623Smyers { 8677851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8682623Smyers UINT8 ProcessorId; /* ACPI processor id */ 8697851SDana.Myers@Sun.COM UINT16 IntiFlags; 8702623Smyers UINT8 Lint; /* LINTn to which NMI is connected */ 8712623Smyers 8727851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC_NMI; 8732623Smyers 874*11225SDana.Myers@Sun.COM 8752623Smyers /* 5: Address Override */ 8762623Smyers 8777851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic_override 8782623Smyers { 8797851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8802623Smyers UINT16 Reserved; /* Reserved, must be zero */ 8812623Smyers UINT64 Address; /* APIC physical address */ 8822623Smyers 8837851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC_OVERRIDE; 8842623Smyers 885*11225SDana.Myers@Sun.COM 8862623Smyers /* 6: I/O Sapic */ 8872623Smyers 8887851SDana.Myers@Sun.COM typedef struct acpi_madt_io_sapic 8892623Smyers { 8907851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 8917851SDana.Myers@Sun.COM UINT8 Id; /* I/O SAPIC ID */ 8922623Smyers UINT8 Reserved; /* Reserved, must be zero */ 8937851SDana.Myers@Sun.COM UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 8942623Smyers UINT64 Address; /* SAPIC physical address */ 8952623Smyers 8967851SDana.Myers@Sun.COM } ACPI_MADT_IO_SAPIC; 8972623Smyers 898*11225SDana.Myers@Sun.COM 8992623Smyers /* 7: Local Sapic */ 9002623Smyers 9017851SDana.Myers@Sun.COM typedef struct acpi_madt_local_sapic 9022623Smyers { 9037851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 9042623Smyers UINT8 ProcessorId; /* ACPI processor id */ 9057851SDana.Myers@Sun.COM UINT8 Id; /* SAPIC ID */ 9067851SDana.Myers@Sun.COM UINT8 Eid; /* SAPIC EID */ 9072623Smyers UINT8 Reserved[3]; /* Reserved, must be zero */ 9087851SDana.Myers@Sun.COM UINT32 LapicFlags; 9097851SDana.Myers@Sun.COM UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 9107851SDana.Myers@Sun.COM char UidString[1]; /* String UID - ACPI 3.0 */ 9112623Smyers 9127851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_SAPIC; 9132623Smyers 914*11225SDana.Myers@Sun.COM 9152623Smyers /* 8: Platform Interrupt Source */ 9162623Smyers 9177851SDana.Myers@Sun.COM typedef struct acpi_madt_interrupt_source 9182623Smyers { 9197851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 9207851SDana.Myers@Sun.COM UINT16 IntiFlags; 9217851SDana.Myers@Sun.COM UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 9227851SDana.Myers@Sun.COM UINT8 Id; /* Processor ID */ 9237851SDana.Myers@Sun.COM UINT8 Eid; /* Processor EID */ 9242623Smyers UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 9257851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 9262623Smyers UINT32 Flags; /* Interrupt Source Flags */ 9272623Smyers 9287851SDana.Myers@Sun.COM } ACPI_MADT_INTERRUPT_SOURCE; 9297851SDana.Myers@Sun.COM 930*11225SDana.Myers@Sun.COM /* Masks for Flags field above */ 9317851SDana.Myers@Sun.COM 9327851SDana.Myers@Sun.COM #define ACPI_MADT_CPEI_OVERRIDE (1) 9337851SDana.Myers@Sun.COM 934*11225SDana.Myers@Sun.COM 935*11225SDana.Myers@Sun.COM /* 9: Processor Local X2APIC (ACPI 4.0) */ 9362623Smyers 9377851SDana.Myers@Sun.COM typedef struct acpi_madt_local_x2apic 9387851SDana.Myers@Sun.COM { 9397851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 9407851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved - must be zero */ 9419980SDana.Myers@Sun.COM UINT32 LocalApicId; /* Processor x2APIC ID */ 9427851SDana.Myers@Sun.COM UINT32 LapicFlags; 9439980SDana.Myers@Sun.COM UINT32 Uid; /* ACPI processor UID */ 9447282Smishra 9457851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_X2APIC; 9467851SDana.Myers@Sun.COM 947*11225SDana.Myers@Sun.COM 948*11225SDana.Myers@Sun.COM /* 10: Local X2APIC NMI (ACPI 4.0) */ 9497851SDana.Myers@Sun.COM 9507851SDana.Myers@Sun.COM typedef struct acpi_madt_local_x2apic_nmi 9517282Smishra { 9527851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 9537851SDana.Myers@Sun.COM UINT16 IntiFlags; 9549980SDana.Myers@Sun.COM UINT32 Uid; /* ACPI processor UID */ 9557851SDana.Myers@Sun.COM UINT8 Lint; /* LINTn to which NMI is connected */ 9569980SDana.Myers@Sun.COM UINT8 Reserved[3]; /* Reserved - must be zero */ 9577851SDana.Myers@Sun.COM 9587851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_X2APIC_NMI; 9597282Smishra 9607851SDana.Myers@Sun.COM 9617851SDana.Myers@Sun.COM /* 9627851SDana.Myers@Sun.COM * Common flags fields for MADT subtables 9637851SDana.Myers@Sun.COM */ 9647851SDana.Myers@Sun.COM 9657851SDana.Myers@Sun.COM /* MADT Local APIC flags (LapicFlags) */ 9667851SDana.Myers@Sun.COM 9677851SDana.Myers@Sun.COM #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 9687282Smishra 9697851SDana.Myers@Sun.COM /* MADT MPS INTI flags (IntiFlags) */ 9707851SDana.Myers@Sun.COM 9717851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 9727851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 9737851SDana.Myers@Sun.COM 9747851SDana.Myers@Sun.COM /* Values for MPS INTI flags */ 9757851SDana.Myers@Sun.COM 9767851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_CONFORMS 0 9777851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 9787851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_RESERVED 2 9797851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_ACTIVE_LOW 3 9807851SDana.Myers@Sun.COM 9817851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_CONFORMS (0) 9827851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_EDGE (1<<2) 9837851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_RESERVED (2<<2) 9847851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_LEVEL (3<<2) 9857282Smishra 9862623Smyers 9872623Smyers /******************************************************************************* 9882623Smyers * 989*11225SDana.Myers@Sun.COM * MSCT - Maximum System Characteristics Table (ACPI 4.0) 990*11225SDana.Myers@Sun.COM * Version 1 9912623Smyers * 9922623Smyers ******************************************************************************/ 9932623Smyers 994*11225SDana.Myers@Sun.COM typedef struct acpi_table_msct 9952623Smyers { 9967851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 997*11225SDana.Myers@Sun.COM UINT32 ProximityOffset; /* Location of proximity info struct(s) */ 998*11225SDana.Myers@Sun.COM UINT32 MaxProximityDomains;/* Max number of proximity domains */ 999*11225SDana.Myers@Sun.COM UINT32 MaxClockDomains; /* Max number of clock domains */ 1000*11225SDana.Myers@Sun.COM UINT64 MaxAddress; /* Max physical address in system */ 10012623Smyers 1002*11225SDana.Myers@Sun.COM } ACPI_TABLE_MSCT; 10032623Smyers 10047851SDana.Myers@Sun.COM 1005*11225SDana.Myers@Sun.COM /* Subtable - Maximum Proximity Domain Information. Version 1 */ 10067851SDana.Myers@Sun.COM 1007*11225SDana.Myers@Sun.COM typedef struct acpi_msct_proximity 10080Sstevel@tonic-gate { 1009*11225SDana.Myers@Sun.COM UINT8 Revision; 1010*11225SDana.Myers@Sun.COM UINT8 Length; 1011*11225SDana.Myers@Sun.COM UINT32 RangeStart; /* Start of domain range */ 1012*11225SDana.Myers@Sun.COM UINT32 RangeEnd; /* End of domain range */ 1013*11225SDana.Myers@Sun.COM UINT32 ProcessorCapacity; 1014*11225SDana.Myers@Sun.COM UINT64 MemoryCapacity; /* In bytes */ 10152623Smyers 1016*11225SDana.Myers@Sun.COM } ACPI_MSCT_PROXIMITY; 10172623Smyers 10182623Smyers 10192623Smyers /******************************************************************************* 10202623Smyers * 10212623Smyers * SBST - Smart Battery Specification Table 1022*11225SDana.Myers@Sun.COM * Version 1 10232623Smyers * 10242623Smyers ******************************************************************************/ 10252623Smyers 10267851SDana.Myers@Sun.COM typedef struct acpi_table_sbst 10272623Smyers { 10287851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 10292623Smyers UINT32 WarningLevel; 10302623Smyers UINT32 LowLevel; 10312623Smyers UINT32 CriticalLevel; 10322623Smyers 10337851SDana.Myers@Sun.COM } ACPI_TABLE_SBST; 10342623Smyers 10352623Smyers 10362623Smyers /******************************************************************************* 10372623Smyers * 10382623Smyers * SLIT - System Locality Distance Information Table 1039*11225SDana.Myers@Sun.COM * Version 1 10402623Smyers * 10412623Smyers ******************************************************************************/ 10422623Smyers 10437851SDana.Myers@Sun.COM typedef struct acpi_table_slit 10442623Smyers { 10457851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 10462623Smyers UINT64 LocalityCount; 10477851SDana.Myers@Sun.COM UINT8 Entry[1]; /* Real size = localities^2 */ 10482623Smyers 10497851SDana.Myers@Sun.COM } ACPI_TABLE_SLIT; 10502623Smyers 10512623Smyers 10522623Smyers /******************************************************************************* 10532623Smyers * 10542623Smyers * SRAT - System Resource Affinity Table 1055*11225SDana.Myers@Sun.COM * Version 3 10562623Smyers * 10572623Smyers ******************************************************************************/ 10582623Smyers 10597851SDana.Myers@Sun.COM typedef struct acpi_table_srat 10602623Smyers { 10617851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 10627851SDana.Myers@Sun.COM UINT32 TableRevision; /* Must be value '1' */ 10637851SDana.Myers@Sun.COM UINT64 Reserved; /* Reserved, must be zero */ 10642623Smyers 10657851SDana.Myers@Sun.COM } ACPI_TABLE_SRAT; 10662623Smyers 10677851SDana.Myers@Sun.COM /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 10682623Smyers 10697851SDana.Myers@Sun.COM enum AcpiSratType 10707851SDana.Myers@Sun.COM { 10717851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 10727851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 10737851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 10747851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 10757851SDana.Myers@Sun.COM }; 10762623Smyers 10777851SDana.Myers@Sun.COM /* 10787851SDana.Myers@Sun.COM * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 10797851SDana.Myers@Sun.COM */ 10802623Smyers 10817851SDana.Myers@Sun.COM /* 0: Processor Local APIC/SAPIC Affinity */ 10822623Smyers 10837851SDana.Myers@Sun.COM typedef struct acpi_srat_cpu_affinity 10842623Smyers { 10857851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 10862623Smyers UINT8 ProximityDomainLo; 10872623Smyers UINT8 ApicId; 10887851SDana.Myers@Sun.COM UINT32 Flags; 10892623Smyers UINT8 LocalSapicEid; 10902623Smyers UINT8 ProximityDomainHi[3]; 10917851SDana.Myers@Sun.COM UINT32 Reserved; /* Reserved, must be zero */ 10922623Smyers 10937851SDana.Myers@Sun.COM } ACPI_SRAT_CPU_AFFINITY; 10947851SDana.Myers@Sun.COM 1095*11225SDana.Myers@Sun.COM /* Flags */ 1096*11225SDana.Myers@Sun.COM 1097*11225SDana.Myers@Sun.COM #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 1098*11225SDana.Myers@Sun.COM 1099*11225SDana.Myers@Sun.COM 11007851SDana.Myers@Sun.COM /* 1: Memory Affinity */ 11012623Smyers 11027851SDana.Myers@Sun.COM typedef struct acpi_srat_mem_affinity 11032623Smyers { 11047851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 11052623Smyers UINT32 ProximityDomain; 11067851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved, must be zero */ 11072623Smyers UINT64 BaseAddress; 11087851SDana.Myers@Sun.COM UINT64 Length; 11097851SDana.Myers@Sun.COM UINT32 Reserved1; 11107851SDana.Myers@Sun.COM UINT32 Flags; 11117851SDana.Myers@Sun.COM UINT64 Reserved2; /* Reserved, must be zero */ 11122623Smyers 11137851SDana.Myers@Sun.COM } ACPI_SRAT_MEM_AFFINITY; 11147851SDana.Myers@Sun.COM 11157851SDana.Myers@Sun.COM /* Flags */ 11167851SDana.Myers@Sun.COM 11177851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 11187851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 11197851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 11202623Smyers 1121*11225SDana.Myers@Sun.COM 1122*11225SDana.Myers@Sun.COM /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 11232623Smyers 11247851SDana.Myers@Sun.COM typedef struct acpi_srat_x2apic_cpu_affinity 11257851SDana.Myers@Sun.COM { 11267851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 11277851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved, must be zero */ 11287851SDana.Myers@Sun.COM UINT32 ProximityDomain; 11297851SDana.Myers@Sun.COM UINT32 ApicId; 11307851SDana.Myers@Sun.COM UINT32 Flags; 1131*11225SDana.Myers@Sun.COM UINT32 ClockDomain; 1132*11225SDana.Myers@Sun.COM UINT32 Reserved2; 11332623Smyers 11347851SDana.Myers@Sun.COM } ACPI_SRAT_X2APIC_CPU_AFFINITY; 11357851SDana.Myers@Sun.COM 11367851SDana.Myers@Sun.COM /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 11377851SDana.Myers@Sun.COM 11387851SDana.Myers@Sun.COM #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 11392623Smyers 11402623Smyers 11412623Smyers /* Reset to default packing */ 11420Sstevel@tonic-gate 11430Sstevel@tonic-gate #pragma pack() 11440Sstevel@tonic-gate 11450Sstevel@tonic-gate #endif /* __ACTBL1_H__ */ 1146