11da177e4SLinus Torvalds /****************************************************************************** 21da177e4SLinus Torvalds * 3793c2388SBob Moore * Name: actbl1.h - Additional ACPI table definitions 41da177e4SLinus Torvalds * 51da177e4SLinus Torvalds *****************************************************************************/ 61da177e4SLinus Torvalds 71da177e4SLinus Torvalds /* 87735ca0eSBob Moore * Copyright (C) 2000 - 2017, Intel Corp. 91da177e4SLinus Torvalds * All rights reserved. 101da177e4SLinus Torvalds * 111da177e4SLinus Torvalds * Redistribution and use in source and binary forms, with or without 121da177e4SLinus Torvalds * modification, are permitted provided that the following conditions 131da177e4SLinus Torvalds * are met: 141da177e4SLinus Torvalds * 1. Redistributions of source code must retain the above copyright 151da177e4SLinus Torvalds * notice, this list of conditions, and the following disclaimer, 161da177e4SLinus Torvalds * without modification. 171da177e4SLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 181da177e4SLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 191da177e4SLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 201da177e4SLinus Torvalds * including a substantially similar Disclaimer requirement for further 211da177e4SLinus Torvalds * binary redistribution. 221da177e4SLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 231da177e4SLinus Torvalds * of any contributors may be used to endorse or promote products derived 241da177e4SLinus Torvalds * from this software without specific prior written permission. 251da177e4SLinus Torvalds * 261da177e4SLinus Torvalds * Alternatively, this software may be distributed under the terms of the 271da177e4SLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 281da177e4SLinus Torvalds * Software Foundation. 291da177e4SLinus Torvalds * 301da177e4SLinus Torvalds * NO WARRANTY 311da177e4SLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 321da177e4SLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 331da177e4SLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 341da177e4SLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 351da177e4SLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 361da177e4SLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 371da177e4SLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 381da177e4SLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 391da177e4SLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 401da177e4SLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 411da177e4SLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 421da177e4SLinus Torvalds */ 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds #ifndef __ACTBL1_H__ 451da177e4SLinus Torvalds #define __ACTBL1_H__ 461da177e4SLinus Torvalds 47793c2388SBob Moore /******************************************************************************* 48793c2388SBob Moore * 49b24aad44SBob Moore * Additional ACPI Tables (1) 50793c2388SBob Moore * 51793c2388SBob Moore * These tables are not consumed directly by the ACPICA subsystem, but are 52793c2388SBob Moore * included here to support device drivers and the AML disassembler. 53793c2388SBob Moore * 54b24aad44SBob Moore * The tables in this file are fully defined within the ACPI specification. 55b24aad44SBob Moore * 56793c2388SBob Moore ******************************************************************************/ 57793c2388SBob Moore 58793c2388SBob Moore /* 596e2d5ebdSBob Moore * Values for description table header signatures for tables defined in this 606e2d5ebdSBob Moore * file. Useful because they make it more difficult to inadvertently type in 616e2d5ebdSBob Moore * the wrong signature. 62793c2388SBob Moore */ 63970d9c9eSBob Moore #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 64793c2388SBob Moore #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 65793c2388SBob Moore #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 66970d9c9eSBob Moore #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 67970d9c9eSBob Moore #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 68fa418ddfSLv Zheng #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */ 69970d9c9eSBob Moore #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 70793c2388SBob Moore #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 716e2d5ebdSBob Moore #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ 72b8355bcaSLv Zheng #define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */ 73793c2388SBob Moore #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 74793c2388SBob Moore #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 75793c2388SBob Moore #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 7604f8e384SBob Moore #define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */ 77793c2388SBob Moore 78793c2388SBob Moore /* 79793c2388SBob Moore * All tables must be byte-packed to match the ACPI specification, since 80793c2388SBob Moore * the tables are provided by the system BIOS. 81793c2388SBob Moore */ 821da177e4SLinus Torvalds #pragma pack(1) 831da177e4SLinus Torvalds 841da177e4SLinus Torvalds /* 85be030a57SBob Moore * Note: C bitfields are not used for this reason: 86be030a57SBob Moore * 87be030a57SBob Moore * "Bitfields are great and easy to read, but unfortunately the C language 88be030a57SBob Moore * does not specify the layout of bitfields in memory, which means they are 89be030a57SBob Moore * essentially useless for dealing with packed data in on-disk formats or 90be030a57SBob Moore * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 91be030a57SBob Moore * this decision was a design error in C. Ritchie could have picked an order 92be030a57SBob Moore * and stuck with it." Norman Ramsey. 93be030a57SBob Moore * See http://stackoverflow.com/a/1053662/41661 941da177e4SLinus Torvalds */ 95793c2388SBob Moore 966e2d5ebdSBob Moore /******************************************************************************* 976e2d5ebdSBob Moore * 986e2d5ebdSBob Moore * Common subtable headers 996e2d5ebdSBob Moore * 1006e2d5ebdSBob Moore ******************************************************************************/ 1016e2d5ebdSBob Moore 1026e2d5ebdSBob Moore /* Generic subtable header (used in MADT, SRAT, etc.) */ 103f3d2e786SBob Moore 104f3d2e786SBob Moore struct acpi_subtable_header { 105f3d2e786SBob Moore u8 type; 106f3d2e786SBob Moore u8 length; 107f3d2e786SBob Moore }; 108f3d2e786SBob Moore 1096e2d5ebdSBob Moore /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 110970d9c9eSBob Moore 111970d9c9eSBob Moore struct acpi_whea_header { 112970d9c9eSBob Moore u8 action; 113970d9c9eSBob Moore u8 instruction; 114970d9c9eSBob Moore u8 flags; 115970d9c9eSBob Moore u8 reserved; 116970d9c9eSBob Moore struct acpi_generic_address register_region; 1173fa34777SBob Moore u64 value; /* Value used with Read/Write register */ 1183fa34777SBob Moore u64 mask; /* Bitmask required for this register instruction */ 119970d9c9eSBob Moore }; 120970d9c9eSBob Moore 121793c2388SBob Moore /******************************************************************************* 122793c2388SBob Moore * 1236e2d5ebdSBob Moore * BERT - Boot Error Record Table (ACPI 4.0) 1246e2d5ebdSBob Moore * Version 1 125970d9c9eSBob Moore * 126970d9c9eSBob Moore ******************************************************************************/ 127970d9c9eSBob Moore 128970d9c9eSBob Moore struct acpi_table_bert { 129970d9c9eSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 130970d9c9eSBob Moore u32 region_length; /* Length of the boot error region */ 131b595076aSUwe Kleine-König u64 address; /* Physical address of the error region */ 132970d9c9eSBob Moore }; 133970d9c9eSBob Moore 1346e2d5ebdSBob Moore /* Boot Error Region (not a subtable, pointed to by Address field above) */ 1353fa34777SBob Moore 136970d9c9eSBob Moore struct acpi_bert_region { 1376e2d5ebdSBob Moore u32 block_status; /* Type of error information */ 1386e2d5ebdSBob Moore u32 raw_data_offset; /* Offset to raw error data */ 1396e2d5ebdSBob Moore u32 raw_data_length; /* Length of raw error data */ 1406e2d5ebdSBob Moore u32 data_length; /* Length of generic error data */ 1416e2d5ebdSBob Moore u32 error_severity; /* Severity code */ 142970d9c9eSBob Moore }; 143970d9c9eSBob Moore 1446e2d5ebdSBob Moore /* Values for block_status flags above */ 145970d9c9eSBob Moore 146970d9c9eSBob Moore #define ACPI_BERT_UNCORRECTABLE (1) 1476e2d5ebdSBob Moore #define ACPI_BERT_CORRECTABLE (1<<1) 1486e2d5ebdSBob Moore #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 1496e2d5ebdSBob Moore #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 1506e2d5ebdSBob Moore #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 1516e2d5ebdSBob Moore 1526e2d5ebdSBob Moore /* Values for error_severity above */ 1536e2d5ebdSBob Moore 1546e2d5ebdSBob Moore enum acpi_bert_error_severity { 1556e2d5ebdSBob Moore ACPI_BERT_ERROR_CORRECTABLE = 0, 1566e2d5ebdSBob Moore ACPI_BERT_ERROR_FATAL = 1, 1576e2d5ebdSBob Moore ACPI_BERT_ERROR_CORRECTED = 2, 1586e2d5ebdSBob Moore ACPI_BERT_ERROR_NONE = 3, 1596e2d5ebdSBob Moore ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 1606e2d5ebdSBob Moore }; 1616e2d5ebdSBob Moore 1626e2d5ebdSBob Moore /* 1636e2d5ebdSBob Moore * Note: The generic error data that follows the error_severity field above 1646e2d5ebdSBob Moore * uses the struct acpi_hest_generic_data defined under the HEST table below 1656e2d5ebdSBob Moore */ 166970d9c9eSBob Moore 167970d9c9eSBob Moore /******************************************************************************* 168970d9c9eSBob Moore * 1696e2d5ebdSBob Moore * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 1706e2d5ebdSBob Moore * Version 1 171793c2388SBob Moore * 172793c2388SBob Moore ******************************************************************************/ 173793c2388SBob Moore 174793c2388SBob Moore struct acpi_table_cpep { 175f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 176f3d2e786SBob Moore u64 reserved; 177793c2388SBob Moore }; 178793c2388SBob Moore 179793c2388SBob Moore /* Subtable */ 180793c2388SBob Moore 181793c2388SBob Moore struct acpi_cpep_polling { 1826e2d5ebdSBob Moore struct acpi_subtable_header header; 183f3d2e786SBob Moore u8 id; /* Processor ID */ 184f3d2e786SBob Moore u8 eid; /* Processor EID */ 185f3d2e786SBob Moore u32 interval; /* Polling interval (msec) */ 186793c2388SBob Moore }; 187793c2388SBob Moore 188793c2388SBob Moore /******************************************************************************* 189793c2388SBob Moore * 190793c2388SBob Moore * ECDT - Embedded Controller Boot Resources Table 1916e2d5ebdSBob Moore * Version 1 192793c2388SBob Moore * 193793c2388SBob Moore ******************************************************************************/ 194793c2388SBob Moore 195f3d2e786SBob Moore struct acpi_table_ecdt { 196f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 197f3d2e786SBob Moore struct acpi_generic_address control; /* Address of EC command/status register */ 198f3d2e786SBob Moore struct acpi_generic_address data; /* Address of EC data register */ 199793c2388SBob Moore u32 uid; /* Unique ID - must be same as the EC _UID method */ 200f3d2e786SBob Moore u8 gpe; /* The GPE for the EC */ 201f3d2e786SBob Moore u8 id[1]; /* Full namepath of the EC in the ACPI namespace */ 202793c2388SBob Moore }; 203793c2388SBob Moore 204793c2388SBob Moore /******************************************************************************* 205793c2388SBob Moore * 2066e2d5ebdSBob Moore * EINJ - Error Injection Table (ACPI 4.0) 2076e2d5ebdSBob Moore * Version 1 208970d9c9eSBob Moore * 209970d9c9eSBob Moore ******************************************************************************/ 210970d9c9eSBob Moore 211970d9c9eSBob Moore struct acpi_table_einj { 212970d9c9eSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 213970d9c9eSBob Moore u32 header_length; 2146e2d5ebdSBob Moore u8 flags; 2156e2d5ebdSBob Moore u8 reserved[3]; 216970d9c9eSBob Moore u32 entries; 217970d9c9eSBob Moore }; 218970d9c9eSBob Moore 219970d9c9eSBob Moore /* EINJ Injection Instruction Entries (actions) */ 220970d9c9eSBob Moore 221970d9c9eSBob Moore struct acpi_einj_entry { 222970d9c9eSBob Moore struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 223970d9c9eSBob Moore }; 224970d9c9eSBob Moore 2256e2d5ebdSBob Moore /* Masks for Flags field above */ 2266e2d5ebdSBob Moore 2276e2d5ebdSBob Moore #define ACPI_EINJ_PRESERVE (1) 2286e2d5ebdSBob Moore 229970d9c9eSBob Moore /* Values for Action field above */ 230970d9c9eSBob Moore 231970d9c9eSBob Moore enum acpi_einj_actions { 232970d9c9eSBob Moore ACPI_EINJ_BEGIN_OPERATION = 0, 233970d9c9eSBob Moore ACPI_EINJ_GET_TRIGGER_TABLE = 1, 234970d9c9eSBob Moore ACPI_EINJ_SET_ERROR_TYPE = 2, 235970d9c9eSBob Moore ACPI_EINJ_GET_ERROR_TYPE = 3, 236970d9c9eSBob Moore ACPI_EINJ_END_OPERATION = 4, 237970d9c9eSBob Moore ACPI_EINJ_EXECUTE_OPERATION = 5, 238970d9c9eSBob Moore ACPI_EINJ_CHECK_BUSY_STATUS = 6, 239970d9c9eSBob Moore ACPI_EINJ_GET_COMMAND_STATUS = 7, 240c5bd6537SBob Moore ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, 241a88e0ce6SBob Moore ACPI_EINJ_GET_EXECUTE_TIMINGS = 9, 242a88e0ce6SBob Moore ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */ 243970d9c9eSBob Moore ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 244970d9c9eSBob Moore }; 245970d9c9eSBob Moore 246970d9c9eSBob Moore /* Values for Instruction field above */ 247970d9c9eSBob Moore 248970d9c9eSBob Moore enum acpi_einj_instructions { 249970d9c9eSBob Moore ACPI_EINJ_READ_REGISTER = 0, 250970d9c9eSBob Moore ACPI_EINJ_READ_REGISTER_VALUE = 1, 251970d9c9eSBob Moore ACPI_EINJ_WRITE_REGISTER = 2, 252970d9c9eSBob Moore ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 253970d9c9eSBob Moore ACPI_EINJ_NOOP = 4, 254c5bd6537SBob Moore ACPI_EINJ_FLUSH_CACHELINE = 5, 255c5bd6537SBob Moore ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ 256c5bd6537SBob Moore }; 257c5bd6537SBob Moore 258c5bd6537SBob Moore struct acpi_einj_error_type_with_addr { 259c5bd6537SBob Moore u32 error_type; 260c5bd6537SBob Moore u32 vendor_struct_offset; 261c5bd6537SBob Moore u32 flags; 262c5bd6537SBob Moore u32 apic_id; 263c5bd6537SBob Moore u64 address; 264c5bd6537SBob Moore u64 range; 265c5bd6537SBob Moore u32 pcie_id; 266c5bd6537SBob Moore }; 267c5bd6537SBob Moore 268c5bd6537SBob Moore struct acpi_einj_vendor { 269c5bd6537SBob Moore u32 length; 270c5bd6537SBob Moore u32 pcie_id; 271c5bd6537SBob Moore u16 vendor_id; 272c5bd6537SBob Moore u16 device_id; 273c5bd6537SBob Moore u8 revision_id; 274c5bd6537SBob Moore u8 reserved[3]; 275970d9c9eSBob Moore }; 276970d9c9eSBob Moore 2773fa34777SBob Moore /* EINJ Trigger Error Action Table */ 2783fa34777SBob Moore 2793fa34777SBob Moore struct acpi_einj_trigger { 2803fa34777SBob Moore u32 header_size; 2813fa34777SBob Moore u32 revision; 2823fa34777SBob Moore u32 table_size; 2833fa34777SBob Moore u32 entry_count; 2843fa34777SBob Moore }; 2853fa34777SBob Moore 2866e2d5ebdSBob Moore /* Command status return values */ 2876e2d5ebdSBob Moore 2886e2d5ebdSBob Moore enum acpi_einj_command_status { 2896e2d5ebdSBob Moore ACPI_EINJ_SUCCESS = 0, 2906e2d5ebdSBob Moore ACPI_EINJ_FAILURE = 1, 2916e2d5ebdSBob Moore ACPI_EINJ_INVALID_ACCESS = 2, 2926e2d5ebdSBob Moore ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 2936e2d5ebdSBob Moore }; 2946e2d5ebdSBob Moore 2956e2d5ebdSBob Moore /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 2966e2d5ebdSBob Moore 2976e2d5ebdSBob Moore #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 2986e2d5ebdSBob Moore #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 2996e2d5ebdSBob Moore #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 3006e2d5ebdSBob Moore #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 3016e2d5ebdSBob Moore #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 3026e2d5ebdSBob Moore #define ACPI_EINJ_MEMORY_FATAL (1<<5) 3036e2d5ebdSBob Moore #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 3046e2d5ebdSBob Moore #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 3056e2d5ebdSBob Moore #define ACPI_EINJ_PCIX_FATAL (1<<8) 3066e2d5ebdSBob Moore #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 3076e2d5ebdSBob Moore #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 3086e2d5ebdSBob Moore #define ACPI_EINJ_PLATFORM_FATAL (1<<11) 309c5bd6537SBob Moore #define ACPI_EINJ_VENDOR_DEFINED (1<<31) 3106e2d5ebdSBob Moore 311970d9c9eSBob Moore /******************************************************************************* 312970d9c9eSBob Moore * 3136e2d5ebdSBob Moore * ERST - Error Record Serialization Table (ACPI 4.0) 3146e2d5ebdSBob Moore * Version 1 315970d9c9eSBob Moore * 316970d9c9eSBob Moore ******************************************************************************/ 317970d9c9eSBob Moore 318970d9c9eSBob Moore struct acpi_table_erst { 319970d9c9eSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 320970d9c9eSBob Moore u32 header_length; 321970d9c9eSBob Moore u32 reserved; 322970d9c9eSBob Moore u32 entries; 323970d9c9eSBob Moore }; 324970d9c9eSBob Moore 325970d9c9eSBob Moore /* ERST Serialization Entries (actions) */ 326970d9c9eSBob Moore 327970d9c9eSBob Moore struct acpi_erst_entry { 328970d9c9eSBob Moore struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 329970d9c9eSBob Moore }; 330970d9c9eSBob Moore 3316e2d5ebdSBob Moore /* Masks for Flags field above */ 3326e2d5ebdSBob Moore 3336e2d5ebdSBob Moore #define ACPI_ERST_PRESERVE (1) 3346e2d5ebdSBob Moore 335970d9c9eSBob Moore /* Values for Action field above */ 336970d9c9eSBob Moore 337970d9c9eSBob Moore enum acpi_erst_actions { 3386e2d5ebdSBob Moore ACPI_ERST_BEGIN_WRITE = 0, 3396e2d5ebdSBob Moore ACPI_ERST_BEGIN_READ = 1, 3406e2d5ebdSBob Moore ACPI_ERST_BEGIN_CLEAR = 2, 3416e2d5ebdSBob Moore ACPI_ERST_END = 3, 342970d9c9eSBob Moore ACPI_ERST_SET_RECORD_OFFSET = 4, 343970d9c9eSBob Moore ACPI_ERST_EXECUTE_OPERATION = 5, 344970d9c9eSBob Moore ACPI_ERST_CHECK_BUSY_STATUS = 6, 345970d9c9eSBob Moore ACPI_ERST_GET_COMMAND_STATUS = 7, 3466e2d5ebdSBob Moore ACPI_ERST_GET_RECORD_ID = 8, 3476e2d5ebdSBob Moore ACPI_ERST_SET_RECORD_ID = 9, 348970d9c9eSBob Moore ACPI_ERST_GET_RECORD_COUNT = 10, 349970d9c9eSBob Moore ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 350970d9c9eSBob Moore ACPI_ERST_NOT_USED = 12, 351970d9c9eSBob Moore ACPI_ERST_GET_ERROR_RANGE = 13, 352970d9c9eSBob Moore ACPI_ERST_GET_ERROR_LENGTH = 14, 353970d9c9eSBob Moore ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 354a88e0ce6SBob Moore ACPI_ERST_EXECUTE_TIMINGS = 16, 355a88e0ce6SBob Moore ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */ 356970d9c9eSBob Moore }; 357970d9c9eSBob Moore 358970d9c9eSBob Moore /* Values for Instruction field above */ 359970d9c9eSBob Moore 360970d9c9eSBob Moore enum acpi_erst_instructions { 361970d9c9eSBob Moore ACPI_ERST_READ_REGISTER = 0, 362970d9c9eSBob Moore ACPI_ERST_READ_REGISTER_VALUE = 1, 363970d9c9eSBob Moore ACPI_ERST_WRITE_REGISTER = 2, 364970d9c9eSBob Moore ACPI_ERST_WRITE_REGISTER_VALUE = 3, 365970d9c9eSBob Moore ACPI_ERST_NOOP = 4, 366970d9c9eSBob Moore ACPI_ERST_LOAD_VAR1 = 5, 367970d9c9eSBob Moore ACPI_ERST_LOAD_VAR2 = 6, 368970d9c9eSBob Moore ACPI_ERST_STORE_VAR1 = 7, 369970d9c9eSBob Moore ACPI_ERST_ADD = 8, 370970d9c9eSBob Moore ACPI_ERST_SUBTRACT = 9, 371970d9c9eSBob Moore ACPI_ERST_ADD_VALUE = 10, 372970d9c9eSBob Moore ACPI_ERST_SUBTRACT_VALUE = 11, 373970d9c9eSBob Moore ACPI_ERST_STALL = 12, 374970d9c9eSBob Moore ACPI_ERST_STALL_WHILE_TRUE = 13, 375970d9c9eSBob Moore ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 376970d9c9eSBob Moore ACPI_ERST_GOTO = 15, 377970d9c9eSBob Moore ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 378970d9c9eSBob Moore ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 379970d9c9eSBob Moore ACPI_ERST_MOVE_DATA = 18, 380970d9c9eSBob Moore ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 381970d9c9eSBob Moore }; 382970d9c9eSBob Moore 3836e2d5ebdSBob Moore /* Command status return values */ 3846e2d5ebdSBob Moore 3856e2d5ebdSBob Moore enum acpi_erst_command_status { 3866e2d5ebdSBob Moore ACPI_ERST_SUCESS = 0, 3876e2d5ebdSBob Moore ACPI_ERST_NO_SPACE = 1, 3886e2d5ebdSBob Moore ACPI_ERST_NOT_AVAILABLE = 2, 3896e2d5ebdSBob Moore ACPI_ERST_FAILURE = 3, 3906e2d5ebdSBob Moore ACPI_ERST_RECORD_EMPTY = 4, 3916e2d5ebdSBob Moore ACPI_ERST_NOT_FOUND = 5, 3926e2d5ebdSBob Moore ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 3936e2d5ebdSBob Moore }; 3946e2d5ebdSBob Moore 3956e2d5ebdSBob Moore /* Error Record Serialization Information */ 3966e2d5ebdSBob Moore 3976e2d5ebdSBob Moore struct acpi_erst_info { 3986e2d5ebdSBob Moore u16 signature; /* Should be "ER" */ 3996e2d5ebdSBob Moore u8 data[48]; 4006e2d5ebdSBob Moore }; 4016e2d5ebdSBob Moore 402970d9c9eSBob Moore /******************************************************************************* 403970d9c9eSBob Moore * 4046e2d5ebdSBob Moore * HEST - Hardware Error Source Table (ACPI 4.0) 4056e2d5ebdSBob Moore * Version 1 406970d9c9eSBob Moore * 407970d9c9eSBob Moore ******************************************************************************/ 408970d9c9eSBob Moore 409970d9c9eSBob Moore struct acpi_table_hest { 410970d9c9eSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 411970d9c9eSBob Moore u32 error_source_count; 412970d9c9eSBob Moore }; 413970d9c9eSBob Moore 4143fa34777SBob Moore /* HEST subtable header */ 4153fa34777SBob Moore 4163fa34777SBob Moore struct acpi_hest_header { 4173fa34777SBob Moore u16 type; 4186e2d5ebdSBob Moore u16 source_id; 4193fa34777SBob Moore }; 4203fa34777SBob Moore 4213fa34777SBob Moore /* Values for Type field above for subtables */ 4223fa34777SBob Moore 4233fa34777SBob Moore enum acpi_hest_types { 4246e2d5ebdSBob Moore ACPI_HEST_TYPE_IA32_CHECK = 0, 4256e2d5ebdSBob Moore ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 4266e2d5ebdSBob Moore ACPI_HEST_TYPE_IA32_NMI = 2, 4276e2d5ebdSBob Moore ACPI_HEST_TYPE_NOT_USED3 = 3, 4286e2d5ebdSBob Moore ACPI_HEST_TYPE_NOT_USED4 = 4, 4296e2d5ebdSBob Moore ACPI_HEST_TYPE_NOT_USED5 = 5, 4303fa34777SBob Moore ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 4313fa34777SBob Moore ACPI_HEST_TYPE_AER_ENDPOINT = 7, 4323fa34777SBob Moore ACPI_HEST_TYPE_AER_BRIDGE = 8, 4336e2d5ebdSBob Moore ACPI_HEST_TYPE_GENERIC_ERROR = 9, 4347cd55c76SBob Moore ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10, 435c042933dSBob Moore ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11, 436c042933dSBob Moore ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */ 4373fa34777SBob Moore }; 4383fa34777SBob Moore 4393fa34777SBob Moore /* 4406e2d5ebdSBob Moore * HEST substructures contained in subtables 4413fa34777SBob Moore */ 4423fa34777SBob Moore 4436e2d5ebdSBob Moore /* 4446e2d5ebdSBob Moore * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and 4456e2d5ebdSBob Moore * struct acpi_hest_ia_corrected structures. 4466e2d5ebdSBob Moore */ 4476e2d5ebdSBob Moore struct acpi_hest_ia_error_bank { 4483fa34777SBob Moore u8 bank_number; 4493fa34777SBob Moore u8 clear_status_on_init; 4503fa34777SBob Moore u8 status_format; 4516e2d5ebdSBob Moore u8 reserved; 4523fa34777SBob Moore u32 control_register; 4536e2d5ebdSBob Moore u64 control_data; 4543fa34777SBob Moore u32 status_register; 4553fa34777SBob Moore u32 address_register; 4563fa34777SBob Moore u32 misc_register; 4573fa34777SBob Moore }; 4583fa34777SBob Moore 4596e2d5ebdSBob Moore /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 4603fa34777SBob Moore 4613fa34777SBob Moore struct acpi_hest_aer_common { 4626e2d5ebdSBob Moore u16 reserved1; 4633fa34777SBob Moore u8 flags; 4643fa34777SBob Moore u8 enabled; 465c276e388SBob Moore u32 records_to_preallocate; 4663fa34777SBob Moore u32 max_sections_per_record; 4674059a310SBetty Dall u32 bus; /* Bus and Segment numbers */ 4683fa34777SBob Moore u16 device; 4693fa34777SBob Moore u16 function; 4703fa34777SBob Moore u16 device_control; 4716e2d5ebdSBob Moore u16 reserved2; 472c276e388SBob Moore u32 uncorrectable_mask; 473c276e388SBob Moore u32 uncorrectable_severity; 474c276e388SBob Moore u32 correctable_mask; 475c276e388SBob Moore u32 advanced_capabilities; 4763fa34777SBob Moore }; 4773fa34777SBob Moore 4786e2d5ebdSBob Moore /* Masks for HEST Flags fields */ 4796e2d5ebdSBob Moore 4806e2d5ebdSBob Moore #define ACPI_HEST_FIRMWARE_FIRST (1) 4816e2d5ebdSBob Moore #define ACPI_HEST_GLOBAL (1<<1) 4822e166c73SBob Moore #define ACPI_HEST_GHES_ASSIST (1<<2) 4836e2d5ebdSBob Moore 4844059a310SBetty Dall /* 4854059a310SBetty Dall * Macros to access the bus/segment numbers in Bus field above: 4864059a310SBetty Dall * Bus number is encoded in bits 7:0 4874059a310SBetty Dall * Segment number is encoded in bits 23:8 4884059a310SBetty Dall */ 4894059a310SBetty Dall #define ACPI_HEST_BUS(bus) ((bus) & 0xFF) 4904059a310SBetty Dall #define ACPI_HEST_SEGMENT(bus) (((bus) >> 8) & 0xFFFF) 4914059a310SBetty Dall 4923fa34777SBob Moore /* Hardware Error Notification */ 4933fa34777SBob Moore 4943fa34777SBob Moore struct acpi_hest_notify { 4953fa34777SBob Moore u8 type; 4963fa34777SBob Moore u8 length; 4973fa34777SBob Moore u16 config_write_enable; 4983fa34777SBob Moore u32 poll_interval; 4993fa34777SBob Moore u32 vector; 5003fa34777SBob Moore u32 polling_threshold_value; 5013fa34777SBob Moore u32 polling_threshold_window; 5023fa34777SBob Moore u32 error_threshold_value; 5033fa34777SBob Moore u32 error_threshold_window; 5043fa34777SBob Moore }; 5053fa34777SBob Moore 5063fa34777SBob Moore /* Values for Notify Type field above */ 5073fa34777SBob Moore 5083fa34777SBob Moore enum acpi_hest_notify_types { 5093fa34777SBob Moore ACPI_HEST_NOTIFY_POLLED = 0, 5103fa34777SBob Moore ACPI_HEST_NOTIFY_EXTERNAL = 1, 5113fa34777SBob Moore ACPI_HEST_NOTIFY_LOCAL = 2, 5123fa34777SBob Moore ACPI_HEST_NOTIFY_SCI = 3, 5133fa34777SBob Moore ACPI_HEST_NOTIFY_NMI = 4, 514ca4a0314SBob Moore ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ 515ca4a0314SBob Moore ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ 5167cd55c76SBob Moore ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */ 5177cd55c76SBob Moore ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */ 5187cd55c76SBob Moore ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */ 5197cd55c76SBob Moore ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */ 5204a8a6058SBob Moore ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */ 5214a8a6058SBob Moore ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ 5223fa34777SBob Moore }; 5233fa34777SBob Moore 5246e2d5ebdSBob Moore /* Values for config_write_enable bitfield above */ 5256e2d5ebdSBob Moore 5266e2d5ebdSBob Moore #define ACPI_HEST_TYPE (1) 5276e2d5ebdSBob Moore #define ACPI_HEST_POLL_INTERVAL (1<<1) 5286e2d5ebdSBob Moore #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 5296e2d5ebdSBob Moore #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 5306e2d5ebdSBob Moore #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 5316e2d5ebdSBob Moore #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 5326e2d5ebdSBob Moore 5333fa34777SBob Moore /* 5343fa34777SBob Moore * HEST subtables 5353fa34777SBob Moore */ 5363fa34777SBob Moore 5376e2d5ebdSBob Moore /* 0: IA32 Machine Check Exception */ 5383fa34777SBob Moore 5396e2d5ebdSBob Moore struct acpi_hest_ia_machine_check { 5403fa34777SBob Moore struct acpi_hest_header header; 5416e2d5ebdSBob Moore u16 reserved1; 542c042933dSBob Moore u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 5436e2d5ebdSBob Moore u8 enabled; 544c276e388SBob Moore u32 records_to_preallocate; 5453fa34777SBob Moore u32 max_sections_per_record; 5463fa34777SBob Moore u64 global_capability_data; 5473fa34777SBob Moore u64 global_control_data; 5483fa34777SBob Moore u8 num_hardware_banks; 5496e2d5ebdSBob Moore u8 reserved3[7]; 5503fa34777SBob Moore }; 5513fa34777SBob Moore 5526e2d5ebdSBob Moore /* 1: IA32 Corrected Machine Check */ 5533fa34777SBob Moore 5541872bbc9SBob Moore struct acpi_hest_ia_corrected { 5553fa34777SBob Moore struct acpi_hest_header header; 5566e2d5ebdSBob Moore u16 reserved1; 557c042933dSBob Moore u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 5583fa34777SBob Moore u8 enabled; 559c276e388SBob Moore u32 records_to_preallocate; 5603fa34777SBob Moore u32 max_sections_per_record; 5613fa34777SBob Moore struct acpi_hest_notify notify; 5623fa34777SBob Moore u8 num_hardware_banks; 5636e2d5ebdSBob Moore u8 reserved2[3]; 5643fa34777SBob Moore }; 5653fa34777SBob Moore 5666e2d5ebdSBob Moore /* 2: IA32 Non-Maskable Interrupt */ 5673fa34777SBob Moore 5686e2d5ebdSBob Moore struct acpi_hest_ia_nmi { 5693fa34777SBob Moore struct acpi_hest_header header; 5703fa34777SBob Moore u32 reserved; 571c276e388SBob Moore u32 records_to_preallocate; 5723fa34777SBob Moore u32 max_sections_per_record; 5733fa34777SBob Moore u32 max_raw_data_length; 5743fa34777SBob Moore }; 5753fa34777SBob Moore 5766e2d5ebdSBob Moore /* 3,4,5: Not used */ 5773fa34777SBob Moore 5783fa34777SBob Moore /* 6: PCI Express Root Port AER */ 5793fa34777SBob Moore 5803fa34777SBob Moore struct acpi_hest_aer_root { 5813fa34777SBob Moore struct acpi_hest_header header; 5823fa34777SBob Moore struct acpi_hest_aer_common aer; 5833fa34777SBob Moore u32 root_error_command; 5843fa34777SBob Moore }; 5853fa34777SBob Moore 5863fa34777SBob Moore /* 7: PCI Express AER (AER Endpoint) */ 5873fa34777SBob Moore 5883fa34777SBob Moore struct acpi_hest_aer { 5893fa34777SBob Moore struct acpi_hest_header header; 5903fa34777SBob Moore struct acpi_hest_aer_common aer; 5913fa34777SBob Moore }; 5923fa34777SBob Moore 5933fa34777SBob Moore /* 8: PCI Express/PCI-X Bridge AER */ 5943fa34777SBob Moore 5953fa34777SBob Moore struct acpi_hest_aer_bridge { 5963fa34777SBob Moore struct acpi_hest_header header; 5973fa34777SBob Moore struct acpi_hest_aer_common aer; 598c276e388SBob Moore u32 uncorrectable_mask2; 599c276e388SBob Moore u32 uncorrectable_severity2; 600c276e388SBob Moore u32 advanced_capabilities2; 6013fa34777SBob Moore }; 6023fa34777SBob Moore 6033fa34777SBob Moore /* 9: Generic Hardware Error Source */ 6043fa34777SBob Moore 6053fa34777SBob Moore struct acpi_hest_generic { 6063fa34777SBob Moore struct acpi_hest_header header; 6073fa34777SBob Moore u16 related_source_id; 6086e2d5ebdSBob Moore u8 reserved; 6093fa34777SBob Moore u8 enabled; 610c276e388SBob Moore u32 records_to_preallocate; 6113fa34777SBob Moore u32 max_sections_per_record; 6123fa34777SBob Moore u32 max_raw_data_length; 6133fa34777SBob Moore struct acpi_generic_address error_status_address; 6143fa34777SBob Moore struct acpi_hest_notify notify; 6156e2d5ebdSBob Moore u32 error_block_length; 6166e2d5ebdSBob Moore }; 6176e2d5ebdSBob Moore 6187cd55c76SBob Moore /* 10: Generic Hardware Error Source, version 2 */ 6197cd55c76SBob Moore 6207cd55c76SBob Moore struct acpi_hest_generic_v2 { 6217cd55c76SBob Moore struct acpi_hest_header header; 6227cd55c76SBob Moore u16 related_source_id; 6237cd55c76SBob Moore u8 reserved; 6247cd55c76SBob Moore u8 enabled; 6257cd55c76SBob Moore u32 records_to_preallocate; 6267cd55c76SBob Moore u32 max_sections_per_record; 6277cd55c76SBob Moore u32 max_raw_data_length; 6287cd55c76SBob Moore struct acpi_generic_address error_status_address; 6297cd55c76SBob Moore struct acpi_hest_notify notify; 6307cd55c76SBob Moore u32 error_block_length; 6317cd55c76SBob Moore struct acpi_generic_address read_ack_register; 6327cd55c76SBob Moore u64 read_ack_preserve; 6337cd55c76SBob Moore u64 read_ack_write; 6347cd55c76SBob Moore }; 6357cd55c76SBob Moore 6366e2d5ebdSBob Moore /* Generic Error Status block */ 6376e2d5ebdSBob Moore 6380a00fd5eSLv Zheng struct acpi_hest_generic_status { 6396e2d5ebdSBob Moore u32 block_status; 6406e2d5ebdSBob Moore u32 raw_data_offset; 6416e2d5ebdSBob Moore u32 raw_data_length; 6426e2d5ebdSBob Moore u32 data_length; 6436e2d5ebdSBob Moore u32 error_severity; 6446e2d5ebdSBob Moore }; 6456e2d5ebdSBob Moore 6466e2d5ebdSBob Moore /* Values for block_status flags above */ 6476e2d5ebdSBob Moore 6480a00fd5eSLv Zheng #define ACPI_HEST_UNCORRECTABLE (1) 6490a00fd5eSLv Zheng #define ACPI_HEST_CORRECTABLE (1<<1) 6500a00fd5eSLv Zheng #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 6510a00fd5eSLv Zheng #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 6520a00fd5eSLv Zheng #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 6536e2d5ebdSBob Moore 6546e2d5ebdSBob Moore /* Generic Error Data entry */ 6556e2d5ebdSBob Moore 6560a00fd5eSLv Zheng struct acpi_hest_generic_data { 6576e2d5ebdSBob Moore u8 section_type[16]; 6586e2d5ebdSBob Moore u32 error_severity; 6596e2d5ebdSBob Moore u16 revision; 6606e2d5ebdSBob Moore u8 validation_bits; 6616e2d5ebdSBob Moore u8 flags; 6626e2d5ebdSBob Moore u32 error_data_length; 6636e2d5ebdSBob Moore u8 fru_id[16]; 6646e2d5ebdSBob Moore u8 fru_text[20]; 6653fa34777SBob Moore }; 666970d9c9eSBob Moore 6677cd55c76SBob Moore /* Extension for revision 0x0300 */ 6687cd55c76SBob Moore 6697cd55c76SBob Moore struct acpi_hest_generic_data_v300 { 6707cd55c76SBob Moore u8 section_type[16]; 6717cd55c76SBob Moore u32 error_severity; 6727cd55c76SBob Moore u16 revision; 6737cd55c76SBob Moore u8 validation_bits; 6747cd55c76SBob Moore u8 flags; 6757cd55c76SBob Moore u32 error_data_length; 6767cd55c76SBob Moore u8 fru_id[16]; 6777cd55c76SBob Moore u8 fru_text[20]; 6787cd55c76SBob Moore u64 time_stamp; 6797cd55c76SBob Moore }; 6807cd55c76SBob Moore 6817cd55c76SBob Moore /* Values for error_severity above */ 6827cd55c76SBob Moore 6837cd55c76SBob Moore #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0 6847cd55c76SBob Moore #define ACPI_HEST_GEN_ERROR_FATAL 1 6857cd55c76SBob Moore #define ACPI_HEST_GEN_ERROR_CORRECTED 2 6867cd55c76SBob Moore #define ACPI_HEST_GEN_ERROR_NONE 3 6877cd55c76SBob Moore 6887cd55c76SBob Moore /* Flags for validation_bits above */ 6897cd55c76SBob Moore 6907cd55c76SBob Moore #define ACPI_HEST_GEN_VALID_FRU_ID (1) 6917cd55c76SBob Moore #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1) 6927cd55c76SBob Moore #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2) 6937cd55c76SBob Moore 694c042933dSBob Moore /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */ 695c042933dSBob Moore 696c042933dSBob Moore struct acpi_hest_ia_deferred_check { 697c042933dSBob Moore struct acpi_hest_header header; 698c042933dSBob Moore u16 reserved1; 699c042933dSBob Moore u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 700c042933dSBob Moore u8 enabled; 701c042933dSBob Moore u32 records_to_preallocate; 702c042933dSBob Moore u32 max_sections_per_record; 703c042933dSBob Moore struct acpi_hest_notify notify; 704c042933dSBob Moore u8 num_hardware_banks; 705c042933dSBob Moore u8 reserved2[3]; 706c042933dSBob Moore }; 707c042933dSBob Moore 708970d9c9eSBob Moore /******************************************************************************* 709970d9c9eSBob Moore * 710fa418ddfSLv Zheng * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2) 711fa418ddfSLv Zheng * Version 1 712fa418ddfSLv Zheng * 713fa418ddfSLv Zheng ******************************************************************************/ 714fa418ddfSLv Zheng 715fa418ddfSLv Zheng struct acpi_table_hmat { 716fa418ddfSLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 717fa418ddfSLv Zheng u32 reserved; 718fa418ddfSLv Zheng }; 719fa418ddfSLv Zheng 720fa418ddfSLv Zheng /* Values for HMAT structure types */ 721fa418ddfSLv Zheng 722fa418ddfSLv Zheng enum acpi_hmat_type { 723fa418ddfSLv Zheng ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subystem address range */ 724fa418ddfSLv Zheng ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */ 725fa418ddfSLv Zheng ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */ 726fa418ddfSLv Zheng ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 727fa418ddfSLv Zheng }; 728fa418ddfSLv Zheng 729fa418ddfSLv Zheng struct acpi_hmat_structure { 730fa418ddfSLv Zheng u16 type; 731fa418ddfSLv Zheng u16 reserved; 732fa418ddfSLv Zheng u32 length; 733fa418ddfSLv Zheng }; 734fa418ddfSLv Zheng 735fa418ddfSLv Zheng /* 736fa418ddfSLv Zheng * HMAT Structures, correspond to Type in struct acpi_hmat_structure 737fa418ddfSLv Zheng */ 738fa418ddfSLv Zheng 739fa418ddfSLv Zheng /* 0: Memory subystem address range */ 740fa418ddfSLv Zheng 741fa418ddfSLv Zheng struct acpi_hmat_address_range { 742fa418ddfSLv Zheng struct acpi_hmat_structure header; 743fa418ddfSLv Zheng u16 flags; 744fa418ddfSLv Zheng u16 reserved1; 745fa418ddfSLv Zheng u32 processor_PD; /* Processor proximity domain */ 746fa418ddfSLv Zheng u32 memory_PD; /* Memory proximity domain */ 747fa418ddfSLv Zheng u32 reserved2; 748fa418ddfSLv Zheng u64 physical_address_base; /* Physical address range base */ 749fa418ddfSLv Zheng u64 physical_address_length; /* Physical address range length */ 750fa418ddfSLv Zheng }; 751fa418ddfSLv Zheng 752fa418ddfSLv Zheng /* Masks for Flags field above */ 753fa418ddfSLv Zheng 754fa418ddfSLv Zheng #define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: processor_PD field is valid */ 755fa418ddfSLv Zheng #define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: memory_PD field is valid */ 756fa418ddfSLv Zheng #define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */ 757fa418ddfSLv Zheng 758fa418ddfSLv Zheng /* 1: System locality latency and bandwidth information */ 759fa418ddfSLv Zheng 760fa418ddfSLv Zheng struct acpi_hmat_locality { 761fa418ddfSLv Zheng struct acpi_hmat_structure header; 762fa418ddfSLv Zheng u8 flags; 763fa418ddfSLv Zheng u8 data_type; 764fa418ddfSLv Zheng u16 reserved1; 765fa418ddfSLv Zheng u32 number_of_initiator_Pds; 766fa418ddfSLv Zheng u32 number_of_target_Pds; 767fa418ddfSLv Zheng u32 reserved2; 768fa418ddfSLv Zheng u64 entry_base_unit; 769fa418ddfSLv Zheng }; 770fa418ddfSLv Zheng 771fa418ddfSLv Zheng /* Masks for Flags field above */ 772fa418ddfSLv Zheng 773fa418ddfSLv Zheng #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) 774fa418ddfSLv Zheng 775fa418ddfSLv Zheng /* Values for Memory Hierarchy flag */ 776fa418ddfSLv Zheng 777fa418ddfSLv Zheng #define ACPI_HMAT_MEMORY 0 778fa418ddfSLv Zheng #define ACPI_HMAT_LAST_LEVEL_CACHE 1 779fa418ddfSLv Zheng #define ACPI_HMAT_1ST_LEVEL_CACHE 2 780fa418ddfSLv Zheng #define ACPI_HMAT_2ND_LEVEL_CACHE 3 781fa418ddfSLv Zheng #define ACPI_HMAT_3RD_LEVEL_CACHE 4 782fa418ddfSLv Zheng 783fa418ddfSLv Zheng /* Values for data_type field above */ 784fa418ddfSLv Zheng 785fa418ddfSLv Zheng #define ACPI_HMAT_ACCESS_LATENCY 0 786fa418ddfSLv Zheng #define ACPI_HMAT_READ_LATENCY 1 787fa418ddfSLv Zheng #define ACPI_HMAT_WRITE_LATENCY 2 788fa418ddfSLv Zheng #define ACPI_HMAT_ACCESS_BANDWIDTH 3 789fa418ddfSLv Zheng #define ACPI_HMAT_READ_BANDWIDTH 4 790fa418ddfSLv Zheng #define ACPI_HMAT_WRITE_BANDWIDTH 5 791fa418ddfSLv Zheng 792fa418ddfSLv Zheng /* 2: Memory side cache information */ 793fa418ddfSLv Zheng 794fa418ddfSLv Zheng struct acpi_hmat_cache { 795fa418ddfSLv Zheng struct acpi_hmat_structure header; 796fa418ddfSLv Zheng u32 memory_PD; 797fa418ddfSLv Zheng u32 reserved1; 798fa418ddfSLv Zheng u64 cache_size; 799fa418ddfSLv Zheng u32 cache_attributes; 800fa418ddfSLv Zheng u16 reserved2; 801fa418ddfSLv Zheng u16 number_of_SMBIOShandles; 802fa418ddfSLv Zheng }; 803fa418ddfSLv Zheng 804fa418ddfSLv Zheng /* Masks for cache_attributes field above */ 805fa418ddfSLv Zheng 806fa418ddfSLv Zheng #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F) 807fa418ddfSLv Zheng #define ACPI_HMAT_CACHE_LEVEL (0x000000F0) 808fa418ddfSLv Zheng #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00) 809fa418ddfSLv Zheng #define ACPI_HMAT_WRITE_POLICY (0x0000F000) 810fa418ddfSLv Zheng #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000) 811fa418ddfSLv Zheng 812fa418ddfSLv Zheng /* Values for cache associativity flag */ 813fa418ddfSLv Zheng 814fa418ddfSLv Zheng #define ACPI_HMAT_CA_NONE (0) 815fa418ddfSLv Zheng #define ACPI_HMAT_CA_DIRECT_MAPPED (1) 816fa418ddfSLv Zheng #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2) 817fa418ddfSLv Zheng 818fa418ddfSLv Zheng /* Values for write policy flag */ 819fa418ddfSLv Zheng 820fa418ddfSLv Zheng #define ACPI_HMAT_CP_NONE (0) 821fa418ddfSLv Zheng #define ACPI_HMAT_CP_WB (1) 822fa418ddfSLv Zheng #define ACPI_HMAT_CP_WT (2) 823fa418ddfSLv Zheng 824fa418ddfSLv Zheng /******************************************************************************* 825fa418ddfSLv Zheng * 826793c2388SBob Moore * MADT - Multiple APIC Description Table 8276e2d5ebdSBob Moore * Version 3 828793c2388SBob Moore * 829793c2388SBob Moore ******************************************************************************/ 830793c2388SBob Moore 831f3d2e786SBob Moore struct acpi_table_madt { 832f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 833f3d2e786SBob Moore u32 address; /* Physical address of local APIC */ 834f3d2e786SBob Moore u32 flags; 8351da177e4SLinus Torvalds }; 8361da177e4SLinus Torvalds 8376e2d5ebdSBob Moore /* Masks for Flags field above */ 838793c2388SBob Moore 839f3d2e786SBob Moore #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 840793c2388SBob Moore 841f3d2e786SBob Moore /* Values for PCATCompat flag */ 842793c2388SBob Moore 843c03baf14SJanosch Hildebrand #define ACPI_MADT_DUAL_PIC 1 844c03baf14SJanosch Hildebrand #define ACPI_MADT_MULTIPLE_APIC 0 845793c2388SBob Moore 8466e2d5ebdSBob Moore /* Values for MADT subtable type in struct acpi_subtable_header */ 847793c2388SBob Moore 848f3d2e786SBob Moore enum acpi_madt_type { 849f3d2e786SBob Moore ACPI_MADT_TYPE_LOCAL_APIC = 0, 850f3d2e786SBob Moore ACPI_MADT_TYPE_IO_APIC = 1, 851f3d2e786SBob Moore ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 852f3d2e786SBob Moore ACPI_MADT_TYPE_NMI_SOURCE = 3, 853f3d2e786SBob Moore ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 854f3d2e786SBob Moore ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 855f3d2e786SBob Moore ACPI_MADT_TYPE_IO_SAPIC = 6, 856f3d2e786SBob Moore ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 857f3d2e786SBob Moore ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 8581d7cc030SBob Moore ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 8591d7cc030SBob Moore ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 860c5bd6537SBob Moore ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11, 861c5bd6537SBob Moore ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12, 862d0c383e4STomasz Nowicki ACPI_MADT_TYPE_GENERIC_MSI_FRAME = 13, 863d0c383e4STomasz Nowicki ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14, 8640cff8dc0SBob Moore ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15, 8650cff8dc0SBob Moore ACPI_MADT_TYPE_RESERVED = 16 /* 16 and greater are reserved */ 866f3d2e786SBob Moore }; 867793c2388SBob Moore 8681da177e4SLinus Torvalds /* 8691a49b72cSBob Moore * MADT Subtables, correspond to Type in struct acpi_subtable_header 8701da177e4SLinus Torvalds */ 871793c2388SBob Moore 872f3d2e786SBob Moore /* 0: Processor Local APIC */ 873793c2388SBob Moore 874f3d2e786SBob Moore struct acpi_madt_local_apic { 875f3d2e786SBob Moore struct acpi_subtable_header header; 876f3d2e786SBob Moore u8 processor_id; /* ACPI processor id */ 877f3d2e786SBob Moore u8 id; /* Processor's local APIC id */ 878f3d2e786SBob Moore u32 lapic_flags; 879f3d2e786SBob Moore }; 880793c2388SBob Moore 881793c2388SBob Moore /* 1: IO APIC */ 882793c2388SBob Moore 883f3d2e786SBob Moore struct acpi_madt_io_apic { 884f3d2e786SBob Moore struct acpi_subtable_header header; 885f3d2e786SBob Moore u8 id; /* I/O APIC ID */ 886ba494beeSBob Moore u8 reserved; /* reserved - must be zero */ 887793c2388SBob Moore u32 address; /* APIC physical address */ 888f3d2e786SBob Moore u32 global_irq_base; /* Global system interrupt where INTI lines start */ 889793c2388SBob Moore }; 890793c2388SBob Moore 891793c2388SBob Moore /* 2: Interrupt Override */ 892793c2388SBob Moore 893f3d2e786SBob Moore struct acpi_madt_interrupt_override { 894f3d2e786SBob Moore struct acpi_subtable_header header; 895f3d2e786SBob Moore u8 bus; /* 0 - ISA */ 896f3d2e786SBob Moore u8 source_irq; /* Interrupt source (IRQ) */ 897f3d2e786SBob Moore u32 global_irq; /* Global system interrupt */ 898f3d2e786SBob Moore u16 inti_flags; 899f3d2e786SBob Moore }; 900793c2388SBob Moore 901f3d2e786SBob Moore /* 3: NMI Source */ 902793c2388SBob Moore 903f3d2e786SBob Moore struct acpi_madt_nmi_source { 904f3d2e786SBob Moore struct acpi_subtable_header header; 905f3d2e786SBob Moore u16 inti_flags; 906f3d2e786SBob Moore u32 global_irq; /* Global system interrupt */ 907793c2388SBob Moore }; 908793c2388SBob Moore 909793c2388SBob Moore /* 4: Local APIC NMI */ 910793c2388SBob Moore 911f3d2e786SBob Moore struct acpi_madt_local_apic_nmi { 912f3d2e786SBob Moore struct acpi_subtable_header header; 913f3d2e786SBob Moore u8 processor_id; /* ACPI processor id */ 914f3d2e786SBob Moore u16 inti_flags; 915f3d2e786SBob Moore u8 lint; /* LINTn to which NMI is connected */ 916793c2388SBob Moore }; 917793c2388SBob Moore 918793c2388SBob Moore /* 5: Address Override */ 919793c2388SBob Moore 920f3d2e786SBob Moore struct acpi_madt_local_apic_override { 921f3d2e786SBob Moore struct acpi_subtable_header header; 922f3d2e786SBob Moore u16 reserved; /* Reserved, must be zero */ 923793c2388SBob Moore u64 address; /* APIC physical address */ 924793c2388SBob Moore }; 925793c2388SBob Moore 926793c2388SBob Moore /* 6: I/O Sapic */ 927793c2388SBob Moore 928f3d2e786SBob Moore struct acpi_madt_io_sapic { 929f3d2e786SBob Moore struct acpi_subtable_header header; 930f3d2e786SBob Moore u8 id; /* I/O SAPIC ID */ 931793c2388SBob Moore u8 reserved; /* Reserved, must be zero */ 932f3d2e786SBob Moore u32 global_irq_base; /* Global interrupt for SAPIC start */ 933793c2388SBob Moore u64 address; /* SAPIC physical address */ 934793c2388SBob Moore }; 935793c2388SBob Moore 936793c2388SBob Moore /* 7: Local Sapic */ 937793c2388SBob Moore 938f3d2e786SBob Moore struct acpi_madt_local_sapic { 939f3d2e786SBob Moore struct acpi_subtable_header header; 940f3d2e786SBob Moore u8 processor_id; /* ACPI processor id */ 941f3d2e786SBob Moore u8 id; /* SAPIC ID */ 942f3d2e786SBob Moore u8 eid; /* SAPIC EID */ 943793c2388SBob Moore u8 reserved[3]; /* Reserved, must be zero */ 944f3d2e786SBob Moore u32 lapic_flags; 945f3d2e786SBob Moore u32 uid; /* Numeric UID - ACPI 3.0 */ 946f3d2e786SBob Moore char uid_string[1]; /* String UID - ACPI 3.0 */ 947793c2388SBob Moore }; 948793c2388SBob Moore 949793c2388SBob Moore /* 8: Platform Interrupt Source */ 950793c2388SBob Moore 951f3d2e786SBob Moore struct acpi_madt_interrupt_source { 952f3d2e786SBob Moore struct acpi_subtable_header header; 953f3d2e786SBob Moore u16 inti_flags; 954f3d2e786SBob Moore u8 type; /* 1=PMI, 2=INIT, 3=corrected */ 955f3d2e786SBob Moore u8 id; /* Processor ID */ 956f3d2e786SBob Moore u8 eid; /* Processor EID */ 957793c2388SBob Moore u8 io_sapic_vector; /* Vector value for PMI interrupts */ 958f3d2e786SBob Moore u32 global_irq; /* Global system interrupt */ 959793c2388SBob Moore u32 flags; /* Interrupt Source Flags */ 960793c2388SBob Moore }; 961793c2388SBob Moore 9626e2d5ebdSBob Moore /* Masks for Flags field above */ 963f3d2e786SBob Moore 964f3d2e786SBob Moore #define ACPI_MADT_CPEI_OVERRIDE (1) 965f3d2e786SBob Moore 966eb2289baSBob Moore /* 9: Processor Local X2APIC (ACPI 4.0) */ 9671d7cc030SBob Moore 9681d7cc030SBob Moore struct acpi_madt_local_x2apic { 9691d7cc030SBob Moore struct acpi_subtable_header header; 97075c8044fSLv Zheng u16 reserved; /* reserved - must be zero */ 971786c221aSSuresh Siddha u32 local_apic_id; /* Processor x2APIC ID */ 9721d7cc030SBob Moore u32 lapic_flags; 973786c221aSSuresh Siddha u32 uid; /* ACPI processor UID */ 9741d7cc030SBob Moore }; 9751d7cc030SBob Moore 976eb2289baSBob Moore /* 10: Local X2APIC NMI (ACPI 4.0) */ 9771d7cc030SBob Moore 9781d7cc030SBob Moore struct acpi_madt_local_x2apic_nmi { 9791d7cc030SBob Moore struct acpi_subtable_header header; 9801d7cc030SBob Moore u16 inti_flags; 981786c221aSSuresh Siddha u32 uid; /* ACPI processor UID */ 9821d7cc030SBob Moore u8 lint; /* LINTn to which NMI is connected */ 98375c8044fSLv Zheng u8 reserved[3]; /* reserved - must be zero */ 9841d7cc030SBob Moore }; 9851d7cc030SBob Moore 9860cff8dc0SBob Moore /* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */ 987c5bd6537SBob Moore 988c5bd6537SBob Moore struct acpi_madt_generic_interrupt { 989c5bd6537SBob Moore struct acpi_subtable_header header; 99075c8044fSLv Zheng u16 reserved; /* reserved - must be zero */ 991d0c383e4STomasz Nowicki u32 cpu_interface_number; 992c5bd6537SBob Moore u32 uid; 993c5bd6537SBob Moore u32 flags; 994c5bd6537SBob Moore u32 parking_version; 995c5bd6537SBob Moore u32 performance_interrupt; 996c5bd6537SBob Moore u64 parked_address; 997c5bd6537SBob Moore u64 base_address; 998d0c383e4STomasz Nowicki u64 gicv_base_address; 999d0c383e4STomasz Nowicki u64 gich_base_address; 1000d0c383e4STomasz Nowicki u32 vgic_interrupt; 1001d0c383e4STomasz Nowicki u64 gicr_base_address; 1002d0c383e4STomasz Nowicki u64 arm_mpidr; 10030cff8dc0SBob Moore u8 efficiency_class; 10040cff8dc0SBob Moore u8 reserved2[3]; 1005c5bd6537SBob Moore }; 1006c5bd6537SBob Moore 1007d0c383e4STomasz Nowicki /* Masks for Flags field above */ 1008d0c383e4STomasz Nowicki 1009d0c383e4STomasz Nowicki /* ACPI_MADT_ENABLED (1) Processor is usable if set */ 1010d0c383e4STomasz Nowicki #define ACPI_MADT_PERFORMANCE_IRQ_MODE (1<<1) /* 01: Performance Interrupt Mode */ 1011d0c383e4STomasz Nowicki #define ACPI_MADT_VGIC_IRQ_MODE (1<<2) /* 02: VGIC Maintenance Interrupt mode */ 1012d0c383e4STomasz Nowicki 10130cff8dc0SBob Moore /* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */ 1014c5bd6537SBob Moore 1015c5bd6537SBob Moore struct acpi_madt_generic_distributor { 1016c5bd6537SBob Moore struct acpi_subtable_header header; 1017ba494beeSBob Moore u16 reserved; /* reserved - must be zero */ 1018c5bd6537SBob Moore u32 gic_id; 1019c5bd6537SBob Moore u64 base_address; 1020c5bd6537SBob Moore u32 global_irq_base; 10210cff8dc0SBob Moore u8 version; 10220cff8dc0SBob Moore u8 reserved2[3]; /* reserved - must be zero */ 1023c5bd6537SBob Moore }; 1024c5bd6537SBob Moore 1025a8bd0f07SHanjun Guo /* Values for Version field above */ 1026a8bd0f07SHanjun Guo 1027a8bd0f07SHanjun Guo enum acpi_madt_gic_version { 1028a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_NONE = 0, 1029a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_V1 = 1, 1030a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_V2 = 2, 1031a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_V3 = 3, 1032a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_V4 = 4, 1033a8bd0f07SHanjun Guo ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */ 1034a8bd0f07SHanjun Guo }; 1035a8bd0f07SHanjun Guo 1036d0c383e4STomasz Nowicki /* 13: Generic MSI Frame (ACPI 5.1) */ 1037d0c383e4STomasz Nowicki 1038d0c383e4STomasz Nowicki struct acpi_madt_generic_msi_frame { 1039d0c383e4STomasz Nowicki struct acpi_subtable_header header; 1040d0c383e4STomasz Nowicki u16 reserved; /* reserved - must be zero */ 1041d0c383e4STomasz Nowicki u32 msi_frame_id; 1042d0c383e4STomasz Nowicki u64 base_address; 1043d0c383e4STomasz Nowicki u32 flags; 1044d0c383e4STomasz Nowicki u16 spi_count; 1045d0c383e4STomasz Nowicki u16 spi_base; 1046d0c383e4STomasz Nowicki }; 1047d0c383e4STomasz Nowicki 1048d0c383e4STomasz Nowicki /* Masks for Flags field above */ 1049d0c383e4STomasz Nowicki 1050d0c383e4STomasz Nowicki #define ACPI_MADT_OVERRIDE_SPI_VALUES (1) 1051d0c383e4STomasz Nowicki 1052d0c383e4STomasz Nowicki /* 14: Generic Redistributor (ACPI 5.1) */ 1053d0c383e4STomasz Nowicki 1054d0c383e4STomasz Nowicki struct acpi_madt_generic_redistributor { 1055d0c383e4STomasz Nowicki struct acpi_subtable_header header; 1056d0c383e4STomasz Nowicki u16 reserved; /* reserved - must be zero */ 1057d0c383e4STomasz Nowicki u64 base_address; 1058d0c383e4STomasz Nowicki u32 length; 1059d0c383e4STomasz Nowicki }; 1060d0c383e4STomasz Nowicki 10610cff8dc0SBob Moore /* 15: Generic Translator (ACPI 6.0) */ 10620cff8dc0SBob Moore 10630cff8dc0SBob Moore struct acpi_madt_generic_translator { 10640cff8dc0SBob Moore struct acpi_subtable_header header; 10650cff8dc0SBob Moore u16 reserved; /* reserved - must be zero */ 10660cff8dc0SBob Moore u32 translation_id; 10670cff8dc0SBob Moore u64 base_address; 10680cff8dc0SBob Moore u32 reserved2; 10690cff8dc0SBob Moore }; 10700cff8dc0SBob Moore 1071f3d2e786SBob Moore /* 1072f3d2e786SBob Moore * Common flags fields for MADT subtables 1073f3d2e786SBob Moore */ 1074f3d2e786SBob Moore 1075d0c383e4STomasz Nowicki /* MADT Local APIC flags */ 1076f3d2e786SBob Moore 1077f3d2e786SBob Moore #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 1078f3d2e786SBob Moore 1079f3d2e786SBob Moore /* MADT MPS INTI flags (inti_flags) */ 1080f3d2e786SBob Moore 1081f3d2e786SBob Moore #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 1082f3d2e786SBob Moore #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 1083f3d2e786SBob Moore 1084f3d2e786SBob Moore /* Values for MPS INTI flags */ 1085f3d2e786SBob Moore 1086f3d2e786SBob Moore #define ACPI_MADT_POLARITY_CONFORMS 0 1087f3d2e786SBob Moore #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 1088f3d2e786SBob Moore #define ACPI_MADT_POLARITY_RESERVED 2 1089f3d2e786SBob Moore #define ACPI_MADT_POLARITY_ACTIVE_LOW 3 1090f3d2e786SBob Moore 1091f3d2e786SBob Moore #define ACPI_MADT_TRIGGER_CONFORMS (0) 1092f3d2e786SBob Moore #define ACPI_MADT_TRIGGER_EDGE (1<<2) 1093f3d2e786SBob Moore #define ACPI_MADT_TRIGGER_RESERVED (2<<2) 1094f3d2e786SBob Moore #define ACPI_MADT_TRIGGER_LEVEL (3<<2) 1095f3d2e786SBob Moore 1096793c2388SBob Moore /******************************************************************************* 1097793c2388SBob Moore * 10986e2d5ebdSBob Moore * MSCT - Maximum System Characteristics Table (ACPI 4.0) 10996e2d5ebdSBob Moore * Version 1 11006e2d5ebdSBob Moore * 11016e2d5ebdSBob Moore ******************************************************************************/ 11026e2d5ebdSBob Moore 11036e2d5ebdSBob Moore struct acpi_table_msct { 11046e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 11056e2d5ebdSBob Moore u32 proximity_offset; /* Location of proximity info struct(s) */ 11066e2d5ebdSBob Moore u32 max_proximity_domains; /* Max number of proximity domains */ 11076e2d5ebdSBob Moore u32 max_clock_domains; /* Max number of clock domains */ 11086e2d5ebdSBob Moore u64 max_address; /* Max physical address in system */ 11096e2d5ebdSBob Moore }; 11106e2d5ebdSBob Moore 1111ba494beeSBob Moore /* subtable - Maximum Proximity Domain Information. Version 1 */ 11126e2d5ebdSBob Moore 11136e2d5ebdSBob Moore struct acpi_msct_proximity { 11146e2d5ebdSBob Moore u8 revision; 11156e2d5ebdSBob Moore u8 length; 11166e2d5ebdSBob Moore u32 range_start; /* Start of domain range */ 11176e2d5ebdSBob Moore u32 range_end; /* End of domain range */ 11186e2d5ebdSBob Moore u32 processor_capacity; 11196e2d5ebdSBob Moore u64 memory_capacity; /* In bytes */ 11206e2d5ebdSBob Moore }; 11216e2d5ebdSBob Moore 11226e2d5ebdSBob Moore /******************************************************************************* 11236e2d5ebdSBob Moore * 1124138a9554SBob Moore * NFIT - NVDIMM Interface Table (ACPI 6.0+) 112504f8e384SBob Moore * Version 1 112604f8e384SBob Moore * 112704f8e384SBob Moore ******************************************************************************/ 112804f8e384SBob Moore 112904f8e384SBob Moore struct acpi_table_nfit { 113004f8e384SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 113104f8e384SBob Moore u32 reserved; /* Reserved, must be zero */ 113204f8e384SBob Moore }; 113304f8e384SBob Moore 113404f8e384SBob Moore /* Subtable header for NFIT */ 113504f8e384SBob Moore 113604f8e384SBob Moore struct acpi_nfit_header { 113704f8e384SBob Moore u16 type; 113804f8e384SBob Moore u16 length; 113904f8e384SBob Moore }; 114004f8e384SBob Moore 114104f8e384SBob Moore /* Values for subtable type in struct acpi_nfit_header */ 114204f8e384SBob Moore 114304f8e384SBob Moore enum acpi_nfit_type { 114404f8e384SBob Moore ACPI_NFIT_TYPE_SYSTEM_ADDRESS = 0, 114504f8e384SBob Moore ACPI_NFIT_TYPE_MEMORY_MAP = 1, 114604f8e384SBob Moore ACPI_NFIT_TYPE_INTERLEAVE = 2, 114704f8e384SBob Moore ACPI_NFIT_TYPE_SMBIOS = 3, 114804f8e384SBob Moore ACPI_NFIT_TYPE_CONTROL_REGION = 4, 114904f8e384SBob Moore ACPI_NFIT_TYPE_DATA_REGION = 5, 115004f8e384SBob Moore ACPI_NFIT_TYPE_FLUSH_ADDRESS = 6, 115104f8e384SBob Moore ACPI_NFIT_TYPE_RESERVED = 7 /* 7 and greater are reserved */ 115204f8e384SBob Moore }; 115304f8e384SBob Moore 115404f8e384SBob Moore /* 115504f8e384SBob Moore * NFIT Subtables 115604f8e384SBob Moore */ 115704f8e384SBob Moore 115804f8e384SBob Moore /* 0: System Physical Address Range Structure */ 115904f8e384SBob Moore 116004f8e384SBob Moore struct acpi_nfit_system_address { 116104f8e384SBob Moore struct acpi_nfit_header header; 116204f8e384SBob Moore u16 range_index; 116304f8e384SBob Moore u16 flags; 116404f8e384SBob Moore u32 reserved; /* Reseved, must be zero */ 116504f8e384SBob Moore u32 proximity_domain; 116604f8e384SBob Moore u8 range_guid[16]; 116704f8e384SBob Moore u64 address; 116804f8e384SBob Moore u64 length; 116904f8e384SBob Moore u64 memory_mapping; 117004f8e384SBob Moore }; 117104f8e384SBob Moore 117204f8e384SBob Moore /* Flags */ 117304f8e384SBob Moore 117404f8e384SBob Moore #define ACPI_NFIT_ADD_ONLINE_ONLY (1) /* 00: Add/Online Operation Only */ 117504f8e384SBob Moore #define ACPI_NFIT_PROXIMITY_VALID (1<<1) /* 01: Proximity Domain Valid */ 117604f8e384SBob Moore 117704f8e384SBob Moore /* Range Type GUIDs appear in the include/acuuid.h file */ 117804f8e384SBob Moore 117904f8e384SBob Moore /* 1: Memory Device to System Address Range Map Structure */ 118004f8e384SBob Moore 118104f8e384SBob Moore struct acpi_nfit_memory_map { 118204f8e384SBob Moore struct acpi_nfit_header header; 118304f8e384SBob Moore u32 device_handle; 118404f8e384SBob Moore u16 physical_id; 118504f8e384SBob Moore u16 region_id; 118604f8e384SBob Moore u16 range_index; 118704f8e384SBob Moore u16 region_index; 118804f8e384SBob Moore u64 region_size; 118904f8e384SBob Moore u64 region_offset; 119004f8e384SBob Moore u64 address; 119104f8e384SBob Moore u16 interleave_index; 119204f8e384SBob Moore u16 interleave_ways; 119304f8e384SBob Moore u16 flags; 119404f8e384SBob Moore u16 reserved; /* Reserved, must be zero */ 119504f8e384SBob Moore }; 119604f8e384SBob Moore 119704f8e384SBob Moore /* Flags */ 119804f8e384SBob Moore 119904f8e384SBob Moore #define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */ 120004f8e384SBob Moore #define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */ 120104f8e384SBob Moore #define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */ 1202ca321d1cSBob Moore #define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */ 120304f8e384SBob Moore #define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */ 120404f8e384SBob Moore #define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */ 1205138a9554SBob Moore #define ACPI_NFIT_MEM_MAP_FAILED (1<<6) /* 06: Mapping to SPA failed */ 120604f8e384SBob Moore 120704f8e384SBob Moore /* 2: Interleave Structure */ 120804f8e384SBob Moore 120904f8e384SBob Moore struct acpi_nfit_interleave { 121004f8e384SBob Moore struct acpi_nfit_header header; 121104f8e384SBob Moore u16 interleave_index; 121204f8e384SBob Moore u16 reserved; /* Reserved, must be zero */ 121304f8e384SBob Moore u32 line_count; 121404f8e384SBob Moore u32 line_size; 121504f8e384SBob Moore u32 line_offset[1]; /* Variable length */ 121604f8e384SBob Moore }; 121704f8e384SBob Moore 121804f8e384SBob Moore /* 3: SMBIOS Management Information Structure */ 121904f8e384SBob Moore 122004f8e384SBob Moore struct acpi_nfit_smbios { 122104f8e384SBob Moore struct acpi_nfit_header header; 122204f8e384SBob Moore u32 reserved; /* Reserved, must be zero */ 122304f8e384SBob Moore u8 data[1]; /* Variable length */ 122404f8e384SBob Moore }; 122504f8e384SBob Moore 122604f8e384SBob Moore /* 4: NVDIMM Control Region Structure */ 122704f8e384SBob Moore 122804f8e384SBob Moore struct acpi_nfit_control_region { 122904f8e384SBob Moore struct acpi_nfit_header header; 123004f8e384SBob Moore u16 region_index; 123104f8e384SBob Moore u16 vendor_id; 123204f8e384SBob Moore u16 device_id; 123304f8e384SBob Moore u16 revision_id; 123404f8e384SBob Moore u16 subsystem_vendor_id; 123504f8e384SBob Moore u16 subsystem_device_id; 123604f8e384SBob Moore u16 subsystem_revision_id; 1237138a9554SBob Moore u8 valid_fields; 1238138a9554SBob Moore u8 manufacturing_location; 1239138a9554SBob Moore u16 manufacturing_date; 1240138a9554SBob Moore u8 reserved[2]; /* Reserved, must be zero */ 124104f8e384SBob Moore u32 serial_number; 124204f8e384SBob Moore u16 code; 124304f8e384SBob Moore u16 windows; 124404f8e384SBob Moore u64 window_size; 124504f8e384SBob Moore u64 command_offset; 124604f8e384SBob Moore u64 command_size; 124704f8e384SBob Moore u64 status_offset; 124804f8e384SBob Moore u64 status_size; 124904f8e384SBob Moore u16 flags; 125004f8e384SBob Moore u8 reserved1[6]; /* Reserved, must be zero */ 125104f8e384SBob Moore }; 125204f8e384SBob Moore 125304f8e384SBob Moore /* Flags */ 125404f8e384SBob Moore 125504f8e384SBob Moore #define ACPI_NFIT_CONTROL_BUFFERED (1) /* Block Data Windows implementation is buffered */ 125604f8e384SBob Moore 1257138a9554SBob Moore /* valid_fields bits */ 1258138a9554SBob Moore 1259138a9554SBob Moore #define ACPI_NFIT_CONTROL_MFG_INFO_VALID (1) /* Manufacturing fields are valid */ 1260138a9554SBob Moore 126104f8e384SBob Moore /* 5: NVDIMM Block Data Window Region Structure */ 126204f8e384SBob Moore 126304f8e384SBob Moore struct acpi_nfit_data_region { 126404f8e384SBob Moore struct acpi_nfit_header header; 126504f8e384SBob Moore u16 region_index; 126604f8e384SBob Moore u16 windows; 126704f8e384SBob Moore u64 offset; 126804f8e384SBob Moore u64 size; 126904f8e384SBob Moore u64 capacity; 127004f8e384SBob Moore u64 start_address; 127104f8e384SBob Moore }; 127204f8e384SBob Moore 127304f8e384SBob Moore /* 6: Flush Hint Address Structure */ 127404f8e384SBob Moore 127504f8e384SBob Moore struct acpi_nfit_flush_address { 127604f8e384SBob Moore struct acpi_nfit_header header; 127704f8e384SBob Moore u32 device_handle; 127804f8e384SBob Moore u16 hint_count; 127904f8e384SBob Moore u8 reserved[6]; /* Reserved, must be zero */ 128004f8e384SBob Moore u64 hint_address[1]; /* Variable length */ 128104f8e384SBob Moore }; 128204f8e384SBob Moore 128304f8e384SBob Moore /******************************************************************************* 128404f8e384SBob Moore * 1285b8355bcaSLv Zheng * PPTT - Processor Properties Topology Table (ACPI 6.2) 1286b8355bcaSLv Zheng * Version 1 1287b8355bcaSLv Zheng * 1288b8355bcaSLv Zheng ******************************************************************************/ 1289b8355bcaSLv Zheng 1290b8355bcaSLv Zheng struct acpi_table_pptt { 1291b8355bcaSLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 1292b8355bcaSLv Zheng }; 1293b8355bcaSLv Zheng 1294b8355bcaSLv Zheng /* Values for Type field above */ 1295b8355bcaSLv Zheng 1296b8355bcaSLv Zheng enum acpi_pptt_type { 1297b8355bcaSLv Zheng ACPI_PPTT_TYPE_PROCESSOR = 0, 1298b8355bcaSLv Zheng ACPI_PPTT_TYPE_CACHE = 1, 1299b8355bcaSLv Zheng ACPI_PPTT_TYPE_ID = 2, 1300b8355bcaSLv Zheng ACPI_PPTT_TYPE_RESERVED = 3 1301b8355bcaSLv Zheng }; 1302b8355bcaSLv Zheng 1303b8355bcaSLv Zheng /* 0: Processor Hierarchy Node Structure */ 1304b8355bcaSLv Zheng 1305b8355bcaSLv Zheng struct acpi_pptt_processor { 1306b8355bcaSLv Zheng struct acpi_subtable_header header; 1307b8355bcaSLv Zheng u16 reserved; 1308b8355bcaSLv Zheng u32 flags; 1309b8355bcaSLv Zheng u32 parent; 1310b8355bcaSLv Zheng u32 acpi_processor_id; 1311b8355bcaSLv Zheng u32 number_of_priv_resources; 1312b8355bcaSLv Zheng }; 1313b8355bcaSLv Zheng 1314b8355bcaSLv Zheng /* Flags */ 1315b8355bcaSLv Zheng 1316b8355bcaSLv Zheng #define ACPI_PPTT_PHYSICAL_PACKAGE (1) /* Physical package */ 1317b8355bcaSLv Zheng #define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID (2) /* ACPI Processor ID valid */ 1318b8355bcaSLv Zheng 1319b8355bcaSLv Zheng /* 1: Cache Type Structure */ 1320b8355bcaSLv Zheng 1321b8355bcaSLv Zheng struct acpi_pptt_cache { 1322b8355bcaSLv Zheng struct acpi_subtable_header header; 1323b8355bcaSLv Zheng u16 reserved; 1324b8355bcaSLv Zheng u32 flags; 1325b8355bcaSLv Zheng u32 next_level_of_cache; 1326b8355bcaSLv Zheng u32 size; 1327b8355bcaSLv Zheng u32 number_of_sets; 1328b8355bcaSLv Zheng u8 associativity; 1329b8355bcaSLv Zheng u8 attributes; 1330b8355bcaSLv Zheng u16 line_size; 1331b8355bcaSLv Zheng }; 1332b8355bcaSLv Zheng 1333b8355bcaSLv Zheng /* Flags */ 1334b8355bcaSLv Zheng 1335b8355bcaSLv Zheng #define ACPI_PPTT_SIZE_PROPERTY_VALID (1) /* Physical property valid */ 1336b8355bcaSLv Zheng #define ACPI_PPTT_NUMBER_OF_SETS_VALID (1<<1) /* Number of sets valid */ 1337b8355bcaSLv Zheng #define ACPI_PPTT_ASSOCIATIVITY_VALID (1<<2) /* Associativity valid */ 1338b8355bcaSLv Zheng #define ACPI_PPTT_ALLOCATION_TYPE_VALID (1<<3) /* Allocation type valid */ 1339b8355bcaSLv Zheng #define ACPI_PPTT_CACHE_TYPE_VALID (1<<4) /* Cache type valid */ 1340b8355bcaSLv Zheng #define ACPI_PPTT_WRITE_POLICY_VALID (1<<5) /* Write policy valid */ 1341b8355bcaSLv Zheng #define ACPI_PPTT_LINE_SIZE_VALID (1<<6) /* Line size valid */ 1342b8355bcaSLv Zheng 1343b8355bcaSLv Zheng /* Masks for Attributes */ 1344b8355bcaSLv Zheng 1345b8355bcaSLv Zheng #define ACPI_PPTT_MASK_ALLOCATION_TYPE (0x03) /* Allocation type */ 1346b8355bcaSLv Zheng #define ACPI_PPTT_MASK_CACHE_TYPE (0x0C) /* Cache type */ 1347b8355bcaSLv Zheng #define ACPI_PPTT_MASK_WRITE_POLICY (0x10) /* Write policy */ 1348b8355bcaSLv Zheng 1349b8355bcaSLv Zheng /* 2: ID Structure */ 1350b8355bcaSLv Zheng 1351b8355bcaSLv Zheng struct acpi_pptt_id { 1352b8355bcaSLv Zheng struct acpi_subtable_header header; 1353b8355bcaSLv Zheng u16 reserved; 1354b8355bcaSLv Zheng u32 vendor_id; 1355b8355bcaSLv Zheng u64 level1_id; 1356b8355bcaSLv Zheng u64 level2_id; 1357b8355bcaSLv Zheng u16 major_rev; 1358b8355bcaSLv Zheng u16 minor_rev; 1359b8355bcaSLv Zheng u16 spin_rev; 1360b8355bcaSLv Zheng }; 1361b8355bcaSLv Zheng 1362b8355bcaSLv Zheng /******************************************************************************* 1363b8355bcaSLv Zheng * 1364793c2388SBob Moore * SBST - Smart Battery Specification Table 13656e2d5ebdSBob Moore * Version 1 1366793c2388SBob Moore * 1367793c2388SBob Moore ******************************************************************************/ 1368793c2388SBob Moore 1369f3d2e786SBob Moore struct acpi_table_sbst { 1370f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1371f3d2e786SBob Moore u32 warning_level; 1372793c2388SBob Moore u32 low_level; 1373793c2388SBob Moore u32 critical_level; 1374793c2388SBob Moore }; 1375793c2388SBob Moore 1376793c2388SBob Moore /******************************************************************************* 1377793c2388SBob Moore * 1378793c2388SBob Moore * SLIT - System Locality Distance Information Table 13796e2d5ebdSBob Moore * Version 1 1380793c2388SBob Moore * 1381793c2388SBob Moore ******************************************************************************/ 1382793c2388SBob Moore 1383f3d2e786SBob Moore struct acpi_table_slit { 1384f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1385f3d2e786SBob Moore u64 locality_count; 1386f3d2e786SBob Moore u8 entry[1]; /* Real size = localities^2 */ 1387793c2388SBob Moore }; 1388793c2388SBob Moore 1389793c2388SBob Moore /******************************************************************************* 1390793c2388SBob Moore * 1391793c2388SBob Moore * SRAT - System Resource Affinity Table 13926e2d5ebdSBob Moore * Version 3 1393793c2388SBob Moore * 1394793c2388SBob Moore ******************************************************************************/ 1395793c2388SBob Moore 1396f3d2e786SBob Moore struct acpi_table_srat { 1397f3d2e786SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1398f3d2e786SBob Moore u32 table_revision; /* Must be value '1' */ 1399f3d2e786SBob Moore u64 reserved; /* Reserved, must be zero */ 1400793c2388SBob Moore }; 1401793c2388SBob Moore 1402f3d2e786SBob Moore /* Values for subtable type in struct acpi_subtable_header */ 1403793c2388SBob Moore 1404f3d2e786SBob Moore enum acpi_srat_type { 1405f3d2e786SBob Moore ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 1406f3d2e786SBob Moore ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 14071d7cc030SBob Moore ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 140863b8f8cdSHanjun Guo ACPI_SRAT_TYPE_GICC_AFFINITY = 3, 1409a618c7f8SBob Moore ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ 1410a618c7f8SBob Moore ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 1411f3d2e786SBob Moore }; 1412793c2388SBob Moore 14131d7cc030SBob Moore /* 14141a49b72cSBob Moore * SRAT Subtables, correspond to Type in struct acpi_subtable_header 14151d7cc030SBob Moore */ 14161d7cc030SBob Moore 14171d7cc030SBob Moore /* 0: Processor Local APIC/SAPIC Affinity */ 1418793c2388SBob Moore 1419f3d2e786SBob Moore struct acpi_srat_cpu_affinity { 1420f3d2e786SBob Moore struct acpi_subtable_header header; 1421f3d2e786SBob Moore u8 proximity_domain_lo; 1422793c2388SBob Moore u8 apic_id; 1423f3d2e786SBob Moore u32 flags; 1424793c2388SBob Moore u8 local_sapic_eid; 1425793c2388SBob Moore u8 proximity_domain_hi[3]; 142663b8f8cdSHanjun Guo u32 clock_domain; 14271da177e4SLinus Torvalds }; 14281da177e4SLinus Torvalds 14296e2d5ebdSBob Moore /* Flags */ 14306e2d5ebdSBob Moore 14316e2d5ebdSBob Moore #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 14326e2d5ebdSBob Moore 14331d7cc030SBob Moore /* 1: Memory Affinity */ 1434f3d2e786SBob Moore 1435f3d2e786SBob Moore struct acpi_srat_mem_affinity { 1436f3d2e786SBob Moore struct acpi_subtable_header header; 1437f3d2e786SBob Moore u32 proximity_domain; 1438f3d2e786SBob Moore u16 reserved; /* Reserved, must be zero */ 1439793c2388SBob Moore u64 base_address; 1440f3d2e786SBob Moore u64 length; 144119d0cfe9SBob Moore u32 reserved1; 1442f3d2e786SBob Moore u32 flags; 144319d0cfe9SBob Moore u64 reserved2; /* Reserved, must be zero */ 1444f3d2e786SBob Moore }; 1445793c2388SBob Moore 1446f3d2e786SBob Moore /* Flags */ 1447793c2388SBob Moore 1448f3d2e786SBob Moore #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 1449f3d2e786SBob Moore #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 1450f3d2e786SBob Moore #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 1451793c2388SBob Moore 1452eb2289baSBob Moore /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 14531d7cc030SBob Moore 14541d7cc030SBob Moore struct acpi_srat_x2apic_cpu_affinity { 14551d7cc030SBob Moore struct acpi_subtable_header header; 14561d7cc030SBob Moore u16 reserved; /* Reserved, must be zero */ 14571d7cc030SBob Moore u32 proximity_domain; 14581d7cc030SBob Moore u32 apic_id; 14591d7cc030SBob Moore u32 flags; 1460eb2289baSBob Moore u32 clock_domain; 1461eb2289baSBob Moore u32 reserved2; 14621d7cc030SBob Moore }; 14631d7cc030SBob Moore 14641d7cc030SBob Moore /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */ 14651d7cc030SBob Moore 14661d7cc030SBob Moore #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 14671d7cc030SBob Moore 146863b8f8cdSHanjun Guo /* 3: GICC Affinity (ACPI 5.1) */ 146963b8f8cdSHanjun Guo 147063b8f8cdSHanjun Guo struct acpi_srat_gicc_affinity { 147163b8f8cdSHanjun Guo struct acpi_subtable_header header; 147263b8f8cdSHanjun Guo u32 proximity_domain; 147363b8f8cdSHanjun Guo u32 acpi_processor_uid; 147463b8f8cdSHanjun Guo u32 flags; 147563b8f8cdSHanjun Guo u32 clock_domain; 147663b8f8cdSHanjun Guo }; 147763b8f8cdSHanjun Guo 147863b8f8cdSHanjun Guo /* Flags for struct acpi_srat_gicc_affinity */ 147963b8f8cdSHanjun Guo 148063b8f8cdSHanjun Guo #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ 148163b8f8cdSHanjun Guo 1482a618c7f8SBob Moore /* 4: GCC ITS Affinity (ACPI 6.2) */ 1483a618c7f8SBob Moore 1484a618c7f8SBob Moore struct acpi_srat_gic_its_affinity { 1485a618c7f8SBob Moore struct acpi_subtable_header header; 1486a618c7f8SBob Moore u32 proximity_domain; 1487a618c7f8SBob Moore u16 reserved; 1488a618c7f8SBob Moore u32 its_id; 1489a618c7f8SBob Moore }; 1490a618c7f8SBob Moore 14916e596084SRobert Moore /* Reset to default packing */ 14926e596084SRobert Moore 14936e596084SRobert Moore #pragma pack() 14941da177e4SLinus Torvalds 14951da177e4SLinus Torvalds #endif /* __ACTBL1_H__ */ 1496