actbl1.h revision 197104
169450Smsmith/****************************************************************************** 269450Smsmith * 3167802Sjkim * Name: actbl1.h - Additional ACPI table definitions 469450Smsmith * 569450Smsmith *****************************************************************************/ 669450Smsmith 769450Smsmith/****************************************************************************** 869450Smsmith * 969450Smsmith * 1. Copyright Notice 1069450Smsmith * 11193267Sjkim * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp. 1270243Smsmith * All rights reserved. 1369450Smsmith * 1469450Smsmith * 2. License 1569450Smsmith * 1669450Smsmith * 2.1. This is your license from Intel Corp. under its intellectual property 1769450Smsmith * rights. You may have additional license terms from the party that provided 1869450Smsmith * you this software, covering your right to use that party's intellectual 1969450Smsmith * property rights. 2069450Smsmith * 2169450Smsmith * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 2269450Smsmith * copy of the source code appearing in this file ("Covered Code") an 2369450Smsmith * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2469450Smsmith * base code distributed originally by Intel ("Original Intel Code") to copy, 2569450Smsmith * make derivatives, distribute, use and display any portion of the Covered 2669450Smsmith * Code in any form, with the right to sublicense such rights; and 2769450Smsmith * 2869450Smsmith * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 2969450Smsmith * license (with the right to sublicense), under only those claims of Intel 3069450Smsmith * patents that are infringed by the Original Intel Code, to make, use, sell, 3169450Smsmith * offer to sell, and import the Covered Code and derivative works thereof 3269450Smsmith * solely to the minimum extent necessary to exercise the above copyright 3369450Smsmith * license, and in no event shall the patent license extend to any additions 3469450Smsmith * to or modifications of the Original Intel Code. No other license or right 3569450Smsmith * is granted directly or by implication, estoppel or otherwise; 3669450Smsmith * 3769450Smsmith * The above copyright and patent license is granted only if the following 3869450Smsmith * conditions are met: 3969450Smsmith * 4069450Smsmith * 3. Conditions 4169450Smsmith * 4269450Smsmith * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4369450Smsmith * Redistribution of source code of any substantial portion of the Covered 4469450Smsmith * Code or modification with rights to further distribute source must include 4569450Smsmith * the above Copyright Notice, the above License, this list of Conditions, 4669450Smsmith * and the following Disclaimer and Export Compliance provision. In addition, 4769450Smsmith * Licensee must cause all Covered Code to which Licensee contributes to 4869450Smsmith * contain a file documenting the changes Licensee made to create that Covered 4969450Smsmith * Code and the date of any change. Licensee must include in that file the 5069450Smsmith * documentation of any changes made by any predecessor Licensee. Licensee 5169450Smsmith * must include a prominent statement that the modification is derived, 5269450Smsmith * directly or indirectly, from Original Intel Code. 5369450Smsmith * 5469450Smsmith * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 5569450Smsmith * Redistribution of source code of any substantial portion of the Covered 5669450Smsmith * Code or modification without rights to further distribute source must 5769450Smsmith * include the following Disclaimer and Export Compliance provision in the 5869450Smsmith * documentation and/or other materials provided with distribution. In 5969450Smsmith * addition, Licensee may not authorize further sublicense of source of any 6069450Smsmith * portion of the Covered Code, and must include terms to the effect that the 6169450Smsmith * license from Licensee to its licensee is limited to the intellectual 6269450Smsmith * property embodied in the software Licensee provides to its licensee, and 6369450Smsmith * not to intellectual property embodied in modifications its licensee may 6469450Smsmith * make. 6569450Smsmith * 6669450Smsmith * 3.3. Redistribution of Executable. Redistribution in executable form of any 6769450Smsmith * substantial portion of the Covered Code or modification must reproduce the 6869450Smsmith * above Copyright Notice, and the following Disclaimer and Export Compliance 6969450Smsmith * provision in the documentation and/or other materials provided with the 7069450Smsmith * distribution. 7169450Smsmith * 7269450Smsmith * 3.4. Intel retains all right, title, and interest in and to the Original 7369450Smsmith * Intel Code. 7469450Smsmith * 7569450Smsmith * 3.5. Neither the name Intel nor any other trademark owned or controlled by 7669450Smsmith * Intel shall be used in advertising or otherwise to promote the sale, use or 7769450Smsmith * other dealings in products derived from or relating to the Covered Code 7869450Smsmith * without prior written authorization from Intel. 7969450Smsmith * 8069450Smsmith * 4. Disclaimer and Export Compliance 8169450Smsmith * 8269450Smsmith * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8369450Smsmith * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8469450Smsmith * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 8569450Smsmith * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 8669450Smsmith * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 8769450Smsmith * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 8869450Smsmith * PARTICULAR PURPOSE. 8969450Smsmith * 9069450Smsmith * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 9169450Smsmith * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 9269450Smsmith * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 9369450Smsmith * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9469450Smsmith * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 9569450Smsmith * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 9669450Smsmith * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 9769450Smsmith * LIMITED REMEDY. 9869450Smsmith * 9969450Smsmith * 4.3. Licensee shall not export, either directly or indirectly, any of this 10069450Smsmith * software or system incorporating such software without first obtaining any 10169450Smsmith * required license or other approval from the U. S. Department of Commerce or 10269450Smsmith * any other agency or department of the United States Government. In the 10369450Smsmith * event Licensee exports any such software from the United States or 10469450Smsmith * re-exports any such software from a foreign destination, Licensee shall 10569450Smsmith * ensure that the distribution and export/re-export of the software is in 10669450Smsmith * compliance with all laws, regulations, orders, or other restrictions of the 10769450Smsmith * U.S. Export Administration Regulations. Licensee agrees that neither it nor 10869450Smsmith * any of its subsidiaries will export/re-export any technical data, process, 10969450Smsmith * software, or service, directly or indirectly, to any country for which the 11069450Smsmith * United States government or any agency thereof requires an export license, 11169450Smsmith * other governmental approval, or letter of assurance, without first obtaining 11269450Smsmith * such license, approval or letter. 11369450Smsmith * 11469450Smsmith *****************************************************************************/ 11569450Smsmith 11669450Smsmith#ifndef __ACTBL1_H__ 11769450Smsmith#define __ACTBL1_H__ 11869450Smsmith 119167802Sjkim 120167802Sjkim/******************************************************************************* 121167802Sjkim * 122197104Sjkim * Additional ACPI Tables (1) 123167802Sjkim * 124167802Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are 125167802Sjkim * included here to support device drivers and the AML disassembler. 126167802Sjkim * 127197104Sjkim * The tables in this file are fully defined within the ACPI specification. 128197104Sjkim * 129167802Sjkim ******************************************************************************/ 130167802Sjkim 131167802Sjkim 132167802Sjkim/* 133197104Sjkim * Values for description table header signatures for tables defined in this 134197104Sjkim * file. Useful because they make it more difficult to inadvertently type in 135197104Sjkim * the wrong signature. 136167802Sjkim */ 137193267Sjkim#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 138167802Sjkim#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 139167802Sjkim#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 140193267Sjkim#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 141193267Sjkim#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 142193267Sjkim#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 143167802Sjkim#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 144197104Sjkim#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ 145167802Sjkim#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 146167802Sjkim#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 147167802Sjkim#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 148167802Sjkim 149167802Sjkim 150167802Sjkim/* 151167802Sjkim * All tables must be byte-packed to match the ACPI specification, since 152167802Sjkim * the tables are provided by the system BIOS. 153167802Sjkim */ 15469450Smsmith#pragma pack(1) 15569450Smsmith 15691116Smsmith/* 157167802Sjkim * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 158167802Sjkim * This is the only type that is even remotely portable. Anything else is not 159167802Sjkim * portable, so do not use any other bitfield types. 16091116Smsmith */ 161167802Sjkim 162167802Sjkim 163197104Sjkim/******************************************************************************* 164197104Sjkim * 165197104Sjkim * Common subtable headers 166197104Sjkim * 167197104Sjkim ******************************************************************************/ 168167802Sjkim 169197104Sjkim/* Generic subtable header (used in MADT, SRAT, etc.) */ 170197104Sjkim 171167802Sjkimtypedef struct acpi_subtable_header 17269450Smsmith{ 173167802Sjkim UINT8 Type; 174167802Sjkim UINT8 Length; 175151937Sjkim 176167802Sjkim} ACPI_SUBTABLE_HEADER; 17769450Smsmith 17869450Smsmith 179197104Sjkim/* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 180193267Sjkim 181193267Sjkimtypedef struct acpi_whea_header 182193267Sjkim{ 183193267Sjkim UINT8 Action; 184193267Sjkim UINT8 Instruction; 185193267Sjkim UINT8 Flags; 186193267Sjkim UINT8 Reserved; 187193267Sjkim ACPI_GENERIC_ADDRESS RegisterRegion; 188193267Sjkim UINT64 Value; /* Value used with Read/Write register */ 189193267Sjkim UINT64 Mask; /* Bitmask required for this register instruction */ 190193267Sjkim 191193267Sjkim} ACPI_WHEA_HEADER; 192193267Sjkim 193193267Sjkim 194167802Sjkim/******************************************************************************* 195167802Sjkim * 196197104Sjkim * BERT - Boot Error Record Table (ACPI 4.0) 197197104Sjkim * Version 1 198167802Sjkim * 199167802Sjkim ******************************************************************************/ 200167802Sjkim 201193267Sjkimtypedef struct acpi_table_bert 202193267Sjkim{ 203193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 204193267Sjkim UINT32 RegionLength; /* Length of the boot error region */ 205193267Sjkim UINT64 Address; /* Physical addresss of the error region */ 206193267Sjkim 207193267Sjkim} ACPI_TABLE_BERT; 208193267Sjkim 209193267Sjkim 210197104Sjkim/* Boot Error Region (not a subtable, pointed to by Address field above) */ 211193267Sjkim 212193267Sjkimtypedef struct acpi_bert_region 213193267Sjkim{ 214197104Sjkim UINT32 BlockStatus; /* Type of error information */ 215197104Sjkim UINT32 RawDataOffset; /* Offset to raw error data */ 216197104Sjkim UINT32 RawDataLength; /* Length of raw error data */ 217197104Sjkim UINT32 DataLength; /* Length of generic error data */ 218197104Sjkim UINT32 ErrorSeverity; /* Severity code */ 219193267Sjkim 220193267Sjkim} ACPI_BERT_REGION; 221193267Sjkim 222197104Sjkim/* Values for BlockStatus flags above */ 223193267Sjkim 224193267Sjkim#define ACPI_BERT_UNCORRECTABLE (1) 225197104Sjkim#define ACPI_BERT_CORRECTABLE (1<<1) 226197104Sjkim#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 227197104Sjkim#define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 228197104Sjkim#define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 229193267Sjkim 230197104Sjkim/* Values for ErrorSeverity above */ 231193267Sjkim 232197104Sjkimenum AcpiBertErrorSeverity 233167802Sjkim{ 234197104Sjkim ACPI_BERT_ERROR_CORRECTABLE = 0, 235197104Sjkim ACPI_BERT_ERROR_FATAL = 1, 236197104Sjkim ACPI_BERT_ERROR_CORRECTED = 2, 237197104Sjkim ACPI_BERT_ERROR_NONE = 3, 238197104Sjkim ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 239197104Sjkim}; 240167802Sjkim 241197104Sjkim/* 242197104Sjkim * Note: The generic error data that follows the ErrorSeverity field above 243197104Sjkim * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below 244197104Sjkim */ 245167802Sjkim 246167802Sjkim 247167802Sjkim/******************************************************************************* 248167802Sjkim * 249197104Sjkim * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 250197104Sjkim * Version 1 251167802Sjkim * 252167802Sjkim ******************************************************************************/ 253167802Sjkim 254167802Sjkimtypedef struct acpi_table_cpep 255167802Sjkim{ 256167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 257167802Sjkim UINT64 Reserved; 258167802Sjkim 259167802Sjkim} ACPI_TABLE_CPEP; 260167802Sjkim 261167802Sjkim 262167802Sjkim/* Subtable */ 263167802Sjkim 264167802Sjkimtypedef struct acpi_cpep_polling 265167802Sjkim{ 266197104Sjkim ACPI_SUBTABLE_HEADER Header; 267167802Sjkim UINT8 Id; /* Processor ID */ 268167802Sjkim UINT8 Eid; /* Processor EID */ 269167802Sjkim UINT32 Interval; /* Polling interval (msec) */ 270167802Sjkim 271167802Sjkim} ACPI_CPEP_POLLING; 272167802Sjkim 273167802Sjkim 274167802Sjkim/******************************************************************************* 275167802Sjkim * 276167802Sjkim * ECDT - Embedded Controller Boot Resources Table 277197104Sjkim * Version 1 278167802Sjkim * 279167802Sjkim ******************************************************************************/ 280167802Sjkim 281167802Sjkimtypedef struct acpi_table_ecdt 282167802Sjkim{ 283167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 284167802Sjkim ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 285167802Sjkim ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 286167802Sjkim UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 287167802Sjkim UINT8 Gpe; /* The GPE for the EC */ 288167802Sjkim UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 289167802Sjkim 290167802Sjkim} ACPI_TABLE_ECDT; 291167802Sjkim 292167802Sjkim 293167802Sjkim/******************************************************************************* 294167802Sjkim * 295197104Sjkim * EINJ - Error Injection Table (ACPI 4.0) 296197104Sjkim * Version 1 297193267Sjkim * 298193267Sjkim ******************************************************************************/ 299193267Sjkim 300193267Sjkimtypedef struct acpi_table_einj 301193267Sjkim{ 302193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 303193267Sjkim UINT32 HeaderLength; 304197104Sjkim UINT8 Flags; 305197104Sjkim UINT8 Reserved[3]; 306193267Sjkim UINT32 Entries; 307193267Sjkim 308193267Sjkim} ACPI_TABLE_EINJ; 309193267Sjkim 310197104Sjkim 311193267Sjkim/* EINJ Injection Instruction Entries (actions) */ 312193267Sjkim 313193267Sjkimtypedef struct acpi_einj_entry 314193267Sjkim{ 315193267Sjkim ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 316193267Sjkim 317193267Sjkim} ACPI_EINJ_ENTRY; 318193267Sjkim 319197104Sjkim/* Masks for Flags field above */ 320197104Sjkim 321197104Sjkim#define ACPI_EINJ_PRESERVE (1) 322197104Sjkim 323193267Sjkim/* Values for Action field above */ 324193267Sjkim 325193267Sjkimenum AcpiEinjActions 326193267Sjkim{ 327193267Sjkim ACPI_EINJ_BEGIN_OPERATION = 0, 328193267Sjkim ACPI_EINJ_GET_TRIGGER_TABLE = 1, 329193267Sjkim ACPI_EINJ_SET_ERROR_TYPE = 2, 330193267Sjkim ACPI_EINJ_GET_ERROR_TYPE = 3, 331193267Sjkim ACPI_EINJ_END_OPERATION = 4, 332193267Sjkim ACPI_EINJ_EXECUTE_OPERATION = 5, 333193267Sjkim ACPI_EINJ_CHECK_BUSY_STATUS = 6, 334193267Sjkim ACPI_EINJ_GET_COMMAND_STATUS = 7, 335193267Sjkim ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 336193267Sjkim ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 337193267Sjkim}; 338193267Sjkim 339193267Sjkim/* Values for Instruction field above */ 340193267Sjkim 341193267Sjkimenum AcpiEinjInstructions 342193267Sjkim{ 343193267Sjkim ACPI_EINJ_READ_REGISTER = 0, 344193267Sjkim ACPI_EINJ_READ_REGISTER_VALUE = 1, 345193267Sjkim ACPI_EINJ_WRITE_REGISTER = 2, 346193267Sjkim ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 347193267Sjkim ACPI_EINJ_NOOP = 4, 348193267Sjkim ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 349193267Sjkim}; 350193267Sjkim 351197104Sjkim 352193267Sjkim/* EINJ Trigger Error Action Table */ 353193267Sjkim 354193267Sjkimtypedef struct acpi_einj_trigger 355193267Sjkim{ 356193267Sjkim UINT32 HeaderSize; 357193267Sjkim UINT32 Revision; 358193267Sjkim UINT32 TableSize; 359193267Sjkim UINT32 EntryCount; 360193267Sjkim 361193267Sjkim} ACPI_EINJ_TRIGGER; 362193267Sjkim 363197104Sjkim/* Command status return values */ 364193267Sjkim 365197104Sjkimenum AcpiEinjCommandStatus 366197104Sjkim{ 367197104Sjkim ACPI_EINJ_SUCCESS = 0, 368197104Sjkim ACPI_EINJ_FAILURE = 1, 369197104Sjkim ACPI_EINJ_INVALID_ACCESS = 2, 370197104Sjkim ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 371197104Sjkim}; 372197104Sjkim 373197104Sjkim 374197104Sjkim/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 375197104Sjkim 376197104Sjkim#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 377197104Sjkim#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 378197104Sjkim#define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 379197104Sjkim#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 380197104Sjkim#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 381197104Sjkim#define ACPI_EINJ_MEMORY_FATAL (1<<5) 382197104Sjkim#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 383197104Sjkim#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 384197104Sjkim#define ACPI_EINJ_PCIX_FATAL (1<<8) 385197104Sjkim#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 386197104Sjkim#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 387197104Sjkim#define ACPI_EINJ_PLATFORM_FATAL (1<<11) 388197104Sjkim 389197104Sjkim 390193267Sjkim/******************************************************************************* 391193267Sjkim * 392197104Sjkim * ERST - Error Record Serialization Table (ACPI 4.0) 393197104Sjkim * Version 1 394193267Sjkim * 395193267Sjkim ******************************************************************************/ 396193267Sjkim 397193267Sjkimtypedef struct acpi_table_erst 398193267Sjkim{ 399193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 400193267Sjkim UINT32 HeaderLength; 401193267Sjkim UINT32 Reserved; 402193267Sjkim UINT32 Entries; 403193267Sjkim 404193267Sjkim} ACPI_TABLE_ERST; 405193267Sjkim 406197104Sjkim 407193267Sjkim/* ERST Serialization Entries (actions) */ 408193267Sjkim 409193267Sjkimtypedef struct acpi_erst_entry 410193267Sjkim{ 411193267Sjkim ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 412193267Sjkim 413193267Sjkim} ACPI_ERST_ENTRY; 414193267Sjkim 415197104Sjkim/* Masks for Flags field above */ 416197104Sjkim 417197104Sjkim#define ACPI_ERST_PRESERVE (1) 418197104Sjkim 419193267Sjkim/* Values for Action field above */ 420193267Sjkim 421193267Sjkimenum AcpiErstActions 422193267Sjkim{ 423197104Sjkim ACPI_ERST_BEGIN_WRITE = 0, 424197104Sjkim ACPI_ERST_BEGIN_READ = 1, 425197104Sjkim ACPI_ERST_BEGIN_CLEAR = 2, 426197104Sjkim ACPI_ERST_END = 3, 427193267Sjkim ACPI_ERST_SET_RECORD_OFFSET = 4, 428193267Sjkim ACPI_ERST_EXECUTE_OPERATION = 5, 429193267Sjkim ACPI_ERST_CHECK_BUSY_STATUS = 6, 430193267Sjkim ACPI_ERST_GET_COMMAND_STATUS = 7, 431197104Sjkim ACPI_ERST_GET_RECORD_ID = 8, 432197104Sjkim ACPI_ERST_SET_RECORD_ID = 9, 433193267Sjkim ACPI_ERST_GET_RECORD_COUNT = 10, 434193267Sjkim ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 435193267Sjkim ACPI_ERST_NOT_USED = 12, 436193267Sjkim ACPI_ERST_GET_ERROR_RANGE = 13, 437193267Sjkim ACPI_ERST_GET_ERROR_LENGTH = 14, 438193267Sjkim ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 439193267Sjkim ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 440193267Sjkim}; 441193267Sjkim 442193267Sjkim/* Values for Instruction field above */ 443193267Sjkim 444193267Sjkimenum AcpiErstInstructions 445193267Sjkim{ 446193267Sjkim ACPI_ERST_READ_REGISTER = 0, 447193267Sjkim ACPI_ERST_READ_REGISTER_VALUE = 1, 448193267Sjkim ACPI_ERST_WRITE_REGISTER = 2, 449193267Sjkim ACPI_ERST_WRITE_REGISTER_VALUE = 3, 450193267Sjkim ACPI_ERST_NOOP = 4, 451193267Sjkim ACPI_ERST_LOAD_VAR1 = 5, 452193267Sjkim ACPI_ERST_LOAD_VAR2 = 6, 453193267Sjkim ACPI_ERST_STORE_VAR1 = 7, 454193267Sjkim ACPI_ERST_ADD = 8, 455193267Sjkim ACPI_ERST_SUBTRACT = 9, 456193267Sjkim ACPI_ERST_ADD_VALUE = 10, 457193267Sjkim ACPI_ERST_SUBTRACT_VALUE = 11, 458193267Sjkim ACPI_ERST_STALL = 12, 459193267Sjkim ACPI_ERST_STALL_WHILE_TRUE = 13, 460193267Sjkim ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 461193267Sjkim ACPI_ERST_GOTO = 15, 462193267Sjkim ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 463193267Sjkim ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 464193267Sjkim ACPI_ERST_MOVE_DATA = 18, 465193267Sjkim ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 466193267Sjkim}; 467193267Sjkim 468197104Sjkim/* Command status return values */ 469193267Sjkim 470197104Sjkimenum AcpiErstCommandStatus 471197104Sjkim{ 472197104Sjkim ACPI_ERST_SUCESS = 0, 473197104Sjkim ACPI_ERST_NO_SPACE = 1, 474197104Sjkim ACPI_ERST_NOT_AVAILABLE = 2, 475197104Sjkim ACPI_ERST_FAILURE = 3, 476197104Sjkim ACPI_ERST_RECORD_EMPTY = 4, 477197104Sjkim ACPI_ERST_NOT_FOUND = 5, 478197104Sjkim ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 479197104Sjkim}; 480197104Sjkim 481197104Sjkim 482197104Sjkim/* Error Record Serialization Information */ 483197104Sjkim 484197104Sjkimtypedef struct acpi_erst_info 485197104Sjkim{ 486197104Sjkim UINT16 Signature; /* Should be "ER" */ 487197104Sjkim UINT8 Data[48]; 488197104Sjkim 489197104Sjkim} ACPI_ERST_INFO; 490197104Sjkim 491197104Sjkim 492193267Sjkim/******************************************************************************* 493193267Sjkim * 494197104Sjkim * HEST - Hardware Error Source Table (ACPI 4.0) 495197104Sjkim * Version 1 496193267Sjkim * 497193267Sjkim ******************************************************************************/ 498193267Sjkim 499193267Sjkimtypedef struct acpi_table_hest 500193267Sjkim{ 501193267Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 502193267Sjkim UINT32 ErrorSourceCount; 503193267Sjkim 504193267Sjkim} ACPI_TABLE_HEST; 505193267Sjkim 506193267Sjkim 507193267Sjkim/* HEST subtable header */ 508193267Sjkim 509193267Sjkimtypedef struct acpi_hest_header 510193267Sjkim{ 511193267Sjkim UINT16 Type; 512197104Sjkim UINT16 SourceId; 513193267Sjkim 514193267Sjkim} ACPI_HEST_HEADER; 515193267Sjkim 516193267Sjkim 517193267Sjkim/* Values for Type field above for subtables */ 518193267Sjkim 519193267Sjkimenum AcpiHestTypes 520193267Sjkim{ 521197104Sjkim ACPI_HEST_TYPE_IA32_CHECK = 0, 522197104Sjkim ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 523197104Sjkim ACPI_HEST_TYPE_IA32_NMI = 2, 524197104Sjkim ACPI_HEST_TYPE_NOT_USED3 = 3, 525197104Sjkim ACPI_HEST_TYPE_NOT_USED4 = 4, 526197104Sjkim ACPI_HEST_TYPE_NOT_USED5 = 5, 527197104Sjkim ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 528197104Sjkim ACPI_HEST_TYPE_AER_ENDPOINT = 7, 529197104Sjkim ACPI_HEST_TYPE_AER_BRIDGE = 8, 530197104Sjkim ACPI_HEST_TYPE_GENERIC_ERROR = 9, 531197104Sjkim ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 532193267Sjkim}; 533193267Sjkim 534193267Sjkim 535193267Sjkim/* 536197104Sjkim * HEST substructures contained in subtables 537193267Sjkim */ 538193267Sjkim 539197104Sjkim/* 540197104Sjkim * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and 541197104Sjkim * ACPI_HEST_IA_CORRECTED structures. 542197104Sjkim */ 543197104Sjkimtypedef struct acpi_hest_ia_error_bank 544193267Sjkim{ 545193267Sjkim UINT8 BankNumber; 546193267Sjkim UINT8 ClearStatusOnInit; 547193267Sjkim UINT8 StatusFormat; 548197104Sjkim UINT8 Reserved; 549193267Sjkim UINT32 ControlRegister; 550197104Sjkim UINT64 ControlData; 551193267Sjkim UINT32 StatusRegister; 552193267Sjkim UINT32 AddressRegister; 553193267Sjkim UINT32 MiscRegister; 554193267Sjkim 555197104Sjkim} ACPI_HEST_IA_ERROR_BANK; 556193267Sjkim 557193267Sjkim 558197104Sjkim/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 559193267Sjkim 560193267Sjkimtypedef struct acpi_hest_aer_common 561193267Sjkim{ 562197104Sjkim UINT16 Reserved1; 563193267Sjkim UINT8 Flags; 564193267Sjkim UINT8 Enabled; 565197104Sjkim UINT32 RecordsToPreallocate; 566193267Sjkim UINT32 MaxSectionsPerRecord; 567193267Sjkim UINT32 Bus; 568193267Sjkim UINT16 Device; 569193267Sjkim UINT16 Function; 570193267Sjkim UINT16 DeviceControl; 571197104Sjkim UINT16 Reserved2; 572197104Sjkim UINT32 UncorrectableMask; 573197104Sjkim UINT32 UncorrectableSeverity; 574197104Sjkim UINT32 CorrectableMask; 575197104Sjkim UINT32 AdvancedCapabilities; 576193267Sjkim 577193267Sjkim} ACPI_HEST_AER_COMMON; 578193267Sjkim 579197104Sjkim/* Masks for HEST Flags fields */ 580193267Sjkim 581197104Sjkim#define ACPI_HEST_FIRMWARE_FIRST (1) 582197104Sjkim#define ACPI_HEST_GLOBAL (1<<1) 583197104Sjkim 584197104Sjkim 585193267Sjkim/* Hardware Error Notification */ 586193267Sjkim 587193267Sjkimtypedef struct acpi_hest_notify 588193267Sjkim{ 589193267Sjkim UINT8 Type; 590193267Sjkim UINT8 Length; 591193267Sjkim UINT16 ConfigWriteEnable; 592193267Sjkim UINT32 PollInterval; 593193267Sjkim UINT32 Vector; 594193267Sjkim UINT32 PollingThresholdValue; 595193267Sjkim UINT32 PollingThresholdWindow; 596193267Sjkim UINT32 ErrorThresholdValue; 597193267Sjkim UINT32 ErrorThresholdWindow; 598193267Sjkim 599193267Sjkim} ACPI_HEST_NOTIFY; 600193267Sjkim 601193267Sjkim/* Values for Notify Type field above */ 602193267Sjkim 603193267Sjkimenum AcpiHestNotifyTypes 604193267Sjkim{ 605193267Sjkim ACPI_HEST_NOTIFY_POLLED = 0, 606193267Sjkim ACPI_HEST_NOTIFY_EXTERNAL = 1, 607193267Sjkim ACPI_HEST_NOTIFY_LOCAL = 2, 608193267Sjkim ACPI_HEST_NOTIFY_SCI = 3, 609193267Sjkim ACPI_HEST_NOTIFY_NMI = 4, 610193267Sjkim ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 611193267Sjkim}; 612193267Sjkim 613197104Sjkim/* Values for ConfigWriteEnable bitfield above */ 614193267Sjkim 615197104Sjkim#define ACPI_HEST_TYPE (1) 616197104Sjkim#define ACPI_HEST_POLL_INTERVAL (1<<1) 617197104Sjkim#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 618197104Sjkim#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 619197104Sjkim#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 620197104Sjkim#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 621197104Sjkim 622197104Sjkim 623193267Sjkim/* 624193267Sjkim * HEST subtables 625193267Sjkim */ 626193267Sjkim 627197104Sjkim/* 0: IA32 Machine Check Exception */ 628193267Sjkim 629197104Sjkimtypedef struct acpi_hest_ia_machine_check 630193267Sjkim{ 631193267Sjkim ACPI_HEST_HEADER Header; 632197104Sjkim UINT16 Reserved1; 633193267Sjkim UINT8 Flags; 634197104Sjkim UINT8 Enabled; 635197104Sjkim UINT32 RecordsToPreallocate; 636193267Sjkim UINT32 MaxSectionsPerRecord; 637193267Sjkim UINT64 GlobalCapabilityData; 638193267Sjkim UINT64 GlobalControlData; 639193267Sjkim UINT8 NumHardwareBanks; 640197104Sjkim UINT8 Reserved3[7]; 641193267Sjkim 642197104Sjkim} ACPI_HEST_IA_MACHINE_CHECK; 643193267Sjkim 644193267Sjkim 645197104Sjkim/* 1: IA32 Corrected Machine Check */ 646193267Sjkim 647197104Sjkimtypedef struct acpi_hest_ia_corrected 648193267Sjkim{ 649193267Sjkim ACPI_HEST_HEADER Header; 650197104Sjkim UINT16 Reserved1; 651193267Sjkim UINT8 Flags; 652193267Sjkim UINT8 Enabled; 653197104Sjkim UINT32 RecordsToPreallocate; 654193267Sjkim UINT32 MaxSectionsPerRecord; 655193267Sjkim ACPI_HEST_NOTIFY Notify; 656193267Sjkim UINT8 NumHardwareBanks; 657197104Sjkim UINT8 Reserved2[3]; 658193267Sjkim 659197104Sjkim} ACPI_HEST_IA_CORRECTED; 660193267Sjkim 661193267Sjkim 662197104Sjkim/* 2: IA32 Non-Maskable Interrupt */ 663193267Sjkim 664197104Sjkimtypedef struct acpi_hest_ia_nmi 665193267Sjkim{ 666193267Sjkim ACPI_HEST_HEADER Header; 667193267Sjkim UINT32 Reserved; 668197104Sjkim UINT32 RecordsToPreallocate; 669193267Sjkim UINT32 MaxSectionsPerRecord; 670193267Sjkim UINT32 MaxRawDataLength; 671193267Sjkim 672197104Sjkim} ACPI_HEST_IA_NMI; 673193267Sjkim 674193267Sjkim 675197104Sjkim/* 3,4,5: Not used */ 676193267Sjkim 677193267Sjkim/* 6: PCI Express Root Port AER */ 678193267Sjkim 679193267Sjkimtypedef struct acpi_hest_aer_root 680193267Sjkim{ 681193267Sjkim ACPI_HEST_HEADER Header; 682193267Sjkim ACPI_HEST_AER_COMMON Aer; 683193267Sjkim UINT32 RootErrorCommand; 684193267Sjkim 685193267Sjkim} ACPI_HEST_AER_ROOT; 686193267Sjkim 687193267Sjkim 688193267Sjkim/* 7: PCI Express AER (AER Endpoint) */ 689193267Sjkim 690193267Sjkimtypedef struct acpi_hest_aer 691193267Sjkim{ 692193267Sjkim ACPI_HEST_HEADER Header; 693193267Sjkim ACPI_HEST_AER_COMMON Aer; 694193267Sjkim 695193267Sjkim} ACPI_HEST_AER; 696193267Sjkim 697193267Sjkim 698193267Sjkim/* 8: PCI Express/PCI-X Bridge AER */ 699193267Sjkim 700193267Sjkimtypedef struct acpi_hest_aer_bridge 701193267Sjkim{ 702193267Sjkim ACPI_HEST_HEADER Header; 703193267Sjkim ACPI_HEST_AER_COMMON Aer; 704197104Sjkim UINT32 UncorrectableMask2; 705197104Sjkim UINT32 UncorrectableSeverity2; 706197104Sjkim UINT32 AdvancedCapabilities2; 707193267Sjkim 708193267Sjkim} ACPI_HEST_AER_BRIDGE; 709193267Sjkim 710193267Sjkim 711193267Sjkim/* 9: Generic Hardware Error Source */ 712193267Sjkim 713193267Sjkimtypedef struct acpi_hest_generic 714193267Sjkim{ 715193267Sjkim ACPI_HEST_HEADER Header; 716193267Sjkim UINT16 RelatedSourceId; 717197104Sjkim UINT8 Reserved; 718193267Sjkim UINT8 Enabled; 719197104Sjkim UINT32 RecordsToPreallocate; 720193267Sjkim UINT32 MaxSectionsPerRecord; 721193267Sjkim UINT32 MaxRawDataLength; 722193267Sjkim ACPI_GENERIC_ADDRESS ErrorStatusAddress; 723193267Sjkim ACPI_HEST_NOTIFY Notify; 724197104Sjkim UINT32 ErrorBlockLength; 725193267Sjkim 726193267Sjkim} ACPI_HEST_GENERIC; 727193267Sjkim 728193267Sjkim 729197104Sjkim/* Generic Error Status block */ 730167802Sjkim 731197104Sjkimtypedef struct acpi_hest_generic_status 732167802Sjkim{ 733197104Sjkim UINT32 BlockStatus; 734197104Sjkim UINT32 RawDataOffset; 735197104Sjkim UINT32 RawDataLength; 736197104Sjkim UINT32 DataLength; 737197104Sjkim UINT32 ErrorSeverity; 738167802Sjkim 739197104Sjkim} ACPI_HEST_GENERIC_STATUS; 740167802Sjkim 741197104Sjkim/* Values for BlockStatus flags above */ 742167802Sjkim 743197104Sjkim#define ACPI_HEST_UNCORRECTABLE (1) 744197104Sjkim#define ACPI_HEST_CORRECTABLE (1<<1) 745197104Sjkim#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 746197104Sjkim#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 747197104Sjkim#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 748167802Sjkim 749167802Sjkim 750197104Sjkim/* Generic Error Data entry */ 751167802Sjkim 752197104Sjkimtypedef struct acpi_hest_generic_data 753193267Sjkim{ 754197104Sjkim UINT8 SectionType[16]; 755197104Sjkim UINT32 ErrorSeverity; 756197104Sjkim UINT16 Revision; 757197104Sjkim UINT8 ValidationBits; 758193267Sjkim UINT8 Flags; 759197104Sjkim UINT32 ErrorDataLength; 760197104Sjkim UINT8 FruId[16]; 761197104Sjkim UINT8 FruText[20]; 762193267Sjkim 763197104Sjkim} ACPI_HEST_GENERIC_DATA; 764193267Sjkim 765193267Sjkim 766193267Sjkim/******************************************************************************* 767193267Sjkim * 768167802Sjkim * MADT - Multiple APIC Description Table 769197104Sjkim * Version 3 770167802Sjkim * 771167802Sjkim ******************************************************************************/ 772167802Sjkim 773167802Sjkimtypedef struct acpi_table_madt 774167802Sjkim{ 775167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 776167802Sjkim UINT32 Address; /* Physical address of local APIC */ 777167802Sjkim UINT32 Flags; 778167802Sjkim 779167802Sjkim} ACPI_TABLE_MADT; 780167802Sjkim 781197104Sjkim/* Masks for Flags field above */ 782167802Sjkim 783197104Sjkim#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 784167802Sjkim 785167802Sjkim/* Values for PCATCompat flag */ 786167802Sjkim 787167802Sjkim#define ACPI_MADT_DUAL_PIC 0 788167802Sjkim#define ACPI_MADT_MULTIPLE_APIC 1 789167802Sjkim 790167802Sjkim 791197104Sjkim/* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */ 792167802Sjkim 793167802Sjkimenum AcpiMadtType 794167802Sjkim{ 795167802Sjkim ACPI_MADT_TYPE_LOCAL_APIC = 0, 796167802Sjkim ACPI_MADT_TYPE_IO_APIC = 1, 797167802Sjkim ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 798167802Sjkim ACPI_MADT_TYPE_NMI_SOURCE = 3, 799167802Sjkim ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 800167802Sjkim ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 801167802Sjkim ACPI_MADT_TYPE_IO_SAPIC = 6, 802167802Sjkim ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 803167802Sjkim ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 804193267Sjkim ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 805193267Sjkim ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 806193267Sjkim ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ 807167802Sjkim}; 808167802Sjkim 809167802Sjkim 810167802Sjkim/* 811167802Sjkim * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 812167802Sjkim */ 813167802Sjkim 814167802Sjkim/* 0: Processor Local APIC */ 815167802Sjkim 816167802Sjkimtypedef struct acpi_madt_local_apic 817167802Sjkim{ 818167802Sjkim ACPI_SUBTABLE_HEADER Header; 819167802Sjkim UINT8 ProcessorId; /* ACPI processor id */ 820167802Sjkim UINT8 Id; /* Processor's local APIC id */ 821167802Sjkim UINT32 LapicFlags; 822167802Sjkim 823167802Sjkim} ACPI_MADT_LOCAL_APIC; 824167802Sjkim 825197104Sjkim 826167802Sjkim/* 1: IO APIC */ 827167802Sjkim 828167802Sjkimtypedef struct acpi_madt_io_apic 829167802Sjkim{ 830167802Sjkim ACPI_SUBTABLE_HEADER Header; 831167802Sjkim UINT8 Id; /* I/O APIC ID */ 832167802Sjkim UINT8 Reserved; /* Reserved - must be zero */ 833167802Sjkim UINT32 Address; /* APIC physical address */ 834167802Sjkim UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 835167802Sjkim 836167802Sjkim} ACPI_MADT_IO_APIC; 837167802Sjkim 838197104Sjkim 839167802Sjkim/* 2: Interrupt Override */ 840167802Sjkim 841167802Sjkimtypedef struct acpi_madt_interrupt_override 842167802Sjkim{ 843167802Sjkim ACPI_SUBTABLE_HEADER Header; 844167802Sjkim UINT8 Bus; /* 0 - ISA */ 845167802Sjkim UINT8 SourceIrq; /* Interrupt source (IRQ) */ 846167802Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 847167802Sjkim UINT16 IntiFlags; 848167802Sjkim 849167802Sjkim} ACPI_MADT_INTERRUPT_OVERRIDE; 850167802Sjkim 851197104Sjkim 852167802Sjkim/* 3: NMI Source */ 853167802Sjkim 854167802Sjkimtypedef struct acpi_madt_nmi_source 855167802Sjkim{ 856167802Sjkim ACPI_SUBTABLE_HEADER Header; 857167802Sjkim UINT16 IntiFlags; 858167802Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 859167802Sjkim 860167802Sjkim} ACPI_MADT_NMI_SOURCE; 861167802Sjkim 862197104Sjkim 863167802Sjkim/* 4: Local APIC NMI */ 864167802Sjkim 865167802Sjkimtypedef struct acpi_madt_local_apic_nmi 866167802Sjkim{ 867167802Sjkim ACPI_SUBTABLE_HEADER Header; 868167802Sjkim UINT8 ProcessorId; /* ACPI processor id */ 869167802Sjkim UINT16 IntiFlags; 870167802Sjkim UINT8 Lint; /* LINTn to which NMI is connected */ 871167802Sjkim 872167802Sjkim} ACPI_MADT_LOCAL_APIC_NMI; 873167802Sjkim 874197104Sjkim 875167802Sjkim/* 5: Address Override */ 876167802Sjkim 877167802Sjkimtypedef struct acpi_madt_local_apic_override 878167802Sjkim{ 879167802Sjkim ACPI_SUBTABLE_HEADER Header; 880167802Sjkim UINT16 Reserved; /* Reserved, must be zero */ 881167802Sjkim UINT64 Address; /* APIC physical address */ 882167802Sjkim 883167802Sjkim} ACPI_MADT_LOCAL_APIC_OVERRIDE; 884167802Sjkim 885197104Sjkim 886167802Sjkim/* 6: I/O Sapic */ 887167802Sjkim 888167802Sjkimtypedef struct acpi_madt_io_sapic 889167802Sjkim{ 890167802Sjkim ACPI_SUBTABLE_HEADER Header; 891167802Sjkim UINT8 Id; /* I/O SAPIC ID */ 892167802Sjkim UINT8 Reserved; /* Reserved, must be zero */ 893167802Sjkim UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 894167802Sjkim UINT64 Address; /* SAPIC physical address */ 895167802Sjkim 896167802Sjkim} ACPI_MADT_IO_SAPIC; 897167802Sjkim 898197104Sjkim 899167802Sjkim/* 7: Local Sapic */ 900167802Sjkim 901167802Sjkimtypedef struct acpi_madt_local_sapic 902167802Sjkim{ 903167802Sjkim ACPI_SUBTABLE_HEADER Header; 904167802Sjkim UINT8 ProcessorId; /* ACPI processor id */ 905167802Sjkim UINT8 Id; /* SAPIC ID */ 906167802Sjkim UINT8 Eid; /* SAPIC EID */ 907167802Sjkim UINT8 Reserved[3]; /* Reserved, must be zero */ 908167802Sjkim UINT32 LapicFlags; 909167802Sjkim UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 910167802Sjkim char UidString[1]; /* String UID - ACPI 3.0 */ 911167802Sjkim 912167802Sjkim} ACPI_MADT_LOCAL_SAPIC; 913167802Sjkim 914197104Sjkim 915167802Sjkim/* 8: Platform Interrupt Source */ 916167802Sjkim 917167802Sjkimtypedef struct acpi_madt_interrupt_source 918167802Sjkim{ 919167802Sjkim ACPI_SUBTABLE_HEADER Header; 920167802Sjkim UINT16 IntiFlags; 921167802Sjkim UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 922167802Sjkim UINT8 Id; /* Processor ID */ 923167802Sjkim UINT8 Eid; /* Processor EID */ 924167802Sjkim UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 925167802Sjkim UINT32 GlobalIrq; /* Global system interrupt */ 926167802Sjkim UINT32 Flags; /* Interrupt Source Flags */ 927167802Sjkim 928167802Sjkim} ACPI_MADT_INTERRUPT_SOURCE; 929167802Sjkim 930197104Sjkim/* Masks for Flags field above */ 931167802Sjkim 932167802Sjkim#define ACPI_MADT_CPEI_OVERRIDE (1) 933167802Sjkim 934167802Sjkim 935197104Sjkim/* 9: Processor Local X2APIC (ACPI 4.0) */ 936197104Sjkim 937193267Sjkimtypedef struct acpi_madt_local_x2apic 938193267Sjkim{ 939193267Sjkim ACPI_SUBTABLE_HEADER Header; 940193267Sjkim UINT16 Reserved; /* Reserved - must be zero */ 941193267Sjkim UINT32 LocalApicId; /* Processor x2APIC ID */ 942193267Sjkim UINT32 LapicFlags; 943193267Sjkim UINT32 Uid; /* ACPI processor UID */ 944193267Sjkim 945193267Sjkim} ACPI_MADT_LOCAL_X2APIC; 946193267Sjkim 947193267Sjkim 948197104Sjkim/* 10: Local X2APIC NMI (ACPI 4.0) */ 949197104Sjkim 950193267Sjkimtypedef struct acpi_madt_local_x2apic_nmi 951193267Sjkim{ 952193267Sjkim ACPI_SUBTABLE_HEADER Header; 953193267Sjkim UINT16 IntiFlags; 954193267Sjkim UINT32 Uid; /* ACPI processor UID */ 955193267Sjkim UINT8 Lint; /* LINTn to which NMI is connected */ 956193267Sjkim UINT8 Reserved[3]; /* Reserved - must be zero */ 957193267Sjkim 958193267Sjkim} ACPI_MADT_LOCAL_X2APIC_NMI; 959193267Sjkim 960193267Sjkim 961167802Sjkim/* 962167802Sjkim * Common flags fields for MADT subtables 963167802Sjkim */ 964167802Sjkim 965167802Sjkim/* MADT Local APIC flags (LapicFlags) */ 966167802Sjkim 967167802Sjkim#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 968167802Sjkim 969167802Sjkim/* MADT MPS INTI flags (IntiFlags) */ 970167802Sjkim 971167802Sjkim#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 972167802Sjkim#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 973167802Sjkim 974167802Sjkim/* Values for MPS INTI flags */ 975167802Sjkim 976167802Sjkim#define ACPI_MADT_POLARITY_CONFORMS 0 977167802Sjkim#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 978167802Sjkim#define ACPI_MADT_POLARITY_RESERVED 2 979167802Sjkim#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 980167802Sjkim 981167802Sjkim#define ACPI_MADT_TRIGGER_CONFORMS (0) 982167802Sjkim#define ACPI_MADT_TRIGGER_EDGE (1<<2) 983167802Sjkim#define ACPI_MADT_TRIGGER_RESERVED (2<<2) 984167802Sjkim#define ACPI_MADT_TRIGGER_LEVEL (3<<2) 985167802Sjkim 986167802Sjkim 987167802Sjkim/******************************************************************************* 988167802Sjkim * 989197104Sjkim * MSCT - Maximum System Characteristics Table (ACPI 4.0) 990197104Sjkim * Version 1 991167802Sjkim * 992167802Sjkim ******************************************************************************/ 993167802Sjkim 994197104Sjkimtypedef struct acpi_table_msct 995167802Sjkim{ 996167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 997197104Sjkim UINT32 ProximityOffset; /* Location of proximity info struct(s) */ 998197104Sjkim UINT32 MaxProximityDomains;/* Max number of proximity domains */ 999197104Sjkim UINT32 MaxClockDomains; /* Max number of clock domains */ 1000197104Sjkim UINT64 MaxAddress; /* Max physical address in system */ 1001167802Sjkim 1002197104Sjkim} ACPI_TABLE_MSCT; 1003167802Sjkim 1004167802Sjkim 1005197104Sjkim/* Subtable - Maximum Proximity Domain Information. Version 1 */ 1006167802Sjkim 1007197104Sjkimtypedef struct acpi_msct_proximity 1008167802Sjkim{ 1009197104Sjkim UINT8 Revision; 1010197104Sjkim UINT8 Length; 1011197104Sjkim UINT32 RangeStart; /* Start of domain range */ 1012197104Sjkim UINT32 RangeEnd; /* End of domain range */ 1013197104Sjkim UINT32 ProcessorCapacity; 1014197104Sjkim UINT64 MemoryCapacity; /* In bytes */ 1015167802Sjkim 1016197104Sjkim} ACPI_MSCT_PROXIMITY; 1017167802Sjkim 1018167802Sjkim 1019167802Sjkim/******************************************************************************* 1020167802Sjkim * 1021167802Sjkim * SBST - Smart Battery Specification Table 1022197104Sjkim * Version 1 1023167802Sjkim * 1024167802Sjkim ******************************************************************************/ 1025167802Sjkim 1026167802Sjkimtypedef struct acpi_table_sbst 1027167802Sjkim{ 1028167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1029167802Sjkim UINT32 WarningLevel; 1030167802Sjkim UINT32 LowLevel; 1031167802Sjkim UINT32 CriticalLevel; 1032167802Sjkim 1033167802Sjkim} ACPI_TABLE_SBST; 1034167802Sjkim 1035167802Sjkim 1036167802Sjkim/******************************************************************************* 1037167802Sjkim * 1038167802Sjkim * SLIT - System Locality Distance Information Table 1039197104Sjkim * Version 1 1040167802Sjkim * 1041167802Sjkim ******************************************************************************/ 1042167802Sjkim 1043167802Sjkimtypedef struct acpi_table_slit 1044167802Sjkim{ 1045167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1046167802Sjkim UINT64 LocalityCount; 1047167802Sjkim UINT8 Entry[1]; /* Real size = localities^2 */ 1048167802Sjkim 1049167802Sjkim} ACPI_TABLE_SLIT; 1050167802Sjkim 1051167802Sjkim 1052167802Sjkim/******************************************************************************* 1053167802Sjkim * 1054167802Sjkim * SRAT - System Resource Affinity Table 1055197104Sjkim * Version 3 1056167802Sjkim * 1057167802Sjkim ******************************************************************************/ 1058167802Sjkim 1059167802Sjkimtypedef struct acpi_table_srat 1060167802Sjkim{ 1061167802Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1062167802Sjkim UINT32 TableRevision; /* Must be value '1' */ 1063167802Sjkim UINT64 Reserved; /* Reserved, must be zero */ 1064167802Sjkim 1065167802Sjkim} ACPI_TABLE_SRAT; 1066167802Sjkim 1067167802Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 1068167802Sjkim 1069167802Sjkimenum AcpiSratType 1070167802Sjkim{ 1071193267Sjkim ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 1072193267Sjkim ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 1073193267Sjkim ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 1074193267Sjkim ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 1075167802Sjkim}; 1076167802Sjkim 1077193267Sjkim/* 1078193267Sjkim * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 1079193267Sjkim */ 1080167802Sjkim 1081193267Sjkim/* 0: Processor Local APIC/SAPIC Affinity */ 1082193267Sjkim 1083167802Sjkimtypedef struct acpi_srat_cpu_affinity 1084167802Sjkim{ 1085167802Sjkim ACPI_SUBTABLE_HEADER Header; 1086167802Sjkim UINT8 ProximityDomainLo; 1087167802Sjkim UINT8 ApicId; 1088167802Sjkim UINT32 Flags; 1089167802Sjkim UINT8 LocalSapicEid; 1090167802Sjkim UINT8 ProximityDomainHi[3]; 1091167802Sjkim UINT32 Reserved; /* Reserved, must be zero */ 1092167802Sjkim 1093167802Sjkim} ACPI_SRAT_CPU_AFFINITY; 1094167802Sjkim 1095197104Sjkim/* Flags */ 1096197104Sjkim 1097197104Sjkim#define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 1098197104Sjkim 1099197104Sjkim 1100193267Sjkim/* 1: Memory Affinity */ 1101167802Sjkim 1102167802Sjkimtypedef struct acpi_srat_mem_affinity 1103167802Sjkim{ 1104167802Sjkim ACPI_SUBTABLE_HEADER Header; 1105167802Sjkim UINT32 ProximityDomain; 1106167802Sjkim UINT16 Reserved; /* Reserved, must be zero */ 1107167802Sjkim UINT64 BaseAddress; 1108167802Sjkim UINT64 Length; 1109193267Sjkim UINT32 Reserved1; 1110167802Sjkim UINT32 Flags; 1111193267Sjkim UINT64 Reserved2; /* Reserved, must be zero */ 1112167802Sjkim 1113167802Sjkim} ACPI_SRAT_MEM_AFFINITY; 1114167802Sjkim 1115167802Sjkim/* Flags */ 1116167802Sjkim 1117167802Sjkim#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 1118167802Sjkim#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 1119167802Sjkim#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 1120167802Sjkim 1121167802Sjkim 1122197104Sjkim/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 1123197104Sjkim 1124193267Sjkimtypedef struct acpi_srat_x2apic_cpu_affinity 1125167802Sjkim{ 1126193267Sjkim ACPI_SUBTABLE_HEADER Header; 1127193267Sjkim UINT16 Reserved; /* Reserved, must be zero */ 1128193267Sjkim UINT32 ProximityDomain; 1129193267Sjkim UINT32 ApicId; 1130193267Sjkim UINT32 Flags; 1131197104Sjkim UINT32 ClockDomain; 1132197104Sjkim UINT32 Reserved2; 1133167802Sjkim 1134193267Sjkim} ACPI_SRAT_X2APIC_CPU_AFFINITY; 1135167802Sjkim 1136193267Sjkim/* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 1137193267Sjkim 1138193267Sjkim#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 1139193267Sjkim 1140193267Sjkim 1141167802Sjkim/* Reset to default packing */ 1142167802Sjkim 114369450Smsmith#pragma pack() 114469450Smsmith 114569450Smsmith#endif /* __ACTBL1_H__ */ 1146