1 /******************************************************************************
3 * Name: actbl1.h - Additional ACPI table definitions
5 *****************************************************************************/
7 /******************************************************************************
11 * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
12 * All rights reserved.
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
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
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;
37 * The above copyright and patent license is granted only if the following
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.
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
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
72 * 3.4. Intel retains all right, title, and interest in and to the Original
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.
80 * 4. Disclaimer and Export Compliance
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
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
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.
114 *****************************************************************************/
120 /*******************************************************************************
122 * Additional ACPI Tables
124 * These tables are not consumed directly by the ACPICA subsystem, but are
125 * included here to support device drivers and the AML disassembler.
127 ******************************************************************************/
131 * Values for description table header signatures. Useful because they make
132 * it more difficult to inadvertently type in the wrong signature.
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 */
161 * All tables must be byte-packed to match the ACPI specification, since
162 * the tables are provided by the system BIOS.
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.
173 /* Common Subtable header (used in MADT, SRAT, etc.) */
175 typedef struct acpi_subtable_header
180 } ACPI_SUBTABLE_HEADER;
183 /* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */
185 typedef struct acpi_whea_header
191 ACPI_GENERIC_ADDRESS RegisterRegion;
192 UINT64 Value; /* Value used with Read/Write register */
193 UINT64 Mask; /* Bitmask required for this register instruction */
198 /*******************************************************************************
200 * ASF - Alert Standard Format table (Signature "ASF!")
202 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
204 ******************************************************************************/
206 typedef struct acpi_table_asf
208 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
213 /* ASF subtable header */
215 typedef struct acpi_asf_header
224 /* Values for Type field above */
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
240 /* 0: ASF Information */
242 typedef struct acpi_asf_info
244 ACPI_ASF_HEADER Header;
246 UINT8 MinPollInterval;
256 typedef struct acpi_asf_alert
258 ACPI_ASF_HEADER Header;
266 typedef struct acpi_asf_alert_data
281 } ACPI_ASF_ALERT_DATA;
283 /* 2: ASF Remote Control */
285 typedef struct acpi_asf_remote
287 ACPI_ASF_HEADER Header;
294 typedef struct acpi_asf_control_data
301 } ACPI_ASF_CONTROL_DATA;
303 /* 3: ASF RMCP Boot Options */
305 typedef struct acpi_asf_rmcp
307 ACPI_ASF_HEADER Header;
308 UINT8 Capabilities[7];
309 UINT8 CompletionCode;
314 UINT16 OemParameters;
320 typedef struct acpi_asf_address
322 ACPI_ASF_HEADER Header;
329 /*******************************************************************************
331 * BERT - Boot Error Record Table
333 ******************************************************************************/
335 typedef struct acpi_table_bert
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 */
344 /* Boot Error Region */
346 typedef struct acpi_bert_region
349 UINT32 RawDataOffset;
350 UINT32 RawDataLength;
352 UINT32 ErrorSeverity;
356 /* BlockStatus Flags */
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)
364 /*******************************************************************************
366 * BOOT - Simple Boot Flag Table
368 ******************************************************************************/
370 typedef struct acpi_table_boot
372 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
373 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
379 /*******************************************************************************
381 * CPEP - Corrected Platform Error Polling table
383 ******************************************************************************/
385 typedef struct acpi_table_cpep
387 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
395 typedef struct acpi_cpep_polling
399 UINT8 Id; /* Processor ID */
400 UINT8 Eid; /* Processor EID */
401 UINT32 Interval; /* Polling interval (msec) */
406 /*******************************************************************************
408 * DBGP - Debug Port table
410 ******************************************************************************/
412 typedef struct acpi_table_dbgp
414 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
415 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */
417 ACPI_GENERIC_ADDRESS DebugPort;
422 /*******************************************************************************
424 * DMAR - DMA Remapping table
425 * From "Intel Virtualization Technology for Directed I/O", Sept. 2007
427 ******************************************************************************/
429 typedef struct acpi_table_dmar
431 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
432 UINT8 Width; /* Host Address Width */
440 #define ACPI_DMAR_INTR_REMAP (1)
442 /* DMAR subtable header */
444 typedef struct acpi_dmar_header
451 /* Values for subtable type in ACPI_DMAR_HEADER */
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 */
461 typedef struct acpi_dmar_device_scope
469 } ACPI_DMAR_DEVICE_SCOPE;
471 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
473 enum AcpiDmarScopeType
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 */
483 typedef struct acpi_dmar_pci_path
488 } ACPI_DMAR_PCI_PATH;
491 * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
494 /* 0: Hardware Unit Definition */
496 typedef struct acpi_dmar_hardware_unit
498 ACPI_DMAR_HEADER Header;
502 UINT64 Address; /* Register Base Address */
504 } ACPI_DMAR_HARDWARE_UNIT;
508 #define ACPI_DMAR_INCLUDE_ALL (1)
510 /* 1: Reserved Memory Defininition */
512 typedef struct acpi_dmar_reserved_memory
514 ACPI_DMAR_HEADER Header;
517 UINT64 BaseAddress; /* 4K aligned base address */
518 UINT64 EndAddress; /* 4K aligned limit address */
520 } ACPI_DMAR_RESERVED_MEMORY;
524 #define ACPI_DMAR_ALLOW_ALL (1)
526 /* 2: Root Port ATS Capability Reporting Structure */
528 typedef struct acpi_dmar_atsr
530 ACPI_DMAR_HEADER Header;
539 #define ACPI_DMAR_ALL_PORTS (1)
542 /*******************************************************************************
544 * ECDT - Embedded Controller Boot Resources Table
546 ******************************************************************************/
548 typedef struct acpi_table_ecdt
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 */
560 /*******************************************************************************
562 * EINJ - Error Injection Table
564 ******************************************************************************/
566 typedef struct acpi_table_einj
568 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
575 /* EINJ Injection Instruction Entries (actions) */
577 typedef struct acpi_einj_entry
579 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
583 /* Values for Action field above */
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 */
599 /* Values for Instruction field above */
601 enum AcpiEinjInstructions
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,
608 ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */
611 /* EINJ Trigger Error Action Table */
613 typedef struct acpi_einj_trigger
623 /*******************************************************************************
625 * ERST - Error Record Serialization Table
627 ******************************************************************************/
629 typedef struct acpi_table_erst
631 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
638 /* ERST Serialization Entries (actions) */
640 typedef struct acpi_erst_entry
642 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
646 /* Values for Action field above */
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 */
669 /* Values for Instruction field above */
671 enum AcpiErstInstructions
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,
678 ACPI_ERST_LOAD_VAR1 = 5,
679 ACPI_ERST_LOAD_VAR2 = 6,
680 ACPI_ERST_STORE_VAR1 = 7,
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,
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 */
696 /*******************************************************************************
698 * HEST - Hardware Error Source Table
700 ******************************************************************************/
702 typedef struct acpi_table_hest
704 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
705 UINT32 ErrorSourceCount;
710 /* HEST subtable header */
712 typedef struct acpi_hest_header
719 /* Values for Type field above for subtables */
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 */
741 /* XPF Machine Check Error Bank */
743 typedef struct acpi_hest_xpf_error_bank
746 UINT8 ClearStatusOnInit;
748 UINT8 ConfigWriteEnable;
749 UINT32 ControlRegister;
750 UINT64 ControlInitData;
751 UINT32 StatusRegister;
752 UINT32 AddressRegister;
755 } ACPI_HEST_XPF_ERROR_BANK;
758 /* Generic Error Status */
760 typedef struct acpi_hest_generic_status
763 UINT32 RawDataOffset;
764 UINT32 RawDataLength;
766 UINT32 ErrorSeverity;
768 } ACPI_HEST_GENERIC_STATUS;
771 /* Generic Error Data */
773 typedef struct acpi_hest_generic_data
775 UINT8 SectionType[16];
776 UINT32 ErrorSeverity;
778 UINT8 ValidationBits;
780 UINT32 ErrorDataLength;
784 } ACPI_HEST_GENERIC_DATA;
787 /* Common HEST structure for PCI/AER types below (6,7,8) */
789 typedef struct acpi_hest_aer_common
792 UINT16 ConfigWriteEnable;
795 UINT32 RecordsToPreAllocate;
796 UINT32 MaxSectionsPerRecord;
800 UINT16 DeviceControl;
802 UINT32 UncorrectableErrorMask;
803 UINT32 UncorrectableErrorSeverity;
804 UINT32 CorrectableErrorMask;
805 UINT32 AdvancedErrorCapabilities;
807 } ACPI_HEST_AER_COMMON;
810 /* Hardware Error Notification */
812 typedef struct acpi_hest_notify
816 UINT16 ConfigWriteEnable;
819 UINT32 PollingThresholdValue;
820 UINT32 PollingThresholdWindow;
821 UINT32 ErrorThresholdValue;
822 UINT32 ErrorThresholdWindow;
826 /* Values for Notify Type field above */
828 enum AcpiHestNotifyTypes
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 */
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.
847 /* 0: XPF Machine Check Exception */
849 typedef struct acpi_hest_xpf_machine_check
851 ACPI_HEST_HEADER Header;
853 UINT16 ConfigWriteEnable;
856 UINT32 RecordsToPreAllocate;
857 UINT32 MaxSectionsPerRecord;
858 UINT64 GlobalCapabilityData;
859 UINT64 GlobalControlData;
860 UINT8 NumHardwareBanks;
863 } ACPI_HEST_XPF_MACHINE_CHECK;
866 /* 1: XPF Corrected Machine Check */
868 typedef struct acpi_table_hest_xpf_corrected
870 ACPI_HEST_HEADER Header;
872 UINT16 ConfigWriteEnable;
875 UINT32 RecordsToPreAllocate;
876 UINT32 MaxSectionsPerRecord;
877 ACPI_HEST_NOTIFY Notify;
878 UINT8 NumHardwareBanks;
881 } ACPI_HEST_XPF_CORRECTED;
884 /* 3: XPF Non-Maskable Interrupt */
886 typedef struct acpi_hest_xpf_nmi
888 ACPI_HEST_HEADER Header;
891 UINT32 RecordsToPreAllocate;
892 UINT32 MaxSectionsPerRecord;
893 UINT32 MaxRawDataLength;
898 /* 4: IPF Corrected Machine Check */
900 typedef struct acpi_hest_ipf_corrected
902 ACPI_HEST_HEADER Header;
906 } ACPI_HEST_IPF_CORRECTED;
909 /* 5: IPF Corrected Platform Error */
911 typedef struct acpi_hest_ipf_corrected_platform
913 ACPI_HEST_HEADER Header;
917 } ACPI_HEST_IPF_CORRECTED_PLATFORM;
920 /* 6: PCI Express Root Port AER */
922 typedef struct acpi_hest_aer_root
924 ACPI_HEST_HEADER Header;
925 ACPI_HEST_AER_COMMON Aer;
926 UINT32 RootErrorCommand;
928 } ACPI_HEST_AER_ROOT;
931 /* 7: PCI Express AER (AER Endpoint) */
933 typedef struct acpi_hest_aer
935 ACPI_HEST_HEADER Header;
936 ACPI_HEST_AER_COMMON Aer;
941 /* 8: PCI Express/PCI-X Bridge AER */
943 typedef struct acpi_hest_aer_bridge
945 ACPI_HEST_HEADER Header;
946 ACPI_HEST_AER_COMMON Aer;
947 UINT32 SecondaryUncorrectableErrorMask;
948 UINT32 SecondaryUncorrectableErrorSeverity;
949 UINT32 SecondaryAdvancedCapabilities;
951 } ACPI_HEST_AER_BRIDGE;
954 /* 9: Generic Hardware Error Source */
956 typedef struct acpi_hest_generic
958 ACPI_HEST_HEADER Header;
960 UINT16 RelatedSourceId;
961 UINT8 ConfigWriteEnable;
963 UINT32 RecordsToPreAllocate;
964 UINT32 MaxSectionsPerRecord;
965 UINT32 MaxRawDataLength;
966 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
967 ACPI_HEST_NOTIFY Notify;
968 UINT32 ErrorStatusBlockLength;
973 /*******************************************************************************
975 * HPET - High Precision Event Timer table
977 ******************************************************************************/
979 typedef struct acpi_table_hpet
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 */
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 */
996 /*! [End] no source code translation !*/
999 /*******************************************************************************
1001 * IBFT - Boot Firmware Table
1003 ******************************************************************************/
1005 typedef struct acpi_table_ibft
1007 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1013 /* IBFT common subtable header */
1015 typedef struct acpi_ibft_header
1026 /* Values for Type field above */
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 */
1040 /* IBFT subtables */
1042 typedef struct acpi_ibft_control
1044 ACPI_IBFT_HEADER Header;
1046 UINT16 InitiatorOffset;
1048 UINT16 Target0Offset;
1050 UINT16 Target1Offset;
1052 } ACPI_IBFT_CONTROL;
1054 typedef struct acpi_ibft_initiator
1056 ACPI_IBFT_HEADER Header;
1057 UINT8 SnsServer[16];
1058 UINT8 SlpServer[16];
1059 UINT8 PrimaryServer[16];
1060 UINT8 SecondaryServer[16];
1064 } ACPI_IBFT_INITIATOR;
1066 typedef struct acpi_ibft_nic
1068 ACPI_IBFT_HEADER Header;
1069 UINT8 IpAddress[16];
1070 UINT8 SubnetMaskPrefix;
1073 UINT8 PrimaryDns[16];
1074 UINT8 SecondaryDns[16];
1077 UINT8 MacAddress[6];
1084 typedef struct acpi_ibft_target
1086 ACPI_IBFT_HEADER Header;
1087 UINT8 TargetIpAddress[16];
1088 UINT16 TargetIpSocket;
1089 UINT8 TargetBootLun[8];
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;
1106 /*******************************************************************************
1108 * MADT - Multiple APIC Description Table
1110 ******************************************************************************/
1112 typedef struct acpi_table_madt
1114 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1115 UINT32 Address; /* Physical address of local APIC */
1122 #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */
1124 /* Values for PCATCompat flag */
1126 #define ACPI_MADT_DUAL_PIC 0
1127 #define ACPI_MADT_MULTIPLE_APIC 1
1130 /* Values for subtable type in ACPI_SUBTABLE_HEADER */
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 */
1150 * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
1153 /* 0: Processor Local APIC */
1155 typedef struct acpi_madt_local_apic
1157 ACPI_SUBTABLE_HEADER Header;
1158 UINT8 ProcessorId; /* ACPI processor id */
1159 UINT8 Id; /* Processor's local APIC id */
1162 } ACPI_MADT_LOCAL_APIC;
1166 typedef struct acpi_madt_io_apic
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 */
1174 } ACPI_MADT_IO_APIC;
1176 /* 2: Interrupt Override */
1178 typedef struct acpi_madt_interrupt_override
1180 ACPI_SUBTABLE_HEADER Header;
1181 UINT8 Bus; /* 0 - ISA */
1182 UINT8 SourceIrq; /* Interrupt source (IRQ) */
1183 UINT32 GlobalIrq; /* Global system interrupt */
1186 } ACPI_MADT_INTERRUPT_OVERRIDE;
1190 typedef struct acpi_madt_nmi_source
1192 ACPI_SUBTABLE_HEADER Header;
1194 UINT32 GlobalIrq; /* Global system interrupt */
1196 } ACPI_MADT_NMI_SOURCE;
1198 /* 4: Local APIC NMI */
1200 typedef struct acpi_madt_local_apic_nmi
1202 ACPI_SUBTABLE_HEADER Header;
1203 UINT8 ProcessorId; /* ACPI processor id */
1205 UINT8 Lint; /* LINTn to which NMI is connected */
1207 } ACPI_MADT_LOCAL_APIC_NMI;
1209 /* 5: Address Override */
1211 typedef struct acpi_madt_local_apic_override
1213 ACPI_SUBTABLE_HEADER Header;
1214 UINT16 Reserved; /* Reserved, must be zero */
1215 UINT64 Address; /* APIC physical address */
1217 } ACPI_MADT_LOCAL_APIC_OVERRIDE;
1221 typedef struct acpi_madt_io_sapic
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 */
1229 } ACPI_MADT_IO_SAPIC;
1231 /* 7: Local Sapic */
1233 typedef struct acpi_madt_local_sapic
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 */
1241 UINT32 Uid; /* Numeric UID - ACPI 3.0 */
1242 char UidString[1]; /* String UID - ACPI 3.0 */
1244 } ACPI_MADT_LOCAL_SAPIC;
1246 /* 8: Platform Interrupt Source */
1248 typedef struct acpi_madt_interrupt_source
1250 ACPI_SUBTABLE_HEADER Header;
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 */
1259 } ACPI_MADT_INTERRUPT_SOURCE;
1261 /* Flags field above */
1263 #define ACPI_MADT_CPEI_OVERRIDE (1)
1265 /* 9: Processor Local X2APIC (07/2008) */
1267 typedef struct acpi_madt_local_x2apic
1269 ACPI_SUBTABLE_HEADER Header;
1270 UINT16 Reserved; /* Reserved - must be zero */
1271 UINT32 LocalApicId; /* Processor x2APIC ID */
1273 UINT32 Uid; /* ACPI processor UID */
1275 } ACPI_MADT_LOCAL_X2APIC;
1277 /* 10: Local X2APIC NMI (07/2008) */
1279 typedef struct acpi_madt_local_x2apic_nmi
1281 ACPI_SUBTABLE_HEADER Header;
1283 UINT32 Uid; /* ACPI processor UID */
1284 UINT8 Lint; /* LINTn to which NMI is connected */
1285 UINT8 Reserved[3]; /* Reserved - must be zero */
1287 } ACPI_MADT_LOCAL_X2APIC_NMI;
1291 * Common flags fields for MADT subtables
1294 /* MADT Local APIC flags (LapicFlags) */
1296 #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
1298 /* MADT MPS INTI flags (IntiFlags) */
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 */
1303 /* Values for MPS INTI flags */
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
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)
1316 /*******************************************************************************
1318 * MCFG - PCI Memory Mapped Configuration table and sub-table
1320 ******************************************************************************/
1322 typedef struct acpi_table_mcfg
1324 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1332 typedef struct acpi_mcfg_allocation
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 */
1340 } ACPI_MCFG_ALLOCATION;
1343 /*******************************************************************************
1345 * SBST - Smart Battery Specification Table
1347 ******************************************************************************/
1349 typedef struct acpi_table_sbst
1351 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1352 UINT32 WarningLevel;
1354 UINT32 CriticalLevel;
1359 /*******************************************************************************
1361 * SLIT - System Locality Distance Information Table
1363 ******************************************************************************/
1365 typedef struct acpi_table_slit
1367 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1368 UINT64 LocalityCount;
1369 UINT8 Entry[1]; /* Real size = localities^2 */
1374 /*******************************************************************************
1376 * SPCR - Serial Port Console Redirection table
1378 ******************************************************************************/
1380 typedef struct acpi_table_spcr
1382 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1383 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */
1385 ACPI_GENERIC_ADDRESS SerialPort;
1386 UINT8 InterruptType;
1407 /*******************************************************************************
1409 * SPMI - Server Platform Management Interface table
1411 ******************************************************************************/
1413 typedef struct acpi_table_spmi
1415 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1417 UINT8 InterfaceType;
1418 UINT16 SpecRevision; /* Version of IPMI */
1419 UINT8 InterruptType;
1420 UINT8 GpeNumber; /* GPE assigned */
1422 UINT8 PciDeviceFlag;
1424 ACPI_GENERIC_ADDRESS IpmiRegister;
1433 /*******************************************************************************
1435 * SRAT - System Resource Affinity Table
1437 ******************************************************************************/
1439 typedef struct acpi_table_srat
1441 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1442 UINT32 TableRevision; /* Must be value '1' */
1443 UINT64 Reserved; /* Reserved, must be zero */
1447 /* Values for subtable type in ACPI_SUBTABLE_HEADER */
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 */
1458 * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
1461 /* 0: Processor Local APIC/SAPIC Affinity */
1463 typedef struct acpi_srat_cpu_affinity
1465 ACPI_SUBTABLE_HEADER Header;
1466 UINT8 ProximityDomainLo;
1469 UINT8 LocalSapicEid;
1470 UINT8 ProximityDomainHi[3];
1471 UINT32 Reserved; /* Reserved, must be zero */
1473 } ACPI_SRAT_CPU_AFFINITY;
1475 /* 1: Memory Affinity */
1477 typedef struct acpi_srat_mem_affinity
1479 ACPI_SUBTABLE_HEADER Header;
1480 UINT32 ProximityDomain;
1481 UINT16 Reserved; /* Reserved, must be zero */
1486 UINT64 Reserved2; /* Reserved, must be zero */
1488 } ACPI_SRAT_MEM_AFFINITY;
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 */
1496 /* 2: Processor Local X2_APIC Affinity (07/2008) */
1498 typedef struct acpi_srat_x2apic_cpu_affinity
1500 ACPI_SUBTABLE_HEADER Header;
1501 UINT16 Reserved; /* Reserved, must be zero */
1502 UINT32 ProximityDomain;
1506 } ACPI_SRAT_X2APIC_CPU_AFFINITY;
1508 /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */
1510 #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
1513 /*******************************************************************************
1515 * TCPA - Trusted Computing Platform Alliance table
1517 ******************************************************************************/
1519 typedef struct acpi_table_tcpa
1521 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1523 UINT32 MaxLogLength; /* Maximum length for the event log area */
1524 UINT64 LogAddress; /* Address of the event log area */
1529 /*******************************************************************************
1531 * UEFI - UEFI Boot optimization Table
1533 ******************************************************************************/
1535 typedef struct acpi_table_uefi
1537 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1538 UINT8 Identifier[16]; /* UUID identifier */
1539 UINT16 DataOffset; /* Offset of remaining data in table */
1545 /*******************************************************************************
1547 * WDAT - Watchdog Action Table
1549 ******************************************************************************/
1551 typedef struct acpi_table_wdat
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 */
1560 UINT32 TimerPeriod; /* Period of one timer count (msec) */
1561 UINT32 MaxCount; /* Maximum counter value supported */
1562 UINT32 MinCount; /* Minimum counter value */
1565 UINT32 Entries; /* Number of watchdog entries that follow */
1569 /* WDAT Instruction Entries (actions) */
1571 typedef struct acpi_wdat_entry
1573 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
1577 /* Values for Action field above */
1579 enum AcpiWdatActions
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 */
1598 /* Values for Instruction field above */
1600 enum AcpiWdatInstructions
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 */
1611 /*******************************************************************************
1613 * WDRT - Watchdog Resource Table
1615 ******************************************************************************/
1617 typedef struct acpi_table_wdrt
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 */
1630 UINT32 Entries; /* Number of watchdog entries that follow */
1636 #define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */
1639 /* Reset to default packing */
1643 #endif /* __ACTBL1_H__ */