actbl1.h revision 193267
1/****************************************************************************** 2 * 3 * Name: actbl1.h - Additional ACPI table definitions 4 * 5 *****************************************************************************/ 6 7/****************************************************************************** 8 * 9 * 1. Copyright Notice 10 * 11 * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp. 12 * All rights reserved. 13 * 14 * 2. License 15 * 16 * 2.1. This is your license from Intel Corp. under its intellectual property 17 * rights. You may have additional license terms from the party that provided 18 * you this software, covering your right to use that party's intellectual 19 * property rights. 20 * 21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22 * copy of the source code appearing in this file ("Covered Code") an 23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24 * base code distributed originally by Intel ("Original Intel Code") to copy, 25 * make derivatives, distribute, use and display any portion of the Covered 26 * Code in any form, with the right to sublicense such rights; and 27 * 28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29 * license (with the right to sublicense), under only those claims of Intel 30 * patents that are infringed by the Original Intel Code, to make, use, sell, 31 * offer to sell, and import the Covered Code and derivative works thereof 32 * solely to the minimum extent necessary to exercise the above copyright 33 * license, and in no event shall the patent license extend to any additions 34 * to or modifications of the Original Intel Code. No other license or right 35 * is granted directly or by implication, estoppel or otherwise; 36 * 37 * The above copyright and patent license is granted only if the following 38 * conditions are met: 39 * 40 * 3. Conditions 41 * 42 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43 * Redistribution of source code of any substantial portion of the Covered 44 * Code or modification with rights to further distribute source must include 45 * the above Copyright Notice, the above License, this list of Conditions, 46 * and the following Disclaimer and Export Compliance provision. In addition, 47 * Licensee must cause all Covered Code to which Licensee contributes to 48 * contain a file documenting the changes Licensee made to create that Covered 49 * Code and the date of any change. Licensee must include in that file the 50 * documentation of any changes made by any predecessor Licensee. Licensee 51 * must include a prominent statement that the modification is derived, 52 * directly or indirectly, from Original Intel Code. 53 * 54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55 * Redistribution of source code of any substantial portion of the Covered 56 * Code or modification without rights to further distribute source must 57 * include the following Disclaimer and Export Compliance provision in the 58 * documentation and/or other materials provided with distribution. In 59 * addition, Licensee may not authorize further sublicense of source of any 60 * portion of the Covered Code, and must include terms to the effect that the 61 * license from Licensee to its licensee is limited to the intellectual 62 * property embodied in the software Licensee provides to its licensee, and 63 * not to intellectual property embodied in modifications its licensee may 64 * make. 65 * 66 * 3.3. Redistribution of Executable. Redistribution in executable form of any 67 * substantial portion of the Covered Code or modification must reproduce the 68 * above Copyright Notice, and the following Disclaimer and Export Compliance 69 * provision in the documentation and/or other materials provided with the 70 * distribution. 71 * 72 * 3.4. Intel retains all right, title, and interest in and to the Original 73 * Intel Code. 74 * 75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76 * Intel shall be used in advertising or otherwise to promote the sale, use or 77 * other dealings in products derived from or relating to the Covered Code 78 * without prior written authorization from Intel. 79 * 80 * 4. Disclaimer and Export Compliance 81 * 82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88 * PARTICULAR PURPOSE. 89 * 90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97 * LIMITED REMEDY. 98 * 99 * 4.3. Licensee shall not export, either directly or indirectly, any of this 100 * software or system incorporating such software without first obtaining any 101 * required license or other approval from the U. S. Department of Commerce or 102 * any other agency or department of the United States Government. In the 103 * event Licensee exports any such software from the United States or 104 * re-exports any such software from a foreign destination, Licensee shall 105 * ensure that the distribution and export/re-export of the software is in 106 * compliance with all laws, regulations, orders, or other restrictions of the 107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108 * any of its subsidiaries will export/re-export any technical data, process, 109 * software, or service, directly or indirectly, to any country for which the 110 * United States government or any agency thereof requires an export license, 111 * other governmental approval, or letter of assurance, without first obtaining 112 * such license, approval or letter. 113 * 114 *****************************************************************************/ 115 116#ifndef __ACTBL1_H__ 117#define __ACTBL1_H__ 118 119 120/******************************************************************************* 121 * 122 * Additional ACPI Tables 123 * 124 * These tables are not consumed directly by the ACPICA subsystem, but are 125 * included here to support device drivers and the AML disassembler. 126 * 127 ******************************************************************************/ 128 129 130/* 131 * Values for description table header signatures. Useful because they make 132 * it more difficult to inadvertently type in the wrong signature. 133 */ 134#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 135#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 136#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 137#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 138#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 139#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 140#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 141#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 142#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 143#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 144#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 145#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 146#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 147#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 148#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 149#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 150#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 151#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 152#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 153#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 154#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 155#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 156#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 157#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 158 159 160/* 161 * All tables must be byte-packed to match the ACPI specification, since 162 * the tables are provided by the system BIOS. 163 */ 164#pragma pack(1) 165 166/* 167 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 168 * This is the only type that is even remotely portable. Anything else is not 169 * portable, so do not use any other bitfield types. 170 */ 171 172 173/* Common Subtable header (used in MADT, SRAT, etc.) */ 174 175typedef struct acpi_subtable_header 176{ 177 UINT8 Type; 178 UINT8 Length; 179 180} ACPI_SUBTABLE_HEADER; 181 182 183/* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 184 185typedef struct acpi_whea_header 186{ 187 UINT8 Action; 188 UINT8 Instruction; 189 UINT8 Flags; 190 UINT8 Reserved; 191 ACPI_GENERIC_ADDRESS RegisterRegion; 192 UINT64 Value; /* Value used with Read/Write register */ 193 UINT64 Mask; /* Bitmask required for this register instruction */ 194 195} ACPI_WHEA_HEADER; 196 197 198/******************************************************************************* 199 * 200 * ASF - Alert Standard Format table (Signature "ASF!") 201 * 202 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 203 * 204 ******************************************************************************/ 205 206typedef struct acpi_table_asf 207{ 208 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 209 210} ACPI_TABLE_ASF; 211 212 213/* ASF subtable header */ 214 215typedef struct acpi_asf_header 216{ 217 UINT8 Type; 218 UINT8 Reserved; 219 UINT16 Length; 220 221} ACPI_ASF_HEADER; 222 223 224/* Values for Type field above */ 225 226enum AcpiAsfType 227{ 228 ACPI_ASF_TYPE_INFO = 0, 229 ACPI_ASF_TYPE_ALERT = 1, 230 ACPI_ASF_TYPE_CONTROL = 2, 231 ACPI_ASF_TYPE_BOOT = 3, 232 ACPI_ASF_TYPE_ADDRESS = 4, 233 ACPI_ASF_TYPE_RESERVED = 5 234}; 235 236/* 237 * ASF subtables 238 */ 239 240/* 0: ASF Information */ 241 242typedef struct acpi_asf_info 243{ 244 ACPI_ASF_HEADER Header; 245 UINT8 MinResetValue; 246 UINT8 MinPollInterval; 247 UINT16 SystemId; 248 UINT32 MfgId; 249 UINT8 Flags; 250 UINT8 Reserved2[3]; 251 252} ACPI_ASF_INFO; 253 254/* 1: ASF Alerts */ 255 256typedef struct acpi_asf_alert 257{ 258 ACPI_ASF_HEADER Header; 259 UINT8 AssertMask; 260 UINT8 DeassertMask; 261 UINT8 Alerts; 262 UINT8 DataLength; 263 264} ACPI_ASF_ALERT; 265 266typedef struct acpi_asf_alert_data 267{ 268 UINT8 Address; 269 UINT8 Command; 270 UINT8 Mask; 271 UINT8 Value; 272 UINT8 SensorType; 273 UINT8 Type; 274 UINT8 Offset; 275 UINT8 SourceType; 276 UINT8 Severity; 277 UINT8 SensorNumber; 278 UINT8 Entity; 279 UINT8 Instance; 280 281} ACPI_ASF_ALERT_DATA; 282 283/* 2: ASF Remote Control */ 284 285typedef struct acpi_asf_remote 286{ 287 ACPI_ASF_HEADER Header; 288 UINT8 Controls; 289 UINT8 DataLength; 290 UINT16 Reserved2; 291 292} ACPI_ASF_REMOTE; 293 294typedef struct acpi_asf_control_data 295{ 296 UINT8 Function; 297 UINT8 Address; 298 UINT8 Command; 299 UINT8 Value; 300 301} ACPI_ASF_CONTROL_DATA; 302 303/* 3: ASF RMCP Boot Options */ 304 305typedef struct acpi_asf_rmcp 306{ 307 ACPI_ASF_HEADER Header; 308 UINT8 Capabilities[7]; 309 UINT8 CompletionCode; 310 UINT32 EnterpriseId; 311 UINT8 Command; 312 UINT16 Parameter; 313 UINT16 BootOptions; 314 UINT16 OemParameters; 315 316} ACPI_ASF_RMCP; 317 318/* 4: ASF Address */ 319 320typedef struct acpi_asf_address 321{ 322 ACPI_ASF_HEADER Header; 323 UINT8 EpromAddress; 324 UINT8 Devices; 325 326} ACPI_ASF_ADDRESS; 327 328 329/******************************************************************************* 330 * 331 * BERT - Boot Error Record Table 332 * 333 ******************************************************************************/ 334 335typedef struct acpi_table_bert 336{ 337 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 338 UINT32 RegionLength; /* Length of the boot error region */ 339 UINT64 Address; /* Physical addresss of the error region */ 340 341} ACPI_TABLE_BERT; 342 343 344/* Boot Error Region */ 345 346typedef struct acpi_bert_region 347{ 348 UINT32 BlockStatus; 349 UINT32 RawDataOffset; 350 UINT32 RawDataLength; 351 UINT32 DataLength; 352 UINT32 ErrorSeverity; 353 354} ACPI_BERT_REGION; 355 356/* BlockStatus Flags */ 357 358#define ACPI_BERT_UNCORRECTABLE (1) 359#define ACPI_BERT_CORRECTABLE (2) 360#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) 361#define ACPI_BERT_MULTIPLE_CORRECTABLE (8) 362 363 364/******************************************************************************* 365 * 366 * BOOT - Simple Boot Flag Table 367 * 368 ******************************************************************************/ 369 370typedef struct acpi_table_boot 371{ 372 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 373 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 374 UINT8 Reserved[3]; 375 376} ACPI_TABLE_BOOT; 377 378 379/******************************************************************************* 380 * 381 * CPEP - Corrected Platform Error Polling table 382 * 383 ******************************************************************************/ 384 385typedef struct acpi_table_cpep 386{ 387 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 388 UINT64 Reserved; 389 390} ACPI_TABLE_CPEP; 391 392 393/* Subtable */ 394 395typedef struct acpi_cpep_polling 396{ 397 UINT8 Type; 398 UINT8 Length; 399 UINT8 Id; /* Processor ID */ 400 UINT8 Eid; /* Processor EID */ 401 UINT32 Interval; /* Polling interval (msec) */ 402 403} ACPI_CPEP_POLLING; 404 405 406/******************************************************************************* 407 * 408 * DBGP - Debug Port table 409 * 410 ******************************************************************************/ 411 412typedef struct acpi_table_dbgp 413{ 414 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 415 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 416 UINT8 Reserved[3]; 417 ACPI_GENERIC_ADDRESS DebugPort; 418 419} ACPI_TABLE_DBGP; 420 421 422/******************************************************************************* 423 * 424 * DMAR - DMA Remapping table 425 * From "Intel Virtualization Technology for Directed I/O", Sept. 2007 426 * 427 ******************************************************************************/ 428 429typedef struct acpi_table_dmar 430{ 431 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 432 UINT8 Width; /* Host Address Width */ 433 UINT8 Flags; 434 UINT8 Reserved[10]; 435 436} ACPI_TABLE_DMAR; 437 438/* Flags */ 439 440#define ACPI_DMAR_INTR_REMAP (1) 441 442/* DMAR subtable header */ 443 444typedef struct acpi_dmar_header 445{ 446 UINT16 Type; 447 UINT16 Length; 448 449} ACPI_DMAR_HEADER; 450 451/* Values for subtable type in ACPI_DMAR_HEADER */ 452 453enum AcpiDmarType 454{ 455 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 456 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 457 ACPI_DMAR_TYPE_ATSR = 2, 458 ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 459}; 460 461typedef struct acpi_dmar_device_scope 462{ 463 UINT8 EntryType; 464 UINT8 Length; 465 UINT16 Reserved; 466 UINT8 EnumerationId; 467 UINT8 Bus; 468 469} ACPI_DMAR_DEVICE_SCOPE; 470 471/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 472 473enum AcpiDmarScopeType 474{ 475 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 476 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 477 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 478 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 479 ACPI_DMAR_SCOPE_TYPE_HPET = 4, 480 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 481}; 482 483typedef struct acpi_dmar_pci_path 484{ 485 UINT8 Device; 486 UINT8 Function; 487 488} ACPI_DMAR_PCI_PATH; 489 490/* 491 * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER 492 */ 493 494/* 0: Hardware Unit Definition */ 495 496typedef struct acpi_dmar_hardware_unit 497{ 498 ACPI_DMAR_HEADER Header; 499 UINT8 Flags; 500 UINT8 Reserved; 501 UINT16 Segment; 502 UINT64 Address; /* Register Base Address */ 503 504} ACPI_DMAR_HARDWARE_UNIT; 505 506/* Flags */ 507 508#define ACPI_DMAR_INCLUDE_ALL (1) 509 510/* 1: Reserved Memory Defininition */ 511 512typedef struct acpi_dmar_reserved_memory 513{ 514 ACPI_DMAR_HEADER Header; 515 UINT16 Reserved; 516 UINT16 Segment; 517 UINT64 BaseAddress; /* 4K aligned base address */ 518 UINT64 EndAddress; /* 4K aligned limit address */ 519 520} ACPI_DMAR_RESERVED_MEMORY; 521 522/* Flags */ 523 524#define ACPI_DMAR_ALLOW_ALL (1) 525 526/* 2: Root Port ATS Capability Reporting Structure */ 527 528typedef struct acpi_dmar_atsr 529{ 530 ACPI_DMAR_HEADER Header; 531 UINT8 Flags; 532 UINT8 Reserved; 533 UINT16 Segment; 534 535} ACPI_DMAR_ATSR; 536 537/* Flags */ 538 539#define ACPI_DMAR_ALL_PORTS (1) 540 541 542/******************************************************************************* 543 * 544 * ECDT - Embedded Controller Boot Resources Table 545 * 546 ******************************************************************************/ 547 548typedef struct acpi_table_ecdt 549{ 550 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 551 ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 552 ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 553 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 554 UINT8 Gpe; /* The GPE for the EC */ 555 UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 556 557} ACPI_TABLE_ECDT; 558 559 560/******************************************************************************* 561 * 562 * EINJ - Error Injection Table 563 * 564 ******************************************************************************/ 565 566typedef struct acpi_table_einj 567{ 568 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 569 UINT32 HeaderLength; 570 UINT32 Reserved; 571 UINT32 Entries; 572 573} ACPI_TABLE_EINJ; 574 575/* EINJ Injection Instruction Entries (actions) */ 576 577typedef struct acpi_einj_entry 578{ 579 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 580 581} ACPI_EINJ_ENTRY; 582 583/* Values for Action field above */ 584 585enum AcpiEinjActions 586{ 587 ACPI_EINJ_BEGIN_OPERATION = 0, 588 ACPI_EINJ_GET_TRIGGER_TABLE = 1, 589 ACPI_EINJ_SET_ERROR_TYPE = 2, 590 ACPI_EINJ_GET_ERROR_TYPE = 3, 591 ACPI_EINJ_END_OPERATION = 4, 592 ACPI_EINJ_EXECUTE_OPERATION = 5, 593 ACPI_EINJ_CHECK_BUSY_STATUS = 6, 594 ACPI_EINJ_GET_COMMAND_STATUS = 7, 595 ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 596 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 597}; 598 599/* Values for Instruction field above */ 600 601enum AcpiEinjInstructions 602{ 603 ACPI_EINJ_READ_REGISTER = 0, 604 ACPI_EINJ_READ_REGISTER_VALUE = 1, 605 ACPI_EINJ_WRITE_REGISTER = 2, 606 ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 607 ACPI_EINJ_NOOP = 4, 608 ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 609}; 610 611/* EINJ Trigger Error Action Table */ 612 613typedef struct acpi_einj_trigger 614{ 615 UINT32 HeaderSize; 616 UINT32 Revision; 617 UINT32 TableSize; 618 UINT32 EntryCount; 619 620} ACPI_EINJ_TRIGGER; 621 622 623/******************************************************************************* 624 * 625 * ERST - Error Record Serialization Table 626 * 627 ******************************************************************************/ 628 629typedef struct acpi_table_erst 630{ 631 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 632 UINT32 HeaderLength; 633 UINT32 Reserved; 634 UINT32 Entries; 635 636} ACPI_TABLE_ERST; 637 638/* ERST Serialization Entries (actions) */ 639 640typedef struct acpi_erst_entry 641{ 642 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 643 644} ACPI_ERST_ENTRY; 645 646/* Values for Action field above */ 647 648enum AcpiErstActions 649{ 650 ACPI_ERST_BEGIN_WRITE_OPERATION = 0, 651 ACPI_ERST_BEGIN_READ_OPERATION = 1, 652 ACPI_ERST_BETGIN_CLEAR_OPERATION= 2, 653 ACPI_ERST_END_OPERATION = 3, 654 ACPI_ERST_SET_RECORD_OFFSET = 4, 655 ACPI_ERST_EXECUTE_OPERATION = 5, 656 ACPI_ERST_CHECK_BUSY_STATUS = 6, 657 ACPI_ERST_GET_COMMAND_STATUS = 7, 658 ACPI_ERST_GET_RECORD_IDENTIFIER = 8, 659 ACPI_ERST_SET_RECORD_IDENTIFIER = 9, 660 ACPI_ERST_GET_RECORD_COUNT = 10, 661 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 662 ACPI_ERST_NOT_USED = 12, 663 ACPI_ERST_GET_ERROR_RANGE = 13, 664 ACPI_ERST_GET_ERROR_LENGTH = 14, 665 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 666 ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 667}; 668 669/* Values for Instruction field above */ 670 671enum AcpiErstInstructions 672{ 673 ACPI_ERST_READ_REGISTER = 0, 674 ACPI_ERST_READ_REGISTER_VALUE = 1, 675 ACPI_ERST_WRITE_REGISTER = 2, 676 ACPI_ERST_WRITE_REGISTER_VALUE = 3, 677 ACPI_ERST_NOOP = 4, 678 ACPI_ERST_LOAD_VAR1 = 5, 679 ACPI_ERST_LOAD_VAR2 = 6, 680 ACPI_ERST_STORE_VAR1 = 7, 681 ACPI_ERST_ADD = 8, 682 ACPI_ERST_SUBTRACT = 9, 683 ACPI_ERST_ADD_VALUE = 10, 684 ACPI_ERST_SUBTRACT_VALUE = 11, 685 ACPI_ERST_STALL = 12, 686 ACPI_ERST_STALL_WHILE_TRUE = 13, 687 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 688 ACPI_ERST_GOTO = 15, 689 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 690 ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 691 ACPI_ERST_MOVE_DATA = 18, 692 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 693}; 694 695 696/******************************************************************************* 697 * 698 * HEST - Hardware Error Source Table 699 * 700 ******************************************************************************/ 701 702typedef struct acpi_table_hest 703{ 704 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 705 UINT32 ErrorSourceCount; 706 707} ACPI_TABLE_HEST; 708 709 710/* HEST subtable header */ 711 712typedef struct acpi_hest_header 713{ 714 UINT16 Type; 715 716} ACPI_HEST_HEADER; 717 718 719/* Values for Type field above for subtables */ 720 721enum AcpiHestTypes 722{ 723 ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, 724 ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, 725 ACPI_HEST_TYPE_XPF_UNUSED = 2, 726 ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, 727 ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, 728 ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, 729 ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 730 ACPI_HEST_TYPE_AER_ENDPOINT = 7, 731 ACPI_HEST_TYPE_AER_BRIDGE = 8, 732 ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, 733 ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 734}; 735 736 737/* 738 * HEST Sub-subtables 739 */ 740 741/* XPF Machine Check Error Bank */ 742 743typedef struct acpi_hest_xpf_error_bank 744{ 745 UINT8 BankNumber; 746 UINT8 ClearStatusOnInit; 747 UINT8 StatusFormat; 748 UINT8 ConfigWriteEnable; 749 UINT32 ControlRegister; 750 UINT64 ControlInitData; 751 UINT32 StatusRegister; 752 UINT32 AddressRegister; 753 UINT32 MiscRegister; 754 755} ACPI_HEST_XPF_ERROR_BANK; 756 757 758/* Generic Error Status */ 759 760typedef struct acpi_hest_generic_status 761{ 762 UINT32 BlockStatus; 763 UINT32 RawDataOffset; 764 UINT32 RawDataLength; 765 UINT32 DataLength; 766 UINT32 ErrorSeverity; 767 768} ACPI_HEST_GENERIC_STATUS; 769 770 771/* Generic Error Data */ 772 773typedef struct acpi_hest_generic_data 774{ 775 UINT8 SectionType[16]; 776 UINT32 ErrorSeverity; 777 UINT16 Revision; 778 UINT8 ValidationBits; 779 UINT8 Flags; 780 UINT32 ErrorDataLength; 781 UINT8 FruId[16]; 782 UINT8 FruText[20]; 783 784} ACPI_HEST_GENERIC_DATA; 785 786 787/* Common HEST structure for PCI/AER types below (6,7,8) */ 788 789typedef struct acpi_hest_aer_common 790{ 791 UINT16 SourceId; 792 UINT16 ConfigWriteEnable; 793 UINT8 Flags; 794 UINT8 Enabled; 795 UINT32 RecordsToPreAllocate; 796 UINT32 MaxSectionsPerRecord; 797 UINT32 Bus; 798 UINT16 Device; 799 UINT16 Function; 800 UINT16 DeviceControl; 801 UINT16 Reserved; 802 UINT32 UncorrectableErrorMask; 803 UINT32 UncorrectableErrorSeverity; 804 UINT32 CorrectableErrorMask; 805 UINT32 AdvancedErrorCapabilities; 806 807} ACPI_HEST_AER_COMMON; 808 809 810/* Hardware Error Notification */ 811 812typedef struct acpi_hest_notify 813{ 814 UINT8 Type; 815 UINT8 Length; 816 UINT16 ConfigWriteEnable; 817 UINT32 PollInterval; 818 UINT32 Vector; 819 UINT32 PollingThresholdValue; 820 UINT32 PollingThresholdWindow; 821 UINT32 ErrorThresholdValue; 822 UINT32 ErrorThresholdWindow; 823 824} ACPI_HEST_NOTIFY; 825 826/* Values for Notify Type field above */ 827 828enum AcpiHestNotifyTypes 829{ 830 ACPI_HEST_NOTIFY_POLLED = 0, 831 ACPI_HEST_NOTIFY_EXTERNAL = 1, 832 ACPI_HEST_NOTIFY_LOCAL = 2, 833 ACPI_HEST_NOTIFY_SCI = 3, 834 ACPI_HEST_NOTIFY_NMI = 4, 835 ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 836}; 837 838 839/* 840 * HEST subtables 841 * 842 * From WHEA Design Document, 16 May 2007. 843 * Note: There is no subtable type 2 in this version of the document, 844 * and there are two different subtable type 3s. 845 */ 846 847 /* 0: XPF Machine Check Exception */ 848 849typedef struct acpi_hest_xpf_machine_check 850{ 851 ACPI_HEST_HEADER Header; 852 UINT16 SourceId; 853 UINT16 ConfigWriteEnable; 854 UINT8 Flags; 855 UINT8 Reserved1; 856 UINT32 RecordsToPreAllocate; 857 UINT32 MaxSectionsPerRecord; 858 UINT64 GlobalCapabilityData; 859 UINT64 GlobalControlData; 860 UINT8 NumHardwareBanks; 861 UINT8 Reserved2[7]; 862 863} ACPI_HEST_XPF_MACHINE_CHECK; 864 865 866/* 1: XPF Corrected Machine Check */ 867 868typedef struct acpi_table_hest_xpf_corrected 869{ 870 ACPI_HEST_HEADER Header; 871 UINT16 SourceId; 872 UINT16 ConfigWriteEnable; 873 UINT8 Flags; 874 UINT8 Enabled; 875 UINT32 RecordsToPreAllocate; 876 UINT32 MaxSectionsPerRecord; 877 ACPI_HEST_NOTIFY Notify; 878 UINT8 NumHardwareBanks; 879 UINT8 Reserved[3]; 880 881} ACPI_HEST_XPF_CORRECTED; 882 883 884/* 3: XPF Non-Maskable Interrupt */ 885 886typedef struct acpi_hest_xpf_nmi 887{ 888 ACPI_HEST_HEADER Header; 889 UINT16 SourceId; 890 UINT32 Reserved; 891 UINT32 RecordsToPreAllocate; 892 UINT32 MaxSectionsPerRecord; 893 UINT32 MaxRawDataLength; 894 895} ACPI_HEST_XPF_NMI; 896 897 898/* 4: IPF Corrected Machine Check */ 899 900typedef struct acpi_hest_ipf_corrected 901{ 902 ACPI_HEST_HEADER Header; 903 UINT8 Enabled; 904 UINT8 Reserved; 905 906} ACPI_HEST_IPF_CORRECTED; 907 908 909/* 5: IPF Corrected Platform Error */ 910 911typedef struct acpi_hest_ipf_corrected_platform 912{ 913 ACPI_HEST_HEADER Header; 914 UINT8 Enabled; 915 UINT8 Reserved; 916 917} ACPI_HEST_IPF_CORRECTED_PLATFORM; 918 919 920/* 6: PCI Express Root Port AER */ 921 922typedef struct acpi_hest_aer_root 923{ 924 ACPI_HEST_HEADER Header; 925 ACPI_HEST_AER_COMMON Aer; 926 UINT32 RootErrorCommand; 927 928} ACPI_HEST_AER_ROOT; 929 930 931/* 7: PCI Express AER (AER Endpoint) */ 932 933typedef struct acpi_hest_aer 934{ 935 ACPI_HEST_HEADER Header; 936 ACPI_HEST_AER_COMMON Aer; 937 938} ACPI_HEST_AER; 939 940 941/* 8: PCI Express/PCI-X Bridge AER */ 942 943typedef struct acpi_hest_aer_bridge 944{ 945 ACPI_HEST_HEADER Header; 946 ACPI_HEST_AER_COMMON Aer; 947 UINT32 SecondaryUncorrectableErrorMask; 948 UINT32 SecondaryUncorrectableErrorSeverity; 949 UINT32 SecondaryAdvancedCapabilities; 950 951} ACPI_HEST_AER_BRIDGE; 952 953 954/* 9: Generic Hardware Error Source */ 955 956typedef struct acpi_hest_generic 957{ 958 ACPI_HEST_HEADER Header; 959 UINT16 SourceId; 960 UINT16 RelatedSourceId; 961 UINT8 ConfigWriteEnable; 962 UINT8 Enabled; 963 UINT32 RecordsToPreAllocate; 964 UINT32 MaxSectionsPerRecord; 965 UINT32 MaxRawDataLength; 966 ACPI_GENERIC_ADDRESS ErrorStatusAddress; 967 ACPI_HEST_NOTIFY Notify; 968 UINT32 ErrorStatusBlockLength; 969 970} ACPI_HEST_GENERIC; 971 972 973/******************************************************************************* 974 * 975 * HPET - High Precision Event Timer table 976 * 977 ******************************************************************************/ 978 979typedef struct acpi_table_hpet 980{ 981 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 982 UINT32 Id; /* Hardware ID of event timer block */ 983 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 984 UINT8 Sequence; /* HPET sequence number */ 985 UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 986 UINT8 Flags; 987 988} ACPI_TABLE_HPET; 989 990/*! Flags */ 991 992#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 993#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 994#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 995 996/*! [End] no source code translation !*/ 997 998 999/******************************************************************************* 1000 * 1001 * IBFT - Boot Firmware Table 1002 * 1003 ******************************************************************************/ 1004 1005typedef struct acpi_table_ibft 1006{ 1007 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1008 UINT8 Reserved[12]; 1009 1010} ACPI_TABLE_IBFT; 1011 1012 1013/* IBFT common subtable header */ 1014 1015typedef struct acpi_ibft_header 1016{ 1017 UINT8 Type; 1018 UINT8 Version; 1019 UINT16 Length; 1020 UINT8 Index; 1021 UINT8 Flags; 1022 1023} ACPI_IBFT_HEADER; 1024 1025 1026/* Values for Type field above */ 1027 1028enum AcpiIbftType 1029{ 1030 ACPI_IBFT_TYPE_NOT_USED = 0, 1031 ACPI_IBFT_TYPE_CONTROL = 1, 1032 ACPI_IBFT_TYPE_INITIATOR = 2, 1033 ACPI_IBFT_TYPE_NIC = 3, 1034 ACPI_IBFT_TYPE_TARGET = 4, 1035 ACPI_IBFT_TYPE_EXTENSIONS = 5, 1036 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 1037}; 1038 1039 1040/* IBFT subtables */ 1041 1042typedef struct acpi_ibft_control 1043{ 1044 ACPI_IBFT_HEADER Header; 1045 UINT16 Extensions; 1046 UINT16 InitiatorOffset; 1047 UINT16 Nic0Offset; 1048 UINT16 Target0Offset; 1049 UINT16 Nic1Offset; 1050 UINT16 Target1Offset; 1051 1052} ACPI_IBFT_CONTROL; 1053 1054typedef struct acpi_ibft_initiator 1055{ 1056 ACPI_IBFT_HEADER Header; 1057 UINT8 SnsServer[16]; 1058 UINT8 SlpServer[16]; 1059 UINT8 PrimaryServer[16]; 1060 UINT8 SecondaryServer[16]; 1061 UINT16 NameLength; 1062 UINT16 NameOffset; 1063 1064} ACPI_IBFT_INITIATOR; 1065 1066typedef struct acpi_ibft_nic 1067{ 1068 ACPI_IBFT_HEADER Header; 1069 UINT8 IpAddress[16]; 1070 UINT8 SubnetMaskPrefix; 1071 UINT8 Origin; 1072 UINT8 Gateway[16]; 1073 UINT8 PrimaryDns[16]; 1074 UINT8 SecondaryDns[16]; 1075 UINT8 Dhcp[16]; 1076 UINT16 Vlan; 1077 UINT8 MacAddress[6]; 1078 UINT16 PciAddress; 1079 UINT16 NameLength; 1080 UINT16 NameOffset; 1081 1082} ACPI_IBFT_NIC; 1083 1084typedef struct acpi_ibft_target 1085{ 1086 ACPI_IBFT_HEADER Header; 1087 UINT8 TargetIpAddress[16]; 1088 UINT16 TargetIpSocket; 1089 UINT8 TargetBootLun[8]; 1090 UINT8 ChapType; 1091 UINT8 NicAssociation; 1092 UINT16 TargetNameLength; 1093 UINT16 TargetNameOffset; 1094 UINT16 ChapNameLength; 1095 UINT16 ChapNameOffset; 1096 UINT16 ChapSecretLength; 1097 UINT16 ChapSecretOffset; 1098 UINT16 ReverseChapNameLength; 1099 UINT16 ReverseChapNameOffset; 1100 UINT16 ReverseChapSecretLength; 1101 UINT16 ReverseChapSecretOffset; 1102 1103} ACPI_IBFT_TARGET; 1104 1105 1106/******************************************************************************* 1107 * 1108 * MADT - Multiple APIC Description Table 1109 * 1110 ******************************************************************************/ 1111 1112typedef struct acpi_table_madt 1113{ 1114 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1115 UINT32 Address; /* Physical address of local APIC */ 1116 UINT32 Flags; 1117 1118} ACPI_TABLE_MADT; 1119 1120/* Flags */ 1121 1122#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 1123 1124/* Values for PCATCompat flag */ 1125 1126#define ACPI_MADT_DUAL_PIC 0 1127#define ACPI_MADT_MULTIPLE_APIC 1 1128 1129 1130/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 1131 1132enum AcpiMadtType 1133{ 1134 ACPI_MADT_TYPE_LOCAL_APIC = 0, 1135 ACPI_MADT_TYPE_IO_APIC = 1, 1136 ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 1137 ACPI_MADT_TYPE_NMI_SOURCE = 3, 1138 ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 1139 ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 1140 ACPI_MADT_TYPE_IO_SAPIC = 6, 1141 ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 1142 ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 1143 ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 1144 ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 1145 ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ 1146}; 1147 1148 1149/* 1150 * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 1151 */ 1152 1153/* 0: Processor Local APIC */ 1154 1155typedef struct acpi_madt_local_apic 1156{ 1157 ACPI_SUBTABLE_HEADER Header; 1158 UINT8 ProcessorId; /* ACPI processor id */ 1159 UINT8 Id; /* Processor's local APIC id */ 1160 UINT32 LapicFlags; 1161 1162} ACPI_MADT_LOCAL_APIC; 1163 1164/* 1: IO APIC */ 1165 1166typedef struct acpi_madt_io_apic 1167{ 1168 ACPI_SUBTABLE_HEADER Header; 1169 UINT8 Id; /* I/O APIC ID */ 1170 UINT8 Reserved; /* Reserved - must be zero */ 1171 UINT32 Address; /* APIC physical address */ 1172 UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 1173 1174} ACPI_MADT_IO_APIC; 1175 1176/* 2: Interrupt Override */ 1177 1178typedef struct acpi_madt_interrupt_override 1179{ 1180 ACPI_SUBTABLE_HEADER Header; 1181 UINT8 Bus; /* 0 - ISA */ 1182 UINT8 SourceIrq; /* Interrupt source (IRQ) */ 1183 UINT32 GlobalIrq; /* Global system interrupt */ 1184 UINT16 IntiFlags; 1185 1186} ACPI_MADT_INTERRUPT_OVERRIDE; 1187 1188/* 3: NMI Source */ 1189 1190typedef struct acpi_madt_nmi_source 1191{ 1192 ACPI_SUBTABLE_HEADER Header; 1193 UINT16 IntiFlags; 1194 UINT32 GlobalIrq; /* Global system interrupt */ 1195 1196} ACPI_MADT_NMI_SOURCE; 1197 1198/* 4: Local APIC NMI */ 1199 1200typedef struct acpi_madt_local_apic_nmi 1201{ 1202 ACPI_SUBTABLE_HEADER Header; 1203 UINT8 ProcessorId; /* ACPI processor id */ 1204 UINT16 IntiFlags; 1205 UINT8 Lint; /* LINTn to which NMI is connected */ 1206 1207} ACPI_MADT_LOCAL_APIC_NMI; 1208 1209/* 5: Address Override */ 1210 1211typedef struct acpi_madt_local_apic_override 1212{ 1213 ACPI_SUBTABLE_HEADER Header; 1214 UINT16 Reserved; /* Reserved, must be zero */ 1215 UINT64 Address; /* APIC physical address */ 1216 1217} ACPI_MADT_LOCAL_APIC_OVERRIDE; 1218 1219/* 6: I/O Sapic */ 1220 1221typedef struct acpi_madt_io_sapic 1222{ 1223 ACPI_SUBTABLE_HEADER Header; 1224 UINT8 Id; /* I/O SAPIC ID */ 1225 UINT8 Reserved; /* Reserved, must be zero */ 1226 UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 1227 UINT64 Address; /* SAPIC physical address */ 1228 1229} ACPI_MADT_IO_SAPIC; 1230 1231/* 7: Local Sapic */ 1232 1233typedef struct acpi_madt_local_sapic 1234{ 1235 ACPI_SUBTABLE_HEADER Header; 1236 UINT8 ProcessorId; /* ACPI processor id */ 1237 UINT8 Id; /* SAPIC ID */ 1238 UINT8 Eid; /* SAPIC EID */ 1239 UINT8 Reserved[3]; /* Reserved, must be zero */ 1240 UINT32 LapicFlags; 1241 UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 1242 char UidString[1]; /* String UID - ACPI 3.0 */ 1243 1244} ACPI_MADT_LOCAL_SAPIC; 1245 1246/* 8: Platform Interrupt Source */ 1247 1248typedef struct acpi_madt_interrupt_source 1249{ 1250 ACPI_SUBTABLE_HEADER Header; 1251 UINT16 IntiFlags; 1252 UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 1253 UINT8 Id; /* Processor ID */ 1254 UINT8 Eid; /* Processor EID */ 1255 UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 1256 UINT32 GlobalIrq; /* Global system interrupt */ 1257 UINT32 Flags; /* Interrupt Source Flags */ 1258 1259} ACPI_MADT_INTERRUPT_SOURCE; 1260 1261/* Flags field above */ 1262 1263#define ACPI_MADT_CPEI_OVERRIDE (1) 1264 1265/* 9: Processor Local X2APIC (07/2008) */ 1266 1267typedef struct acpi_madt_local_x2apic 1268{ 1269 ACPI_SUBTABLE_HEADER Header; 1270 UINT16 Reserved; /* Reserved - must be zero */ 1271 UINT32 LocalApicId; /* Processor x2APIC ID */ 1272 UINT32 LapicFlags; 1273 UINT32 Uid; /* ACPI processor UID */ 1274 1275} ACPI_MADT_LOCAL_X2APIC; 1276 1277/* 10: Local X2APIC NMI (07/2008) */ 1278 1279typedef struct acpi_madt_local_x2apic_nmi 1280{ 1281 ACPI_SUBTABLE_HEADER Header; 1282 UINT16 IntiFlags; 1283 UINT32 Uid; /* ACPI processor UID */ 1284 UINT8 Lint; /* LINTn to which NMI is connected */ 1285 UINT8 Reserved[3]; /* Reserved - must be zero */ 1286 1287} ACPI_MADT_LOCAL_X2APIC_NMI; 1288 1289 1290/* 1291 * Common flags fields for MADT subtables 1292 */ 1293 1294/* MADT Local APIC flags (LapicFlags) */ 1295 1296#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 1297 1298/* MADT MPS INTI flags (IntiFlags) */ 1299 1300#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 1301#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 1302 1303/* Values for MPS INTI flags */ 1304 1305#define ACPI_MADT_POLARITY_CONFORMS 0 1306#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 1307#define ACPI_MADT_POLARITY_RESERVED 2 1308#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 1309 1310#define ACPI_MADT_TRIGGER_CONFORMS (0) 1311#define ACPI_MADT_TRIGGER_EDGE (1<<2) 1312#define ACPI_MADT_TRIGGER_RESERVED (2<<2) 1313#define ACPI_MADT_TRIGGER_LEVEL (3<<2) 1314 1315 1316/******************************************************************************* 1317 * 1318 * MCFG - PCI Memory Mapped Configuration table and sub-table 1319 * 1320 ******************************************************************************/ 1321 1322typedef struct acpi_table_mcfg 1323{ 1324 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1325 UINT8 Reserved[8]; 1326 1327} ACPI_TABLE_MCFG; 1328 1329 1330/* Subtable */ 1331 1332typedef struct acpi_mcfg_allocation 1333{ 1334 UINT64 Address; /* Base address, processor-relative */ 1335 UINT16 PciSegment; /* PCI segment group number */ 1336 UINT8 StartBusNumber; /* Starting PCI Bus number */ 1337 UINT8 EndBusNumber; /* Final PCI Bus number */ 1338 UINT32 Reserved; 1339 1340} ACPI_MCFG_ALLOCATION; 1341 1342 1343/******************************************************************************* 1344 * 1345 * SBST - Smart Battery Specification Table 1346 * 1347 ******************************************************************************/ 1348 1349typedef struct acpi_table_sbst 1350{ 1351 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1352 UINT32 WarningLevel; 1353 UINT32 LowLevel; 1354 UINT32 CriticalLevel; 1355 1356} ACPI_TABLE_SBST; 1357 1358 1359/******************************************************************************* 1360 * 1361 * SLIT - System Locality Distance Information Table 1362 * 1363 ******************************************************************************/ 1364 1365typedef struct acpi_table_slit 1366{ 1367 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1368 UINT64 LocalityCount; 1369 UINT8 Entry[1]; /* Real size = localities^2 */ 1370 1371} ACPI_TABLE_SLIT; 1372 1373 1374/******************************************************************************* 1375 * 1376 * SPCR - Serial Port Console Redirection table 1377 * 1378 ******************************************************************************/ 1379 1380typedef struct acpi_table_spcr 1381{ 1382 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1383 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1384 UINT8 Reserved[3]; 1385 ACPI_GENERIC_ADDRESS SerialPort; 1386 UINT8 InterruptType; 1387 UINT8 PcInterrupt; 1388 UINT32 Interrupt; 1389 UINT8 BaudRate; 1390 UINT8 Parity; 1391 UINT8 StopBits; 1392 UINT8 FlowControl; 1393 UINT8 TerminalType; 1394 UINT8 Reserved1; 1395 UINT16 PciDeviceId; 1396 UINT16 PciVendorId; 1397 UINT8 PciBus; 1398 UINT8 PciDevice; 1399 UINT8 PciFunction; 1400 UINT32 PciFlags; 1401 UINT8 PciSegment; 1402 UINT32 Reserved2; 1403 1404} ACPI_TABLE_SPCR; 1405 1406 1407/******************************************************************************* 1408 * 1409 * SPMI - Server Platform Management Interface table 1410 * 1411 ******************************************************************************/ 1412 1413typedef struct acpi_table_spmi 1414{ 1415 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1416 UINT8 Reserved; 1417 UINT8 InterfaceType; 1418 UINT16 SpecRevision; /* Version of IPMI */ 1419 UINT8 InterruptType; 1420 UINT8 GpeNumber; /* GPE assigned */ 1421 UINT8 Reserved1; 1422 UINT8 PciDeviceFlag; 1423 UINT32 Interrupt; 1424 ACPI_GENERIC_ADDRESS IpmiRegister; 1425 UINT8 PciSegment; 1426 UINT8 PciBus; 1427 UINT8 PciDevice; 1428 UINT8 PciFunction; 1429 1430} ACPI_TABLE_SPMI; 1431 1432 1433/******************************************************************************* 1434 * 1435 * SRAT - System Resource Affinity Table 1436 * 1437 ******************************************************************************/ 1438 1439typedef struct acpi_table_srat 1440{ 1441 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1442 UINT32 TableRevision; /* Must be value '1' */ 1443 UINT64 Reserved; /* Reserved, must be zero */ 1444 1445} ACPI_TABLE_SRAT; 1446 1447/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 1448 1449enum AcpiSratType 1450{ 1451 ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 1452 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 1453 ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 1454 ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 1455}; 1456 1457/* 1458 * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 1459 */ 1460 1461/* 0: Processor Local APIC/SAPIC Affinity */ 1462 1463typedef struct acpi_srat_cpu_affinity 1464{ 1465 ACPI_SUBTABLE_HEADER Header; 1466 UINT8 ProximityDomainLo; 1467 UINT8 ApicId; 1468 UINT32 Flags; 1469 UINT8 LocalSapicEid; 1470 UINT8 ProximityDomainHi[3]; 1471 UINT32 Reserved; /* Reserved, must be zero */ 1472 1473} ACPI_SRAT_CPU_AFFINITY; 1474 1475/* 1: Memory Affinity */ 1476 1477typedef struct acpi_srat_mem_affinity 1478{ 1479 ACPI_SUBTABLE_HEADER Header; 1480 UINT32 ProximityDomain; 1481 UINT16 Reserved; /* Reserved, must be zero */ 1482 UINT64 BaseAddress; 1483 UINT64 Length; 1484 UINT32 Reserved1; 1485 UINT32 Flags; 1486 UINT64 Reserved2; /* Reserved, must be zero */ 1487 1488} ACPI_SRAT_MEM_AFFINITY; 1489 1490/* Flags */ 1491 1492#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 1493#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 1494#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 1495 1496/* 2: Processor Local X2_APIC Affinity (07/2008) */ 1497 1498typedef struct acpi_srat_x2apic_cpu_affinity 1499{ 1500 ACPI_SUBTABLE_HEADER Header; 1501 UINT16 Reserved; /* Reserved, must be zero */ 1502 UINT32 ProximityDomain; 1503 UINT32 ApicId; 1504 UINT32 Flags; 1505 1506} ACPI_SRAT_X2APIC_CPU_AFFINITY; 1507 1508/* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 1509 1510#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 1511 1512 1513/******************************************************************************* 1514 * 1515 * TCPA - Trusted Computing Platform Alliance table 1516 * 1517 ******************************************************************************/ 1518 1519typedef struct acpi_table_tcpa 1520{ 1521 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1522 UINT16 Reserved; 1523 UINT32 MaxLogLength; /* Maximum length for the event log area */ 1524 UINT64 LogAddress; /* Address of the event log area */ 1525 1526} ACPI_TABLE_TCPA; 1527 1528 1529/******************************************************************************* 1530 * 1531 * UEFI - UEFI Boot optimization Table 1532 * 1533 ******************************************************************************/ 1534 1535typedef struct acpi_table_uefi 1536{ 1537 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1538 UINT8 Identifier[16]; /* UUID identifier */ 1539 UINT16 DataOffset; /* Offset of remaining data in table */ 1540 UINT8 Data; 1541 1542} ACPI_TABLE_UEFI; 1543 1544 1545/******************************************************************************* 1546 * 1547 * WDAT - Watchdog Action Table 1548 * 1549 ******************************************************************************/ 1550 1551typedef struct acpi_table_wdat 1552{ 1553 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1554 UINT32 HeaderLength; /* Watchdog Header Length */ 1555 UINT16 PciSegment; /* PCI Segment number */ 1556 UINT8 PciBus; /* PCI Bus number */ 1557 UINT8 PciDevice; /* PCI Device number */ 1558 UINT8 PciFunction; /* PCI Function number */ 1559 UINT8 Reserved[3]; 1560 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1561 UINT32 MaxCount; /* Maximum counter value supported */ 1562 UINT32 MinCount; /* Minimum counter value */ 1563 UINT8 Flags; 1564 UINT8 Reserved2[3]; 1565 UINT32 Entries; /* Number of watchdog entries that follow */ 1566 1567} ACPI_TABLE_WDAT; 1568 1569/* WDAT Instruction Entries (actions) */ 1570 1571typedef struct acpi_wdat_entry 1572{ 1573 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 1574 1575} ACPI_WDAT_ENTRY; 1576 1577/* Values for Action field above */ 1578 1579enum AcpiWdatActions 1580{ 1581 ACPI_WDAT_RESET = 1, 1582 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1583 ACPI_WDAT_GET_COUNTDOWN = 5, 1584 ACPI_WDAT_SET_COUNTDOWN = 6, 1585 ACPI_WDAT_GET_RUNNING_STATE = 8, 1586 ACPI_WDAT_SET_RUNNING_STATE = 9, 1587 ACPI_WDAT_GET_STOPPED_STATE = 10, 1588 ACPI_WDAT_SET_STOPPED_STATE = 11, 1589 ACPI_WDAT_GET_REBOOT = 16, 1590 ACPI_WDAT_SET_REBOOT = 17, 1591 ACPI_WDAT_GET_SHUTDOWN = 18, 1592 ACPI_WDAT_SET_SHUTDOWN = 19, 1593 ACPI_WDAT_GET_STATUS = 32, 1594 ACPI_WDAT_SET_STATUS = 33, 1595 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1596}; 1597 1598/* Values for Instruction field above */ 1599 1600enum AcpiWdatInstructions 1601{ 1602 ACPI_WDAT_READ_VALUE = 0, 1603 ACPI_WDAT_READ_COUNTDOWN = 1, 1604 ACPI_WDAT_WRITE_VALUE = 2, 1605 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1606 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1607 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1608}; 1609 1610 1611/******************************************************************************* 1612 * 1613 * WDRT - Watchdog Resource Table 1614 * 1615 ******************************************************************************/ 1616 1617typedef struct acpi_table_wdrt 1618{ 1619 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1620 UINT32 HeaderLength; /* Watchdog Header Length */ 1621 UINT8 PciSegment; /* PCI Segment number */ 1622 UINT8 PciBus; /* PCI Bus number */ 1623 UINT8 PciDevice; /* PCI Device number */ 1624 UINT8 PciFunction; /* PCI Function number */ 1625 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1626 UINT32 MaxCount; /* Maximum counter value supported */ 1627 UINT32 MinCount; /* Minimum counter value */ 1628 UINT8 Flags; 1629 UINT8 Reserved[3]; 1630 UINT32 Entries; /* Number of watchdog entries that follow */ 1631 1632} ACPI_TABLE_WDRT; 1633 1634/* Flags */ 1635 1636#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ 1637 1638 1639/* Reset to default packing */ 1640 1641#pragma pack() 1642 1643#endif /* __ACTBL1_H__ */ 1644