1 /******************************************************************************
3 * Name: actbl1.h - Additional ACPI table definitions
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2022, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
48 /*******************************************************************************
50 * Additional ACPI Tables
52 * These tables are not consumed directly by the ACPICA subsystem, but are
53 * included here to support device drivers and the AML disassembler.
55 ******************************************************************************/
59 * Values for description table header signatures for tables defined in this
60 * file. Useful because they make it more difficult to inadvertently type in
61 * the wrong signature.
63 #define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */
64 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
65 #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
66 #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
67 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
68 #define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */
69 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
70 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
71 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
72 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
73 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
74 #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
75 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
76 #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
77 #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
78 #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
79 #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
80 #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
81 #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
82 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
83 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
84 #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table*/
86 #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
87 #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
90 /* Reserved table signatures */
92 #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
93 #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
96 * These tables have been seen in the field, but no definition has been found
98 #ifdef ACPI_UNDEFINED_TABLES
99 #define ACPI_SIG_ATKG "ATKG"
100 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
101 #define ACPI_SIG_IEIT "IEIT"
105 * All tables must be byte-packed to match the ACPI specification, since
106 * the tables are provided by the system BIOS.
111 * Note: C bitfields are not used for this reason:
113 * "Bitfields are great and easy to read, but unfortunately the C language
114 * does not specify the layout of bitfields in memory, which means they are
115 * essentially useless for dealing with packed data in on-disk formats or
116 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
117 * this decision was a design error in C. Ritchie could have picked an order
118 * and stuck with it." Norman Ramsey.
119 * See http://stackoverflow.com/a/1053662/41661
123 /*******************************************************************************
125 * Common subtable headers
127 ******************************************************************************/
129 /* Generic subtable header (used in MADT, SRAT, etc.) */
131 typedef struct acpi_subtable_header
136 } ACPI_SUBTABLE_HEADER
;
139 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
141 typedef struct acpi_whea_header
147 ACPI_GENERIC_ADDRESS RegisterRegion
;
148 UINT64 Value
; /* Value used with Read/Write register */
149 UINT64 Mask
; /* Bitmask required for this register instruction */
154 /*******************************************************************************
156 * ASF - Alert Standard Format table (Signature "ASF!")
159 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
161 ******************************************************************************/
163 typedef struct acpi_table_asf
165 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
170 /* ASF subtable header */
172 typedef struct acpi_asf_header
181 /* Values for Type field above */
185 ACPI_ASF_TYPE_INFO
= 0,
186 ACPI_ASF_TYPE_ALERT
= 1,
187 ACPI_ASF_TYPE_CONTROL
= 2,
188 ACPI_ASF_TYPE_BOOT
= 3,
189 ACPI_ASF_TYPE_ADDRESS
= 4,
190 ACPI_ASF_TYPE_RESERVED
= 5
197 /* 0: ASF Information */
199 typedef struct acpi_asf_info
201 ACPI_ASF_HEADER Header
;
203 UINT8 MinPollInterval
;
211 /* Masks for Flags field above */
213 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
218 typedef struct acpi_asf_alert
220 ACPI_ASF_HEADER Header
;
228 typedef struct acpi_asf_alert_data
243 } ACPI_ASF_ALERT_DATA
;
246 /* 2: ASF Remote Control */
248 typedef struct acpi_asf_remote
250 ACPI_ASF_HEADER Header
;
257 typedef struct acpi_asf_control_data
264 } ACPI_ASF_CONTROL_DATA
;
267 /* 3: ASF RMCP Boot Options */
269 typedef struct acpi_asf_rmcp
271 ACPI_ASF_HEADER Header
;
272 UINT8 Capabilities
[7];
273 UINT8 CompletionCode
;
278 UINT16 OemParameters
;
285 typedef struct acpi_asf_address
287 ACPI_ASF_HEADER Header
;
294 /*******************************************************************************
296 * BERT - Boot Error Record Table (ACPI 4.0)
299 ******************************************************************************/
301 typedef struct acpi_table_bert
303 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
304 UINT32 RegionLength
; /* Length of the boot error region */
305 UINT64 Address
; /* Physical address of the error region */
310 /* Boot Error Region (not a subtable, pointed to by Address field above) */
312 typedef struct acpi_bert_region
314 UINT32 BlockStatus
; /* Type of error information */
315 UINT32 RawDataOffset
; /* Offset to raw error data */
316 UINT32 RawDataLength
; /* Length of raw error data */
317 UINT32 DataLength
; /* Length of generic error data */
318 UINT32 ErrorSeverity
; /* Severity code */
322 /* Values for BlockStatus flags above */
324 #define ACPI_BERT_UNCORRECTABLE (1)
325 #define ACPI_BERT_CORRECTABLE (1<<1)
326 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
327 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
328 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
330 /* Values for ErrorSeverity above */
332 enum AcpiBertErrorSeverity
334 ACPI_BERT_ERROR_CORRECTABLE
= 0,
335 ACPI_BERT_ERROR_FATAL
= 1,
336 ACPI_BERT_ERROR_CORRECTED
= 2,
337 ACPI_BERT_ERROR_NONE
= 3,
338 ACPI_BERT_ERROR_RESERVED
= 4 /* 4 and greater are reserved */
342 * Note: The generic error data that follows the ErrorSeverity field above
343 * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
347 /*******************************************************************************
349 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
352 ******************************************************************************/
354 typedef struct acpi_table_bgrt
356 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
366 /* Flags for Status field above */
368 #define ACPI_BGRT_DISPLAYED (1)
369 #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
372 /*******************************************************************************
374 * BOOT - Simple Boot Flag Table
377 * Conforms to the "Simple Boot Flag Specification", Version 2.1
379 ******************************************************************************/
381 typedef struct acpi_table_boot
383 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
384 UINT8 CmosIndex
; /* Index in CMOS RAM for the boot register */
391 /*******************************************************************************
393 * CDAT - Coherent Device Attribute Table
396 * Conforms to the "Coherent Device Attribute Table (CDAT) Specification
397 " (Revision 1.01, October 2020.)
399 ******************************************************************************/
401 typedef struct acpi_table_cdat
403 UINT32 Length
; /* Length of table in bytes, including this header */
404 UINT8 Revision
; /* ACPI Specification minor version number */
405 UINT8 Checksum
; /* To make sum of entire table == 0 */
407 UINT32 Sequence
; /* Used to detect runtime CDAT table changes */
412 /* CDAT common subtable header */
414 typedef struct acpi_cdat_header
422 /* Values for Type field above */
426 ACPI_CDAT_TYPE_DSMAS
= 0,
427 ACPI_CDAT_TYPE_DSLBIS
= 1,
428 ACPI_CDAT_TYPE_DSMSCIS
= 2,
429 ACPI_CDAT_TYPE_DSIS
= 3,
430 ACPI_CDAT_TYPE_DSEMTS
= 4,
431 ACPI_CDAT_TYPE_SSLBIS
= 5,
432 ACPI_CDAT_TYPE_RESERVED
= 6 /* 6 through 0xFF are reserved */
436 /* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */
438 typedef struct acpi_cadt_dsmas
443 UINT64 DpaBaseAddress
;
448 /* Flags for subtable above */
450 #define ACPI_CEDT_DSMAS_NON_VOLATILE (1 << 2)
453 /* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */
455 typedef struct acpi_cdat_dslbis
458 UINT8 Flags
; /* If Handle matches a DSMAS handle, the definition of this field matches
459 * Flags field in HMAT System Locality Latency */
462 UINT64 EntryBaseUnit
;
469 /* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */
471 typedef struct acpi_cdat_dsmscis
475 UINT64 SideCacheSize
;
476 UINT32 CacheAttributes
;
481 /* Subtable 3: Device Scoped Initiator Structure (DSIS) */
483 typedef struct acpi_cdat_dsis
491 /* Flags for above subtable */
493 #define ACPI_CDAT_DSIS_MEM_ATTACHED (1 << 0)
496 /* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */
498 typedef struct acpi_cdat_dsemts
509 /* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */
511 typedef struct acpi_cdat_sslbis
515 UINT64 EntryBaseUnit
;
520 /* Sub-subtable for above, SslbeEntries field */
522 typedef struct acpi_cdat_sslbe
526 UINT16 LatencyOrBandwidth
;
532 /*******************************************************************************
534 * CEDT - CXL Early Discovery Table
537 * Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020)
539 ******************************************************************************/
541 typedef struct acpi_table_cedt
543 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
547 /* CEDT subtable header (Performance Record Structure) */
549 typedef struct acpi_cedt_header
557 /* Values for Type field above */
561 ACPI_CEDT_TYPE_CHBS
= 0,
562 ACPI_CEDT_TYPE_CFMWS
= 1,
563 ACPI_CEDT_TYPE_CXIMS
= 2,
564 ACPI_CEDT_TYPE_RDPAS
= 3,
565 ACPI_CEDT_TYPE_RESERVED
= 4,
568 /* Values for version field above */
570 #define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
571 #define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
573 /* Values for length field above */
575 #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
576 #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
582 /* 0: CXL Host Bridge Structure */
584 typedef struct acpi_cedt_chbs
586 ACPI_CEDT_HEADER Header
;
596 /* 1: CXL Fixed Memory Window Structure */
598 typedef struct acpi_cedt_cfmws
600 ACPI_CEDT_HEADER Header
;
604 UINT8 InterleaveWays
;
605 UINT8 InterleaveArithmetic
;
610 UINT32 InterleaveTargets
[];
614 typedef struct acpi_cedt_cfmws_target_element
616 UINT32 InterleaveTarget
;
618 } ACPI_CEDT_CFMWS_TARGET_ELEMENT
;
620 /* Values for Interleave Arithmetic field above */
622 #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
623 #define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1)
625 /* Values for Restrictions field above */
627 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
628 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
629 #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
630 #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
631 #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
633 /* 2: CXL XOR Interleave Math Structure */
635 struct acpi_cedt_cxims
{
636 ACPI_CEDT_HEADER Header
;
643 /* 3: CXL RCEC Downstream Port Association Structure */
645 struct acpi_cedt_rdpas
{
646 ACPI_CEDT_HEADER Header
;
655 /* Masks for bdf field above */
656 #define ACPI_CEDT_RDPAS_BUS_MASK 0xff00
657 #define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8
658 #define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007
660 #define ACPI_CEDT_RDPAS_PROTOCOL_IO (0)
661 #define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1)
663 /*******************************************************************************
665 * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
668 ******************************************************************************/
670 typedef struct acpi_table_cpep
672 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
680 typedef struct acpi_cpep_polling
682 ACPI_SUBTABLE_HEADER Header
;
683 UINT8 Id
; /* Processor ID */
684 UINT8 Eid
; /* Processor EID */
685 UINT32 Interval
; /* Polling interval (msec) */
690 /*******************************************************************************
692 * CSRT - Core System Resource Table
695 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
697 ******************************************************************************/
699 typedef struct acpi_table_csrt
701 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
706 /* Resource Group subtable */
708 typedef struct acpi_csrt_group
717 UINT32 SharedInfoLength
;
719 /* Shared data immediately follows (Length = SharedInfoLength) */
723 /* Shared Info subtable */
725 typedef struct acpi_csrt_shared_info
732 UINT8 InterruptPolarity
;
735 UINT8 DmaAddressWidth
;
736 UINT16 BaseRequestLine
;
737 UINT16 NumHandshakeSignals
;
740 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
742 } ACPI_CSRT_SHARED_INFO
;
744 /* Resource Descriptor subtable */
746 typedef struct acpi_csrt_descriptor
753 /* Resource-specific information immediately follows */
755 } ACPI_CSRT_DESCRIPTOR
;
760 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
761 #define ACPI_CSRT_TYPE_TIMER 0x0002
762 #define ACPI_CSRT_TYPE_DMA 0x0003
764 /* Resource Subtypes */
766 #define ACPI_CSRT_XRUPT_LINE 0x0000
767 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
768 #define ACPI_CSRT_TIMER 0x0000
769 #define ACPI_CSRT_DMA_CHANNEL 0x0000
770 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
773 /*******************************************************************************
775 * DBG2 - Debug Port Table 2
776 * Version 0 (Both main table and subtables)
778 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020
780 ******************************************************************************/
782 typedef struct acpi_table_dbg2
784 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
791 typedef struct acpi_dbg2_header
799 /* Debug Device Information Subtable */
801 typedef struct acpi_dbg2_device
805 UINT8 RegisterCount
; /* Number of BaseAddress registers */
806 UINT16 NamepathLength
;
807 UINT16 NamepathOffset
;
808 UINT16 OemDataLength
;
809 UINT16 OemDataOffset
;
813 UINT16 BaseAddressOffset
;
814 UINT16 AddressSizeOffset
;
817 * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
818 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
819 * Namepath (required) - Null terminated string. Single dot if not supported.
820 * OemData (optional) - Length is OemDataLength.
824 /* Types for PortType field above */
826 #define ACPI_DBG2_SERIAL_PORT 0x8000
827 #define ACPI_DBG2_1394_PORT 0x8001
828 #define ACPI_DBG2_USB_PORT 0x8002
829 #define ACPI_DBG2_NET_PORT 0x8003
831 /* Subtypes for PortSubtype field above */
833 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
834 #define ACPI_DBG2_16550_SUBSET 0x0001
835 #define ACPI_DBG2_MAX311XE_SPI 0x0002
836 #define ACPI_DBG2_ARM_PL011 0x0003
837 #define ACPI_DBG2_MSM8X60 0x0004
838 #define ACPI_DBG2_16550_NVIDIA 0x0005
839 #define ACPI_DBG2_TI_OMAP 0x0006
840 #define ACPI_DBG2_APM88XXXX 0x0008
841 #define ACPI_DBG2_MSM8974 0x0009
842 #define ACPI_DBG2_SAM5250 0x000A
843 #define ACPI_DBG2_INTEL_USIF 0x000B
844 #define ACPI_DBG2_IMX6 0x000C
845 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
846 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
847 #define ACPI_DBG2_ARM_DCC 0x000F
848 #define ACPI_DBG2_BCM2835 0x0010
849 #define ACPI_DBG2_SDM845_1_8432MHZ 0x0011
850 #define ACPI_DBG2_16550_WITH_GAS 0x0012
851 #define ACPI_DBG2_SDM845_7_372MHZ 0x0013
852 #define ACPI_DBG2_INTEL_LPSS 0x0014
854 #define ACPI_DBG2_1394_STANDARD 0x0000
856 #define ACPI_DBG2_USB_XHCI 0x0000
857 #define ACPI_DBG2_USB_EHCI 0x0001
860 /*******************************************************************************
862 * DBGP - Debug Port table
865 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
867 ******************************************************************************/
869 typedef struct acpi_table_dbgp
871 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
872 UINT8 Type
; /* 0=full 16550, 1=subset of 16550 */
874 ACPI_GENERIC_ADDRESS DebugPort
;
879 /*******************************************************************************
881 * DMAR - DMA Remapping table
884 * Conforms to "Intel Virtualization Technology for Directed I/O",
885 * Version 2.3, October 2014
887 ******************************************************************************/
889 typedef struct acpi_table_dmar
891 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
892 UINT8 Width
; /* Host Address Width */
898 /* Masks for Flags field above */
900 #define ACPI_DMAR_INTR_REMAP (1)
901 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
902 #define ACPI_DMAR_X2APIC_MODE (1<<2)
905 /* DMAR subtable header */
907 typedef struct acpi_dmar_header
914 /* Values for subtable type in ACPI_DMAR_HEADER */
918 ACPI_DMAR_TYPE_HARDWARE_UNIT
= 0,
919 ACPI_DMAR_TYPE_RESERVED_MEMORY
= 1,
920 ACPI_DMAR_TYPE_ROOT_ATS
= 2,
921 ACPI_DMAR_TYPE_HARDWARE_AFFINITY
= 3,
922 ACPI_DMAR_TYPE_NAMESPACE
= 4,
923 ACPI_DMAR_TYPE_SATC
= 5,
924 ACPI_DMAR_TYPE_RESERVED
= 6 /* 6 and greater are reserved */
928 /* DMAR Device Scope structure */
930 typedef struct acpi_dmar_device_scope
938 } ACPI_DMAR_DEVICE_SCOPE
;
940 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
942 enum AcpiDmarScopeType
944 ACPI_DMAR_SCOPE_TYPE_NOT_USED
= 0,
945 ACPI_DMAR_SCOPE_TYPE_ENDPOINT
= 1,
946 ACPI_DMAR_SCOPE_TYPE_BRIDGE
= 2,
947 ACPI_DMAR_SCOPE_TYPE_IOAPIC
= 3,
948 ACPI_DMAR_SCOPE_TYPE_HPET
= 4,
949 ACPI_DMAR_SCOPE_TYPE_NAMESPACE
= 5,
950 ACPI_DMAR_SCOPE_TYPE_RESERVED
= 6 /* 6 and greater are reserved */
953 typedef struct acpi_dmar_pci_path
958 } ACPI_DMAR_PCI_PATH
;
962 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
965 /* 0: Hardware Unit Definition */
967 typedef struct acpi_dmar_hardware_unit
969 ACPI_DMAR_HEADER Header
;
973 UINT64 Address
; /* Register Base Address */
975 } ACPI_DMAR_HARDWARE_UNIT
;
977 /* Masks for Flags field above */
979 #define ACPI_DMAR_INCLUDE_ALL (1)
982 /* 1: Reserved Memory Definition */
984 typedef struct acpi_dmar_reserved_memory
986 ACPI_DMAR_HEADER Header
;
989 UINT64 BaseAddress
; /* 4K aligned base address */
990 UINT64 EndAddress
; /* 4K aligned limit address */
992 } ACPI_DMAR_RESERVED_MEMORY
;
994 /* Masks for Flags field above */
996 #define ACPI_DMAR_ALLOW_ALL (1)
999 /* 2: Root Port ATS Capability Reporting Structure */
1001 typedef struct acpi_dmar_atsr
1003 ACPI_DMAR_HEADER Header
;
1010 /* Masks for Flags field above */
1012 #define ACPI_DMAR_ALL_PORTS (1)
1015 /* 3: Remapping Hardware Static Affinity Structure */
1017 typedef struct acpi_dmar_rhsa
1019 ACPI_DMAR_HEADER Header
;
1022 UINT32 ProximityDomain
;
1027 /* 4: ACPI Namespace Device Declaration Structure */
1029 typedef struct acpi_dmar_andd
1031 ACPI_DMAR_HEADER Header
;
1039 /* 5: SoC Integrated Address Translation Cache (SATC) */
1041 typedef struct acpi_dmar_satc
1043 ACPI_DMAR_HEADER Header
;
1051 /*******************************************************************************
1053 * DRTM - Dynamic Root of Trust for Measurement table
1054 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
1057 ******************************************************************************/
1059 typedef struct acpi_table_drtm
1061 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1062 UINT64 EntryBaseAddress
;
1064 UINT32 EntryAddress32
;
1065 UINT64 EntryAddress64
;
1067 UINT64 LogAreaAddress
;
1068 UINT32 LogAreaLength
;
1069 UINT64 ArchDependentAddress
;
1074 /* Flag Definitions for above */
1076 #define ACPI_DRTM_ACCESS_ALLOWED (1)
1077 #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
1078 #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
1079 #define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
1082 /* 1) Validated Tables List (64-bit addresses) */
1084 typedef struct acpi_drtm_vtable_list
1086 UINT32 ValidatedTableCount
;
1087 UINT64 ValidatedTables
[1];
1089 } ACPI_DRTM_VTABLE_LIST
;
1091 /* 2) Resources List (of Resource Descriptors) */
1093 /* Resource Descriptor */
1095 typedef struct acpi_drtm_resource
1101 } ACPI_DRTM_RESOURCE
;
1103 typedef struct acpi_drtm_resource_list
1105 UINT32 ResourceCount
;
1106 ACPI_DRTM_RESOURCE Resources
[1];
1108 } ACPI_DRTM_RESOURCE_LIST
;
1110 /* 3) Platform-specific Identifiers List */
1112 typedef struct acpi_drtm_dps_id
1120 /*******************************************************************************
1122 * ECDT - Embedded Controller Boot Resources Table
1125 ******************************************************************************/
1127 typedef struct acpi_table_ecdt
1129 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1130 ACPI_GENERIC_ADDRESS Control
; /* Address of EC command/status register */
1131 ACPI_GENERIC_ADDRESS Data
; /* Address of EC data register */
1132 UINT32 Uid
; /* Unique ID - must be same as the EC _UID method */
1133 UINT8 Gpe
; /* The GPE for the EC */
1134 UINT8 Id
[1]; /* Full namepath of the EC in the ACPI namespace */
1139 /*******************************************************************************
1141 * EINJ - Error Injection Table (ACPI 4.0)
1144 ******************************************************************************/
1146 typedef struct acpi_table_einj
1148 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1149 UINT32 HeaderLength
;
1157 /* EINJ Injection Instruction Entries (actions) */
1159 typedef struct acpi_einj_entry
1161 ACPI_WHEA_HEADER WheaHeader
; /* Common header for WHEA tables */
1165 /* Masks for Flags field above */
1167 #define ACPI_EINJ_PRESERVE (1)
1169 /* Values for Action field above */
1171 enum AcpiEinjActions
1173 ACPI_EINJ_BEGIN_OPERATION
= 0,
1174 ACPI_EINJ_GET_TRIGGER_TABLE
= 1,
1175 ACPI_EINJ_SET_ERROR_TYPE
= 2,
1176 ACPI_EINJ_GET_ERROR_TYPE
= 3,
1177 ACPI_EINJ_END_OPERATION
= 4,
1178 ACPI_EINJ_EXECUTE_OPERATION
= 5,
1179 ACPI_EINJ_CHECK_BUSY_STATUS
= 6,
1180 ACPI_EINJ_GET_COMMAND_STATUS
= 7,
1181 ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS
= 8,
1182 ACPI_EINJ_GET_EXECUTE_TIMINGS
= 9,
1183 ACPI_EINJ_ACTION_RESERVED
= 10, /* 10 and greater are reserved */
1184 ACPI_EINJ_TRIGGER_ERROR
= 0xFF /* Except for this value */
1187 /* Values for Instruction field above */
1189 enum AcpiEinjInstructions
1191 ACPI_EINJ_READ_REGISTER
= 0,
1192 ACPI_EINJ_READ_REGISTER_VALUE
= 1,
1193 ACPI_EINJ_WRITE_REGISTER
= 2,
1194 ACPI_EINJ_WRITE_REGISTER_VALUE
= 3,
1196 ACPI_EINJ_FLUSH_CACHELINE
= 5,
1197 ACPI_EINJ_INSTRUCTION_RESERVED
= 6 /* 6 and greater are reserved */
1200 typedef struct acpi_einj_error_type_with_addr
1203 UINT32 VendorStructOffset
;
1210 } ACPI_EINJ_ERROR_TYPE_WITH_ADDR
;
1212 typedef struct acpi_einj_vendor
1224 /* EINJ Trigger Error Action Table */
1226 typedef struct acpi_einj_trigger
1233 } ACPI_EINJ_TRIGGER
;
1235 /* Command status return values */
1237 enum AcpiEinjCommandStatus
1239 ACPI_EINJ_SUCCESS
= 0,
1240 ACPI_EINJ_FAILURE
= 1,
1241 ACPI_EINJ_INVALID_ACCESS
= 2,
1242 ACPI_EINJ_STATUS_RESERVED
= 3 /* 3 and greater are reserved */
1246 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
1248 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
1249 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
1250 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
1251 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
1252 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
1253 #define ACPI_EINJ_MEMORY_FATAL (1<<5)
1254 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
1255 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
1256 #define ACPI_EINJ_PCIX_FATAL (1<<8)
1257 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
1258 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
1259 #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
1260 #define ACPI_EINJ_VENDOR_DEFINED (1<<31)
1263 /*******************************************************************************
1265 * ERST - Error Record Serialization Table (ACPI 4.0)
1268 ******************************************************************************/
1270 typedef struct acpi_table_erst
1272 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1273 UINT32 HeaderLength
;
1280 /* ERST Serialization Entries (actions) */
1282 typedef struct acpi_erst_entry
1284 ACPI_WHEA_HEADER WheaHeader
; /* Common header for WHEA tables */
1288 /* Masks for Flags field above */
1290 #define ACPI_ERST_PRESERVE (1)
1292 /* Values for Action field above */
1294 enum AcpiErstActions
1296 ACPI_ERST_BEGIN_WRITE
= 0,
1297 ACPI_ERST_BEGIN_READ
= 1,
1298 ACPI_ERST_BEGIN_CLEAR
= 2,
1300 ACPI_ERST_SET_RECORD_OFFSET
= 4,
1301 ACPI_ERST_EXECUTE_OPERATION
= 5,
1302 ACPI_ERST_CHECK_BUSY_STATUS
= 6,
1303 ACPI_ERST_GET_COMMAND_STATUS
= 7,
1304 ACPI_ERST_GET_RECORD_ID
= 8,
1305 ACPI_ERST_SET_RECORD_ID
= 9,
1306 ACPI_ERST_GET_RECORD_COUNT
= 10,
1307 ACPI_ERST_BEGIN_DUMMY_WRIITE
= 11,
1308 ACPI_ERST_NOT_USED
= 12,
1309 ACPI_ERST_GET_ERROR_RANGE
= 13,
1310 ACPI_ERST_GET_ERROR_LENGTH
= 14,
1311 ACPI_ERST_GET_ERROR_ATTRIBUTES
= 15,
1312 ACPI_ERST_EXECUTE_TIMINGS
= 16,
1313 ACPI_ERST_ACTION_RESERVED
= 17 /* 17 and greater are reserved */
1316 /* Values for Instruction field above */
1318 enum AcpiErstInstructions
1320 ACPI_ERST_READ_REGISTER
= 0,
1321 ACPI_ERST_READ_REGISTER_VALUE
= 1,
1322 ACPI_ERST_WRITE_REGISTER
= 2,
1323 ACPI_ERST_WRITE_REGISTER_VALUE
= 3,
1325 ACPI_ERST_LOAD_VAR1
= 5,
1326 ACPI_ERST_LOAD_VAR2
= 6,
1327 ACPI_ERST_STORE_VAR1
= 7,
1329 ACPI_ERST_SUBTRACT
= 9,
1330 ACPI_ERST_ADD_VALUE
= 10,
1331 ACPI_ERST_SUBTRACT_VALUE
= 11,
1332 ACPI_ERST_STALL
= 12,
1333 ACPI_ERST_STALL_WHILE_TRUE
= 13,
1334 ACPI_ERST_SKIP_NEXT_IF_TRUE
= 14,
1335 ACPI_ERST_GOTO
= 15,
1336 ACPI_ERST_SET_SRC_ADDRESS_BASE
= 16,
1337 ACPI_ERST_SET_DST_ADDRESS_BASE
= 17,
1338 ACPI_ERST_MOVE_DATA
= 18,
1339 ACPI_ERST_INSTRUCTION_RESERVED
= 19 /* 19 and greater are reserved */
1342 /* Command status return values */
1344 enum AcpiErstCommandStatus
1346 ACPI_ERST_SUCCESS
= 0,
1347 ACPI_ERST_NO_SPACE
= 1,
1348 ACPI_ERST_NOT_AVAILABLE
= 2,
1349 ACPI_ERST_FAILURE
= 3,
1350 ACPI_ERST_RECORD_EMPTY
= 4,
1351 ACPI_ERST_NOT_FOUND
= 5,
1352 ACPI_ERST_STATUS_RESERVED
= 6 /* 6 and greater are reserved */
1356 /* Error Record Serialization Information */
1358 typedef struct acpi_erst_info
1360 UINT16 Signature
; /* Should be "ER" */
1366 /*******************************************************************************
1368 * FPDT - Firmware Performance Data Table (ACPI 5.0)
1371 ******************************************************************************/
1373 typedef struct acpi_table_fpdt
1375 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1380 /* FPDT subtable header (Performance Record Structure) */
1382 typedef struct acpi_fpdt_header
1390 /* Values for Type field above */
1394 ACPI_FPDT_TYPE_BOOT
= 0,
1395 ACPI_FPDT_TYPE_S3PERF
= 1
1403 /* 0: Firmware Basic Boot Performance Record */
1405 typedef struct acpi_fpdt_boot_pointer
1407 ACPI_FPDT_HEADER Header
;
1411 } ACPI_FPDT_BOOT_POINTER
;
1414 /* 1: S3 Performance Table Pointer Record */
1416 typedef struct acpi_fpdt_s3pt_pointer
1418 ACPI_FPDT_HEADER Header
;
1422 } ACPI_FPDT_S3PT_POINTER
;
1426 * S3PT - S3 Performance Table. This table is pointed to by the
1427 * S3 Pointer Record above.
1429 typedef struct acpi_table_s3pt
1431 UINT8 Signature
[4]; /* "S3PT" */
1438 * S3PT Subtables (Not part of the actual FPDT)
1441 /* Values for Type field in S3PT header */
1445 ACPI_S3PT_TYPE_RESUME
= 0,
1446 ACPI_S3PT_TYPE_SUSPEND
= 1,
1447 ACPI_FPDT_BOOT_PERFORMANCE
= 2
1450 typedef struct acpi_s3pt_resume
1452 ACPI_FPDT_HEADER Header
;
1455 UINT64 AverageResume
;
1459 typedef struct acpi_s3pt_suspend
1461 ACPI_FPDT_HEADER Header
;
1462 UINT64 SuspendStart
;
1465 } ACPI_S3PT_SUSPEND
;
1469 * FPDT Boot Performance Record (Not part of the actual FPDT)
1471 typedef struct acpi_fpdt_boot
1473 ACPI_FPDT_HEADER Header
;
1477 UINT64 StartupStart
;
1478 UINT64 ExitServicesEntry
;
1479 UINT64 ExitServicesExit
;
1484 /*******************************************************************************
1486 * GTDT - Generic Timer Description Table (ACPI 5.1)
1489 ******************************************************************************/
1491 typedef struct acpi_table_gtdt
1493 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1494 UINT64 CounterBlockAddresss
;
1496 UINT32 SecureEl1Interrupt
;
1497 UINT32 SecureEl1Flags
;
1498 UINT32 NonSecureEl1Interrupt
;
1499 UINT32 NonSecureEl1Flags
;
1500 UINT32 VirtualTimerInterrupt
;
1501 UINT32 VirtualTimerFlags
;
1502 UINT32 NonSecureEl2Interrupt
;
1503 UINT32 NonSecureEl2Flags
;
1504 UINT64 CounterReadBlockAddress
;
1505 UINT32 PlatformTimerCount
;
1506 UINT32 PlatformTimerOffset
;
1510 /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
1512 #define ACPI_GTDT_INTERRUPT_MODE (1)
1513 #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
1514 #define ACPI_GTDT_ALWAYS_ON (1<<2)
1516 typedef struct acpi_gtdt_el2
1518 UINT32 VirtualEL2TimerGsiv
;
1519 UINT32 VirtualEL2TimerFlags
;
1523 /* Common GTDT subtable header */
1525 typedef struct acpi_gtdt_header
1532 /* Values for GTDT subtable type above */
1536 ACPI_GTDT_TYPE_TIMER_BLOCK
= 0,
1537 ACPI_GTDT_TYPE_WATCHDOG
= 1,
1538 ACPI_GTDT_TYPE_RESERVED
= 2 /* 2 and greater are reserved */
1542 /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
1544 /* 0: Generic Timer Block */
1546 typedef struct acpi_gtdt_timer_block
1548 ACPI_GTDT_HEADER Header
;
1550 UINT64 BlockAddress
;
1554 } ACPI_GTDT_TIMER_BLOCK
;
1556 /* Timer Sub-Structure, one per timer */
1558 typedef struct acpi_gtdt_timer_entry
1563 UINT64 El0BaseAddress
;
1564 UINT32 TimerInterrupt
;
1566 UINT32 VirtualTimerInterrupt
;
1567 UINT32 VirtualTimerFlags
;
1570 } ACPI_GTDT_TIMER_ENTRY
;
1572 /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
1574 #define ACPI_GTDT_GT_IRQ_MODE (1)
1575 #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
1577 /* Flag Definitions: CommonFlags above */
1579 #define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
1580 #define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
1583 /* 1: SBSA Generic Watchdog Structure */
1585 typedef struct acpi_gtdt_watchdog
1587 ACPI_GTDT_HEADER Header
;
1589 UINT64 RefreshFrameAddress
;
1590 UINT64 ControlFrameAddress
;
1591 UINT32 TimerInterrupt
;
1594 } ACPI_GTDT_WATCHDOG
;
1596 /* Flag Definitions: TimerFlags above */
1598 #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
1599 #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
1600 #define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
1603 /*******************************************************************************
1605 * HEST - Hardware Error Source Table (ACPI 4.0)
1608 ******************************************************************************/
1610 typedef struct acpi_table_hest
1612 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1613 UINT32 ErrorSourceCount
;
1618 /* HEST subtable header */
1620 typedef struct acpi_hest_header
1628 /* Values for Type field above for subtables */
1632 ACPI_HEST_TYPE_IA32_CHECK
= 0,
1633 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK
= 1,
1634 ACPI_HEST_TYPE_IA32_NMI
= 2,
1635 ACPI_HEST_TYPE_NOT_USED3
= 3,
1636 ACPI_HEST_TYPE_NOT_USED4
= 4,
1637 ACPI_HEST_TYPE_NOT_USED5
= 5,
1638 ACPI_HEST_TYPE_AER_ROOT_PORT
= 6,
1639 ACPI_HEST_TYPE_AER_ENDPOINT
= 7,
1640 ACPI_HEST_TYPE_AER_BRIDGE
= 8,
1641 ACPI_HEST_TYPE_GENERIC_ERROR
= 9,
1642 ACPI_HEST_TYPE_GENERIC_ERROR_V2
= 10,
1643 ACPI_HEST_TYPE_IA32_DEFERRED_CHECK
= 11,
1644 ACPI_HEST_TYPE_RESERVED
= 12 /* 12 and greater are reserved */
1649 * HEST substructures contained in subtables
1653 * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
1654 * ACPI_HEST_IA_CORRECTED structures.
1656 typedef struct acpi_hest_ia_error_bank
1659 UINT8 ClearStatusOnInit
;
1662 UINT32 ControlRegister
;
1664 UINT32 StatusRegister
;
1665 UINT32 AddressRegister
;
1666 UINT32 MiscRegister
;
1668 } ACPI_HEST_IA_ERROR_BANK
;
1671 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
1673 typedef struct acpi_hest_aer_common
1678 UINT32 RecordsToPreallocate
;
1679 UINT32 MaxSectionsPerRecord
;
1680 UINT32 Bus
; /* Bus and Segment numbers */
1683 UINT16 DeviceControl
;
1685 UINT32 UncorrectableMask
;
1686 UINT32 UncorrectableSeverity
;
1687 UINT32 CorrectableMask
;
1688 UINT32 AdvancedCapabilities
;
1690 } ACPI_HEST_AER_COMMON
;
1692 /* Masks for HEST Flags fields */
1694 #define ACPI_HEST_FIRMWARE_FIRST (1)
1695 #define ACPI_HEST_GLOBAL (1<<1)
1696 #define ACPI_HEST_GHES_ASSIST (1<<2)
1699 * Macros to access the bus/segment numbers in Bus field above:
1700 * Bus number is encoded in bits 7:0
1701 * Segment number is encoded in bits 23:8
1703 #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
1704 #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
1707 /* Hardware Error Notification */
1709 typedef struct acpi_hest_notify
1713 UINT16 ConfigWriteEnable
;
1714 UINT32 PollInterval
;
1716 UINT32 PollingThresholdValue
;
1717 UINT32 PollingThresholdWindow
;
1718 UINT32 ErrorThresholdValue
;
1719 UINT32 ErrorThresholdWindow
;
1723 /* Values for Notify Type field above */
1725 enum AcpiHestNotifyTypes
1727 ACPI_HEST_NOTIFY_POLLED
= 0,
1728 ACPI_HEST_NOTIFY_EXTERNAL
= 1,
1729 ACPI_HEST_NOTIFY_LOCAL
= 2,
1730 ACPI_HEST_NOTIFY_SCI
= 3,
1731 ACPI_HEST_NOTIFY_NMI
= 4,
1732 ACPI_HEST_NOTIFY_CMCI
= 5, /* ACPI 5.0 */
1733 ACPI_HEST_NOTIFY_MCE
= 6, /* ACPI 5.0 */
1734 ACPI_HEST_NOTIFY_GPIO
= 7, /* ACPI 6.0 */
1735 ACPI_HEST_NOTIFY_SEA
= 8, /* ACPI 6.1 */
1736 ACPI_HEST_NOTIFY_SEI
= 9, /* ACPI 6.1 */
1737 ACPI_HEST_NOTIFY_GSIV
= 10, /* ACPI 6.1 */
1738 ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED
= 11, /* ACPI 6.2 */
1739 ACPI_HEST_NOTIFY_RESERVED
= 12 /* 12 and greater are reserved */
1742 /* Values for ConfigWriteEnable bitfield above */
1744 #define ACPI_HEST_TYPE (1)
1745 #define ACPI_HEST_POLL_INTERVAL (1<<1)
1746 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
1747 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
1748 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
1749 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
1756 /* 0: IA32 Machine Check Exception */
1758 typedef struct acpi_hest_ia_machine_check
1760 ACPI_HEST_HEADER Header
;
1762 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1764 UINT32 RecordsToPreallocate
;
1765 UINT32 MaxSectionsPerRecord
;
1766 UINT64 GlobalCapabilityData
;
1767 UINT64 GlobalControlData
;
1768 UINT8 NumHardwareBanks
;
1771 } ACPI_HEST_IA_MACHINE_CHECK
;
1774 /* 1: IA32 Corrected Machine Check */
1776 typedef struct acpi_hest_ia_corrected
1778 ACPI_HEST_HEADER Header
;
1780 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1782 UINT32 RecordsToPreallocate
;
1783 UINT32 MaxSectionsPerRecord
;
1784 ACPI_HEST_NOTIFY Notify
;
1785 UINT8 NumHardwareBanks
;
1788 } ACPI_HEST_IA_CORRECTED
;
1791 /* 2: IA32 Non-Maskable Interrupt */
1793 typedef struct acpi_hest_ia_nmi
1795 ACPI_HEST_HEADER Header
;
1797 UINT32 RecordsToPreallocate
;
1798 UINT32 MaxSectionsPerRecord
;
1799 UINT32 MaxRawDataLength
;
1804 /* 3,4,5: Not used */
1806 /* 6: PCI Express Root Port AER */
1808 typedef struct acpi_hest_aer_root
1810 ACPI_HEST_HEADER Header
;
1811 ACPI_HEST_AER_COMMON Aer
;
1812 UINT32 RootErrorCommand
;
1814 } ACPI_HEST_AER_ROOT
;
1817 /* 7: PCI Express AER (AER Endpoint) */
1819 typedef struct acpi_hest_aer
1821 ACPI_HEST_HEADER Header
;
1822 ACPI_HEST_AER_COMMON Aer
;
1827 /* 8: PCI Express/PCI-X Bridge AER */
1829 typedef struct acpi_hest_aer_bridge
1831 ACPI_HEST_HEADER Header
;
1832 ACPI_HEST_AER_COMMON Aer
;
1833 UINT32 UncorrectableMask2
;
1834 UINT32 UncorrectableSeverity2
;
1835 UINT32 AdvancedCapabilities2
;
1837 } ACPI_HEST_AER_BRIDGE
;
1840 /* 9: Generic Hardware Error Source */
1842 typedef struct acpi_hest_generic
1844 ACPI_HEST_HEADER Header
;
1845 UINT16 RelatedSourceId
;
1848 UINT32 RecordsToPreallocate
;
1849 UINT32 MaxSectionsPerRecord
;
1850 UINT32 MaxRawDataLength
;
1851 ACPI_GENERIC_ADDRESS ErrorStatusAddress
;
1852 ACPI_HEST_NOTIFY Notify
;
1853 UINT32 ErrorBlockLength
;
1855 } ACPI_HEST_GENERIC
;
1858 /* 10: Generic Hardware Error Source, version 2 */
1860 typedef struct acpi_hest_generic_v2
1862 ACPI_HEST_HEADER Header
;
1863 UINT16 RelatedSourceId
;
1866 UINT32 RecordsToPreallocate
;
1867 UINT32 MaxSectionsPerRecord
;
1868 UINT32 MaxRawDataLength
;
1869 ACPI_GENERIC_ADDRESS ErrorStatusAddress
;
1870 ACPI_HEST_NOTIFY Notify
;
1871 UINT32 ErrorBlockLength
;
1872 ACPI_GENERIC_ADDRESS ReadAckRegister
;
1873 UINT64 ReadAckPreserve
;
1874 UINT64 ReadAckWrite
;
1876 } ACPI_HEST_GENERIC_V2
;
1879 /* Generic Error Status block */
1881 typedef struct acpi_hest_generic_status
1884 UINT32 RawDataOffset
;
1885 UINT32 RawDataLength
;
1887 UINT32 ErrorSeverity
;
1889 } ACPI_HEST_GENERIC_STATUS
;
1891 /* Values for BlockStatus flags above */
1893 #define ACPI_HEST_UNCORRECTABLE (1)
1894 #define ACPI_HEST_CORRECTABLE (1<<1)
1895 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
1896 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
1897 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
1900 /* Generic Error Data entry */
1902 typedef struct acpi_hest_generic_data
1904 UINT8 SectionType
[16];
1905 UINT32 ErrorSeverity
;
1907 UINT8 ValidationBits
;
1909 UINT32 ErrorDataLength
;
1913 } ACPI_HEST_GENERIC_DATA
;
1915 /* Extension for revision 0x0300 */
1917 typedef struct acpi_hest_generic_data_v300
1919 UINT8 SectionType
[16];
1920 UINT32 ErrorSeverity
;
1922 UINT8 ValidationBits
;
1924 UINT32 ErrorDataLength
;
1929 } ACPI_HEST_GENERIC_DATA_V300
;
1931 /* Values for ErrorSeverity above */
1933 #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
1934 #define ACPI_HEST_GEN_ERROR_FATAL 1
1935 #define ACPI_HEST_GEN_ERROR_CORRECTED 2
1936 #define ACPI_HEST_GEN_ERROR_NONE 3
1938 /* Flags for ValidationBits above */
1940 #define ACPI_HEST_GEN_VALID_FRU_ID (1)
1941 #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
1942 #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
1945 /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
1947 typedef struct acpi_hest_ia_deferred_check
1949 ACPI_HEST_HEADER Header
;
1951 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1953 UINT32 RecordsToPreallocate
;
1954 UINT32 MaxSectionsPerRecord
;
1955 ACPI_HEST_NOTIFY Notify
;
1956 UINT8 NumHardwareBanks
;
1959 } ACPI_HEST_IA_DEFERRED_CHECK
;
1962 /*******************************************************************************
1964 * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
1966 ******************************************************************************/
1968 typedef struct acpi_table_hmat
1970 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1976 /* Values for HMAT structure types */
1980 ACPI_HMAT_TYPE_ADDRESS_RANGE
= 0, /* Memory subsystem address range */
1981 ACPI_HMAT_TYPE_LOCALITY
= 1, /* System locality latency and bandwidth information */
1982 ACPI_HMAT_TYPE_CACHE
= 2, /* Memory side cache information */
1983 ACPI_HMAT_TYPE_RESERVED
= 3 /* 3 and greater are reserved */
1986 typedef struct acpi_hmat_structure
1992 } ACPI_HMAT_STRUCTURE
;
1996 * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
1999 /* 0: Memory proximity domain attributes */
2001 typedef struct acpi_hmat_proximity_domain
2003 ACPI_HMAT_STRUCTURE Header
;
2006 UINT32 InitiatorPD
; /* Attached Initiator proximity domain */
2007 UINT32 MemoryPD
; /* Memory proximity domain */
2012 } ACPI_HMAT_PROXIMITY_DOMAIN
;
2014 /* Masks for Flags field above */
2016 #define ACPI_HMAT_INITIATOR_PD_VALID (1) /* 1: InitiatorPD field is valid */
2019 /* 1: System locality latency and bandwidth information */
2021 typedef struct acpi_hmat_locality
2023 ACPI_HMAT_STRUCTURE Header
;
2026 UINT8 MinTransferSize
;
2028 UINT32 NumberOfInitiatorPDs
;
2029 UINT32 NumberOfTargetPDs
;
2031 UINT64 EntryBaseUnit
;
2033 } ACPI_HMAT_LOCALITY
;
2035 /* Masks for Flags field above */
2037 #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */
2039 /* Values for Memory Hierarchy flags */
2041 #define ACPI_HMAT_MEMORY 0
2042 #define ACPI_HMAT_1ST_LEVEL_CACHE 1
2043 #define ACPI_HMAT_2ND_LEVEL_CACHE 2
2044 #define ACPI_HMAT_3RD_LEVEL_CACHE 3
2045 #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */
2046 #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */
2049 /* Values for DataType field above */
2051 #define ACPI_HMAT_ACCESS_LATENCY 0
2052 #define ACPI_HMAT_READ_LATENCY 1
2053 #define ACPI_HMAT_WRITE_LATENCY 2
2054 #define ACPI_HMAT_ACCESS_BANDWIDTH 3
2055 #define ACPI_HMAT_READ_BANDWIDTH 4
2056 #define ACPI_HMAT_WRITE_BANDWIDTH 5
2059 /* 2: Memory side cache information */
2061 typedef struct acpi_hmat_cache
2063 ACPI_HMAT_STRUCTURE Header
;
2067 UINT32 CacheAttributes
;
2069 UINT16 NumberOfSMBIOSHandles
;
2073 /* Masks for CacheAttributes field above */
2075 #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
2076 #define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
2077 #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
2078 #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
2079 #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
2081 /* Values for cache associativity flag */
2083 #define ACPI_HMAT_CA_NONE (0)
2084 #define ACPI_HMAT_CA_DIRECT_MAPPED (1)
2085 #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
2087 /* Values for write policy flag */
2089 #define ACPI_HMAT_CP_NONE (0)
2090 #define ACPI_HMAT_CP_WB (1)
2091 #define ACPI_HMAT_CP_WT (2)
2094 /*******************************************************************************
2096 * HPET - High Precision Event Timer table
2099 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
2100 * Version 1.0a, October 2004
2102 ******************************************************************************/
2104 typedef struct acpi_table_hpet
2106 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
2107 UINT32 Id
; /* Hardware ID of event timer block */
2108 ACPI_GENERIC_ADDRESS Address
; /* Address of event timer block */
2109 UINT8 Sequence
; /* HPET sequence number */
2110 UINT16 MinimumTick
; /* Main counter min tick, periodic mode */
2115 /* Masks for Flags field above */
2117 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
2119 /* Values for Page Protect flags */
2121 enum AcpiHpetPageProtect
2123 ACPI_HPET_NO_PAGE_PROTECT
= 0,
2124 ACPI_HPET_PAGE_PROTECT4
= 1,
2125 ACPI_HPET_PAGE_PROTECT64
= 2
2129 /*******************************************************************************
2131 * IBFT - Boot Firmware Table
2134 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
2135 * Specification", Version 1.01, March 1, 2007
2137 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
2138 * Therefore, it is not currently supported by the disassembler.
2140 ******************************************************************************/
2142 typedef struct acpi_table_ibft
2144 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
2150 /* IBFT common subtable header */
2152 typedef struct acpi_ibft_header
2162 /* Values for Type field above */
2166 ACPI_IBFT_TYPE_NOT_USED
= 0,
2167 ACPI_IBFT_TYPE_CONTROL
= 1,
2168 ACPI_IBFT_TYPE_INITIATOR
= 2,
2169 ACPI_IBFT_TYPE_NIC
= 3,
2170 ACPI_IBFT_TYPE_TARGET
= 4,
2171 ACPI_IBFT_TYPE_EXTENSIONS
= 5,
2172 ACPI_IBFT_TYPE_RESERVED
= 6 /* 6 and greater are reserved */
2176 /* IBFT subtables */
2178 typedef struct acpi_ibft_control
2180 ACPI_IBFT_HEADER Header
;
2182 UINT16 InitiatorOffset
;
2184 UINT16 Target0Offset
;
2186 UINT16 Target1Offset
;
2188 } ACPI_IBFT_CONTROL
;
2190 typedef struct acpi_ibft_initiator
2192 ACPI_IBFT_HEADER Header
;
2193 UINT8 SnsServer
[16];
2194 UINT8 SlpServer
[16];
2195 UINT8 PrimaryServer
[16];
2196 UINT8 SecondaryServer
[16];
2200 } ACPI_IBFT_INITIATOR
;
2202 typedef struct acpi_ibft_nic
2204 ACPI_IBFT_HEADER Header
;
2205 UINT8 IpAddress
[16];
2206 UINT8 SubnetMaskPrefix
;
2209 UINT8 PrimaryDns
[16];
2210 UINT8 SecondaryDns
[16];
2213 UINT8 MacAddress
[6];
2220 typedef struct acpi_ibft_target
2222 ACPI_IBFT_HEADER Header
;
2223 UINT8 TargetIpAddress
[16];
2224 UINT16 TargetIpSocket
;
2225 UINT8 TargetBootLun
[8];
2227 UINT8 NicAssociation
;
2228 UINT16 TargetNameLength
;
2229 UINT16 TargetNameOffset
;
2230 UINT16 ChapNameLength
;
2231 UINT16 ChapNameOffset
;
2232 UINT16 ChapSecretLength
;
2233 UINT16 ChapSecretOffset
;
2234 UINT16 ReverseChapNameLength
;
2235 UINT16 ReverseChapNameOffset
;
2236 UINT16 ReverseChapSecretLength
;
2237 UINT16 ReverseChapSecretOffset
;
2242 /* Reset to default packing */
2246 #endif /* __ACTBL1_H__ */