1 /******************************************************************************
3 * Name: actbl1.h - Additional ACPI table definitions
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2019, 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 MERCHANTIBILITY 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_ASF "ASF!" /* Alert Standard Format table */
64 #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
65 #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
66 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
67 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
68 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
69 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
70 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
71 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
72 #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
73 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
74 #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
75 #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
76 #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
77 #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
78 #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
79 #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
80 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
81 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
83 #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
84 #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
87 /* Reserved table signatures */
89 #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
90 #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
93 * These tables have been seen in the field, but no definition has been found
95 #ifdef ACPI_UNDEFINED_TABLES
96 #define ACPI_SIG_ATKG "ATKG"
97 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
98 #define ACPI_SIG_IEIT "IEIT"
102 * All tables must be byte-packed to match the ACPI specification, since
103 * the tables are provided by the system BIOS.
108 * Note: C bitfields are not used for this reason:
110 * "Bitfields are great and easy to read, but unfortunately the C language
111 * does not specify the layout of bitfields in memory, which means they are
112 * essentially useless for dealing with packed data in on-disk formats or
113 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
114 * this decision was a design error in C. Ritchie could have picked an order
115 * and stuck with it." Norman Ramsey.
116 * See http://stackoverflow.com/a/1053662/41661
120 /*******************************************************************************
122 * Common subtable headers
124 ******************************************************************************/
126 /* Generic subtable header (used in MADT, SRAT, etc.) */
128 typedef struct acpi_subtable_header
133 } ACPI_SUBTABLE_HEADER
;
136 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
138 typedef struct acpi_whea_header
144 ACPI_GENERIC_ADDRESS RegisterRegion
;
145 UINT64 Value
; /* Value used with Read/Write register */
146 UINT64 Mask
; /* Bitmask required for this register instruction */
151 /*******************************************************************************
153 * ASF - Alert Standard Format table (Signature "ASF!")
156 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
158 ******************************************************************************/
160 typedef struct acpi_table_asf
162 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
167 /* ASF subtable header */
169 typedef struct acpi_asf_header
178 /* Values for Type field above */
182 ACPI_ASF_TYPE_INFO
= 0,
183 ACPI_ASF_TYPE_ALERT
= 1,
184 ACPI_ASF_TYPE_CONTROL
= 2,
185 ACPI_ASF_TYPE_BOOT
= 3,
186 ACPI_ASF_TYPE_ADDRESS
= 4,
187 ACPI_ASF_TYPE_RESERVED
= 5
194 /* 0: ASF Information */
196 typedef struct acpi_asf_info
198 ACPI_ASF_HEADER Header
;
200 UINT8 MinPollInterval
;
208 /* Masks for Flags field above */
210 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
215 typedef struct acpi_asf_alert
217 ACPI_ASF_HEADER Header
;
225 typedef struct acpi_asf_alert_data
240 } ACPI_ASF_ALERT_DATA
;
243 /* 2: ASF Remote Control */
245 typedef struct acpi_asf_remote
247 ACPI_ASF_HEADER Header
;
254 typedef struct acpi_asf_control_data
261 } ACPI_ASF_CONTROL_DATA
;
264 /* 3: ASF RMCP Boot Options */
266 typedef struct acpi_asf_rmcp
268 ACPI_ASF_HEADER Header
;
269 UINT8 Capabilities
[7];
270 UINT8 CompletionCode
;
275 UINT16 OemParameters
;
282 typedef struct acpi_asf_address
284 ACPI_ASF_HEADER Header
;
291 /*******************************************************************************
293 * BERT - Boot Error Record Table (ACPI 4.0)
296 ******************************************************************************/
298 typedef struct acpi_table_bert
300 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
301 UINT32 RegionLength
; /* Length of the boot error region */
302 UINT64 Address
; /* Physical address of the error region */
307 /* Boot Error Region (not a subtable, pointed to by Address field above) */
309 typedef struct acpi_bert_region
311 UINT32 BlockStatus
; /* Type of error information */
312 UINT32 RawDataOffset
; /* Offset to raw error data */
313 UINT32 RawDataLength
; /* Length of raw error data */
314 UINT32 DataLength
; /* Length of generic error data */
315 UINT32 ErrorSeverity
; /* Severity code */
319 /* Values for BlockStatus flags above */
321 #define ACPI_BERT_UNCORRECTABLE (1)
322 #define ACPI_BERT_CORRECTABLE (1<<1)
323 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
324 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
325 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
327 /* Values for ErrorSeverity above */
329 enum AcpiBertErrorSeverity
331 ACPI_BERT_ERROR_CORRECTABLE
= 0,
332 ACPI_BERT_ERROR_FATAL
= 1,
333 ACPI_BERT_ERROR_CORRECTED
= 2,
334 ACPI_BERT_ERROR_NONE
= 3,
335 ACPI_BERT_ERROR_RESERVED
= 4 /* 4 and greater are reserved */
339 * Note: The generic error data that follows the ErrorSeverity field above
340 * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
344 /*******************************************************************************
346 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
349 ******************************************************************************/
351 typedef struct acpi_table_bgrt
353 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
363 /* Flags for Status field above */
365 #define ACPI_BGRT_DISPLAYED (1)
366 #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
369 /*******************************************************************************
371 * BOOT - Simple Boot Flag Table
374 * Conforms to the "Simple Boot Flag Specification", Version 2.1
376 ******************************************************************************/
378 typedef struct acpi_table_boot
380 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
381 UINT8 CmosIndex
; /* Index in CMOS RAM for the boot register */
387 /*******************************************************************************
389 * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
392 ******************************************************************************/
394 typedef struct acpi_table_cpep
396 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
404 typedef struct acpi_cpep_polling
406 ACPI_SUBTABLE_HEADER Header
;
407 UINT8 Id
; /* Processor ID */
408 UINT8 Eid
; /* Processor EID */
409 UINT32 Interval
; /* Polling interval (msec) */
414 /*******************************************************************************
416 * CSRT - Core System Resource Table
419 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
421 ******************************************************************************/
423 typedef struct acpi_table_csrt
425 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
430 /* Resource Group subtable */
432 typedef struct acpi_csrt_group
441 UINT32 SharedInfoLength
;
443 /* Shared data immediately follows (Length = SharedInfoLength) */
447 /* Shared Info subtable */
449 typedef struct acpi_csrt_shared_info
456 UINT8 InterruptPolarity
;
459 UINT8 DmaAddressWidth
;
460 UINT16 BaseRequestLine
;
461 UINT16 NumHandshakeSignals
;
464 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
466 } ACPI_CSRT_SHARED_INFO
;
468 /* Resource Descriptor subtable */
470 typedef struct acpi_csrt_descriptor
477 /* Resource-specific information immediately follows */
479 } ACPI_CSRT_DESCRIPTOR
;
484 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
485 #define ACPI_CSRT_TYPE_TIMER 0x0002
486 #define ACPI_CSRT_TYPE_DMA 0x0003
488 /* Resource Subtypes */
490 #define ACPI_CSRT_XRUPT_LINE 0x0000
491 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
492 #define ACPI_CSRT_TIMER 0x0000
493 #define ACPI_CSRT_DMA_CHANNEL 0x0000
494 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
497 /*******************************************************************************
499 * DBG2 - Debug Port Table 2
500 * Version 0 (Both main table and subtables)
502 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
504 ******************************************************************************/
506 typedef struct acpi_table_dbg2
508 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
515 typedef struct acpi_dbg2_header
523 /* Debug Device Information Subtable */
525 typedef struct acpi_dbg2_device
529 UINT8 RegisterCount
; /* Number of BaseAddress registers */
530 UINT16 NamepathLength
;
531 UINT16 NamepathOffset
;
532 UINT16 OemDataLength
;
533 UINT16 OemDataOffset
;
537 UINT16 BaseAddressOffset
;
538 UINT16 AddressSizeOffset
;
541 * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
542 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
543 * Namepath (required) - Null terminated string. Single dot if not supported.
544 * OemData (optional) - Length is OemDataLength.
548 /* Types for PortType field above */
550 #define ACPI_DBG2_SERIAL_PORT 0x8000
551 #define ACPI_DBG2_1394_PORT 0x8001
552 #define ACPI_DBG2_USB_PORT 0x8002
553 #define ACPI_DBG2_NET_PORT 0x8003
555 /* Subtypes for PortSubtype field above */
557 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
558 #define ACPI_DBG2_16550_SUBSET 0x0001
559 #define ACPI_DBG2_ARM_PL011 0x0003
560 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
561 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
562 #define ACPI_DBG2_ARM_DCC 0x000F
563 #define ACPI_DBG2_BCM2835 0x0010
565 #define ACPI_DBG2_1394_STANDARD 0x0000
567 #define ACPI_DBG2_USB_XHCI 0x0000
568 #define ACPI_DBG2_USB_EHCI 0x0001
571 /*******************************************************************************
573 * DBGP - Debug Port table
576 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
578 ******************************************************************************/
580 typedef struct acpi_table_dbgp
582 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
583 UINT8 Type
; /* 0=full 16550, 1=subset of 16550 */
585 ACPI_GENERIC_ADDRESS DebugPort
;
590 /*******************************************************************************
592 * DMAR - DMA Remapping table
595 * Conforms to "Intel Virtualization Technology for Directed I/O",
596 * Version 2.3, October 2014
598 ******************************************************************************/
600 typedef struct acpi_table_dmar
602 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
603 UINT8 Width
; /* Host Address Width */
609 /* Masks for Flags field above */
611 #define ACPI_DMAR_INTR_REMAP (1)
612 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
613 #define ACPI_DMAR_X2APIC_MODE (1<<2)
616 /* DMAR subtable header */
618 typedef struct acpi_dmar_header
625 /* Values for subtable type in ACPI_DMAR_HEADER */
629 ACPI_DMAR_TYPE_HARDWARE_UNIT
= 0,
630 ACPI_DMAR_TYPE_RESERVED_MEMORY
= 1,
631 ACPI_DMAR_TYPE_ROOT_ATS
= 2,
632 ACPI_DMAR_TYPE_HARDWARE_AFFINITY
= 3,
633 ACPI_DMAR_TYPE_NAMESPACE
= 4,
634 ACPI_DMAR_TYPE_RESERVED
= 5 /* 5 and greater are reserved */
638 /* DMAR Device Scope structure */
640 typedef struct acpi_dmar_device_scope
648 } ACPI_DMAR_DEVICE_SCOPE
;
650 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
652 enum AcpiDmarScopeType
654 ACPI_DMAR_SCOPE_TYPE_NOT_USED
= 0,
655 ACPI_DMAR_SCOPE_TYPE_ENDPOINT
= 1,
656 ACPI_DMAR_SCOPE_TYPE_BRIDGE
= 2,
657 ACPI_DMAR_SCOPE_TYPE_IOAPIC
= 3,
658 ACPI_DMAR_SCOPE_TYPE_HPET
= 4,
659 ACPI_DMAR_SCOPE_TYPE_NAMESPACE
= 5,
660 ACPI_DMAR_SCOPE_TYPE_RESERVED
= 6 /* 6 and greater are reserved */
663 typedef struct acpi_dmar_pci_path
668 } ACPI_DMAR_PCI_PATH
;
672 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
675 /* 0: Hardware Unit Definition */
677 typedef struct acpi_dmar_hardware_unit
679 ACPI_DMAR_HEADER Header
;
683 UINT64 Address
; /* Register Base Address */
685 } ACPI_DMAR_HARDWARE_UNIT
;
687 /* Masks for Flags field above */
689 #define ACPI_DMAR_INCLUDE_ALL (1)
692 /* 1: Reserved Memory Defininition */
694 typedef struct acpi_dmar_reserved_memory
696 ACPI_DMAR_HEADER Header
;
699 UINT64 BaseAddress
; /* 4K aligned base address */
700 UINT64 EndAddress
; /* 4K aligned limit address */
702 } ACPI_DMAR_RESERVED_MEMORY
;
704 /* Masks for Flags field above */
706 #define ACPI_DMAR_ALLOW_ALL (1)
709 /* 2: Root Port ATS Capability Reporting Structure */
711 typedef struct acpi_dmar_atsr
713 ACPI_DMAR_HEADER Header
;
720 /* Masks for Flags field above */
722 #define ACPI_DMAR_ALL_PORTS (1)
725 /* 3: Remapping Hardware Static Affinity Structure */
727 typedef struct acpi_dmar_rhsa
729 ACPI_DMAR_HEADER Header
;
732 UINT32 ProximityDomain
;
737 /* 4: ACPI Namespace Device Declaration Structure */
739 typedef struct acpi_dmar_andd
741 ACPI_DMAR_HEADER Header
;
749 /*******************************************************************************
751 * DRTM - Dynamic Root of Trust for Measurement table
752 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
755 ******************************************************************************/
757 typedef struct acpi_table_drtm
759 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
760 UINT64 EntryBaseAddress
;
762 UINT32 EntryAddress32
;
763 UINT64 EntryAddress64
;
765 UINT64 LogAreaAddress
;
766 UINT32 LogAreaLength
;
767 UINT64 ArchDependentAddress
;
772 /* Flag Definitions for above */
774 #define ACPI_DRTM_ACCESS_ALLOWED (1)
775 #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
776 #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
777 #define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
780 /* 1) Validated Tables List (64-bit addresses) */
782 typedef struct acpi_drtm_vtable_list
784 UINT32 ValidatedTableCount
;
785 UINT64 ValidatedTables
[1];
787 } ACPI_DRTM_VTABLE_LIST
;
789 /* 2) Resources List (of Resource Descriptors) */
791 /* Resource Descriptor */
793 typedef struct acpi_drtm_resource
799 } ACPI_DRTM_RESOURCE
;
801 typedef struct acpi_drtm_resource_list
803 UINT32 ResourceCount
;
804 ACPI_DRTM_RESOURCE Resources
[1];
806 } ACPI_DRTM_RESOURCE_LIST
;
808 /* 3) Platform-specific Identifiers List */
810 typedef struct acpi_drtm_dps_id
818 /*******************************************************************************
820 * ECDT - Embedded Controller Boot Resources Table
823 ******************************************************************************/
825 typedef struct acpi_table_ecdt
827 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
828 ACPI_GENERIC_ADDRESS Control
; /* Address of EC command/status register */
829 ACPI_GENERIC_ADDRESS Data
; /* Address of EC data register */
830 UINT32 Uid
; /* Unique ID - must be same as the EC _UID method */
831 UINT8 Gpe
; /* The GPE for the EC */
832 UINT8 Id
[1]; /* Full namepath of the EC in the ACPI namespace */
837 /*******************************************************************************
839 * EINJ - Error Injection Table (ACPI 4.0)
842 ******************************************************************************/
844 typedef struct acpi_table_einj
846 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
855 /* EINJ Injection Instruction Entries (actions) */
857 typedef struct acpi_einj_entry
859 ACPI_WHEA_HEADER WheaHeader
; /* Common header for WHEA tables */
863 /* Masks for Flags field above */
865 #define ACPI_EINJ_PRESERVE (1)
867 /* Values for Action field above */
871 ACPI_EINJ_BEGIN_OPERATION
= 0,
872 ACPI_EINJ_GET_TRIGGER_TABLE
= 1,
873 ACPI_EINJ_SET_ERROR_TYPE
= 2,
874 ACPI_EINJ_GET_ERROR_TYPE
= 3,
875 ACPI_EINJ_END_OPERATION
= 4,
876 ACPI_EINJ_EXECUTE_OPERATION
= 5,
877 ACPI_EINJ_CHECK_BUSY_STATUS
= 6,
878 ACPI_EINJ_GET_COMMAND_STATUS
= 7,
879 ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS
= 8,
880 ACPI_EINJ_GET_EXECUTE_TIMINGS
= 9,
881 ACPI_EINJ_ACTION_RESERVED
= 10, /* 10 and greater are reserved */
882 ACPI_EINJ_TRIGGER_ERROR
= 0xFF /* Except for this value */
885 /* Values for Instruction field above */
887 enum AcpiEinjInstructions
889 ACPI_EINJ_READ_REGISTER
= 0,
890 ACPI_EINJ_READ_REGISTER_VALUE
= 1,
891 ACPI_EINJ_WRITE_REGISTER
= 2,
892 ACPI_EINJ_WRITE_REGISTER_VALUE
= 3,
894 ACPI_EINJ_FLUSH_CACHELINE
= 5,
895 ACPI_EINJ_INSTRUCTION_RESERVED
= 6 /* 6 and greater are reserved */
898 typedef struct acpi_einj_error_type_with_addr
901 UINT32 VendorStructOffset
;
908 } ACPI_EINJ_ERROR_TYPE_WITH_ADDR
;
910 typedef struct acpi_einj_vendor
922 /* EINJ Trigger Error Action Table */
924 typedef struct acpi_einj_trigger
933 /* Command status return values */
935 enum AcpiEinjCommandStatus
937 ACPI_EINJ_SUCCESS
= 0,
938 ACPI_EINJ_FAILURE
= 1,
939 ACPI_EINJ_INVALID_ACCESS
= 2,
940 ACPI_EINJ_STATUS_RESERVED
= 3 /* 3 and greater are reserved */
944 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
946 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
947 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
948 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
949 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
950 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
951 #define ACPI_EINJ_MEMORY_FATAL (1<<5)
952 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
953 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
954 #define ACPI_EINJ_PCIX_FATAL (1<<8)
955 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
956 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
957 #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
958 #define ACPI_EINJ_VENDOR_DEFINED (1<<31)
961 /*******************************************************************************
963 * ERST - Error Record Serialization Table (ACPI 4.0)
966 ******************************************************************************/
968 typedef struct acpi_table_erst
970 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
978 /* ERST Serialization Entries (actions) */
980 typedef struct acpi_erst_entry
982 ACPI_WHEA_HEADER WheaHeader
; /* Common header for WHEA tables */
986 /* Masks for Flags field above */
988 #define ACPI_ERST_PRESERVE (1)
990 /* Values for Action field above */
994 ACPI_ERST_BEGIN_WRITE
= 0,
995 ACPI_ERST_BEGIN_READ
= 1,
996 ACPI_ERST_BEGIN_CLEAR
= 2,
998 ACPI_ERST_SET_RECORD_OFFSET
= 4,
999 ACPI_ERST_EXECUTE_OPERATION
= 5,
1000 ACPI_ERST_CHECK_BUSY_STATUS
= 6,
1001 ACPI_ERST_GET_COMMAND_STATUS
= 7,
1002 ACPI_ERST_GET_RECORD_ID
= 8,
1003 ACPI_ERST_SET_RECORD_ID
= 9,
1004 ACPI_ERST_GET_RECORD_COUNT
= 10,
1005 ACPI_ERST_BEGIN_DUMMY_WRIITE
= 11,
1006 ACPI_ERST_NOT_USED
= 12,
1007 ACPI_ERST_GET_ERROR_RANGE
= 13,
1008 ACPI_ERST_GET_ERROR_LENGTH
= 14,
1009 ACPI_ERST_GET_ERROR_ATTRIBUTES
= 15,
1010 ACPI_ERST_EXECUTE_TIMINGS
= 16,
1011 ACPI_ERST_ACTION_RESERVED
= 17 /* 17 and greater are reserved */
1014 /* Values for Instruction field above */
1016 enum AcpiErstInstructions
1018 ACPI_ERST_READ_REGISTER
= 0,
1019 ACPI_ERST_READ_REGISTER_VALUE
= 1,
1020 ACPI_ERST_WRITE_REGISTER
= 2,
1021 ACPI_ERST_WRITE_REGISTER_VALUE
= 3,
1023 ACPI_ERST_LOAD_VAR1
= 5,
1024 ACPI_ERST_LOAD_VAR2
= 6,
1025 ACPI_ERST_STORE_VAR1
= 7,
1027 ACPI_ERST_SUBTRACT
= 9,
1028 ACPI_ERST_ADD_VALUE
= 10,
1029 ACPI_ERST_SUBTRACT_VALUE
= 11,
1030 ACPI_ERST_STALL
= 12,
1031 ACPI_ERST_STALL_WHILE_TRUE
= 13,
1032 ACPI_ERST_SKIP_NEXT_IF_TRUE
= 14,
1033 ACPI_ERST_GOTO
= 15,
1034 ACPI_ERST_SET_SRC_ADDRESS_BASE
= 16,
1035 ACPI_ERST_SET_DST_ADDRESS_BASE
= 17,
1036 ACPI_ERST_MOVE_DATA
= 18,
1037 ACPI_ERST_INSTRUCTION_RESERVED
= 19 /* 19 and greater are reserved */
1040 /* Command status return values */
1042 enum AcpiErstCommandStatus
1044 ACPI_ERST_SUCESS
= 0,
1045 ACPI_ERST_NO_SPACE
= 1,
1046 ACPI_ERST_NOT_AVAILABLE
= 2,
1047 ACPI_ERST_FAILURE
= 3,
1048 ACPI_ERST_RECORD_EMPTY
= 4,
1049 ACPI_ERST_NOT_FOUND
= 5,
1050 ACPI_ERST_STATUS_RESERVED
= 6 /* 6 and greater are reserved */
1054 /* Error Record Serialization Information */
1056 typedef struct acpi_erst_info
1058 UINT16 Signature
; /* Should be "ER" */
1064 /*******************************************************************************
1066 * FPDT - Firmware Performance Data Table (ACPI 5.0)
1069 ******************************************************************************/
1071 typedef struct acpi_table_fpdt
1073 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1078 /* FPDT subtable header (Performance Record Structure) */
1080 typedef struct acpi_fpdt_header
1088 /* Values for Type field above */
1092 ACPI_FPDT_TYPE_BOOT
= 0,
1093 ACPI_FPDT_TYPE_S3PERF
= 1
1101 /* 0: Firmware Basic Boot Performance Record */
1103 typedef struct acpi_fpdt_boot_pointer
1105 ACPI_FPDT_HEADER Header
;
1109 } ACPI_FPDT_BOOT_POINTER
;
1112 /* 1: S3 Performance Table Pointer Record */
1114 typedef struct acpi_fpdt_s3pt_pointer
1116 ACPI_FPDT_HEADER Header
;
1120 } ACPI_FPDT_S3PT_POINTER
;
1124 * S3PT - S3 Performance Table. This table is pointed to by the
1125 * S3 Pointer Record above.
1127 typedef struct acpi_table_s3pt
1129 UINT8 Signature
[4]; /* "S3PT" */
1136 * S3PT Subtables (Not part of the actual FPDT)
1139 /* Values for Type field in S3PT header */
1143 ACPI_S3PT_TYPE_RESUME
= 0,
1144 ACPI_S3PT_TYPE_SUSPEND
= 1,
1145 ACPI_FPDT_BOOT_PERFORMANCE
= 2
1148 typedef struct acpi_s3pt_resume
1150 ACPI_FPDT_HEADER Header
;
1153 UINT64 AverageResume
;
1157 typedef struct acpi_s3pt_suspend
1159 ACPI_FPDT_HEADER Header
;
1160 UINT64 SuspendStart
;
1163 } ACPI_S3PT_SUSPEND
;
1167 * FPDT Boot Performance Record (Not part of the actual FPDT)
1169 typedef struct acpi_fpdt_boot
1171 ACPI_FPDT_HEADER Header
;
1175 UINT64 StartupStart
;
1176 UINT64 ExitServicesEntry
;
1177 UINT64 ExitServicesExit
;
1182 /*******************************************************************************
1184 * GTDT - Generic Timer Description Table (ACPI 5.1)
1187 ******************************************************************************/
1189 typedef struct acpi_table_gtdt
1191 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1192 UINT64 CounterBlockAddresss
;
1194 UINT32 SecureEl1Interrupt
;
1195 UINT32 SecureEl1Flags
;
1196 UINT32 NonSecureEl1Interrupt
;
1197 UINT32 NonSecureEl1Flags
;
1198 UINT32 VirtualTimerInterrupt
;
1199 UINT32 VirtualTimerFlags
;
1200 UINT32 NonSecureEl2Interrupt
;
1201 UINT32 NonSecureEl2Flags
;
1202 UINT64 CounterReadBlockAddress
;
1203 UINT32 PlatformTimerCount
;
1204 UINT32 PlatformTimerOffset
;
1208 /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
1210 #define ACPI_GTDT_INTERRUPT_MODE (1)
1211 #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
1212 #define ACPI_GTDT_ALWAYS_ON (1<<2)
1215 /* Common GTDT subtable header */
1217 typedef struct acpi_gtdt_header
1224 /* Values for GTDT subtable type above */
1228 ACPI_GTDT_TYPE_TIMER_BLOCK
= 0,
1229 ACPI_GTDT_TYPE_WATCHDOG
= 1,
1230 ACPI_GTDT_TYPE_RESERVED
= 2 /* 2 and greater are reserved */
1234 /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
1236 /* 0: Generic Timer Block */
1238 typedef struct acpi_gtdt_timer_block
1240 ACPI_GTDT_HEADER Header
;
1242 UINT64 BlockAddress
;
1246 } ACPI_GTDT_TIMER_BLOCK
;
1248 /* Timer Sub-Structure, one per timer */
1250 typedef struct acpi_gtdt_timer_entry
1255 UINT64 El0BaseAddress
;
1256 UINT32 TimerInterrupt
;
1258 UINT32 VirtualTimerInterrupt
;
1259 UINT32 VirtualTimerFlags
;
1262 } ACPI_GTDT_TIMER_ENTRY
;
1264 /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
1266 #define ACPI_GTDT_GT_IRQ_MODE (1)
1267 #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
1269 /* Flag Definitions: CommonFlags above */
1271 #define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
1272 #define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
1275 /* 1: SBSA Generic Watchdog Structure */
1277 typedef struct acpi_gtdt_watchdog
1279 ACPI_GTDT_HEADER Header
;
1281 UINT64 RefreshFrameAddress
;
1282 UINT64 ControlFrameAddress
;
1283 UINT32 TimerInterrupt
;
1286 } ACPI_GTDT_WATCHDOG
;
1288 /* Flag Definitions: TimerFlags above */
1290 #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
1291 #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
1292 #define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
1295 /*******************************************************************************
1297 * HEST - Hardware Error Source Table (ACPI 4.0)
1300 ******************************************************************************/
1302 typedef struct acpi_table_hest
1304 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1305 UINT32 ErrorSourceCount
;
1310 /* HEST subtable header */
1312 typedef struct acpi_hest_header
1320 /* Values for Type field above for subtables */
1324 ACPI_HEST_TYPE_IA32_CHECK
= 0,
1325 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK
= 1,
1326 ACPI_HEST_TYPE_IA32_NMI
= 2,
1327 ACPI_HEST_TYPE_NOT_USED3
= 3,
1328 ACPI_HEST_TYPE_NOT_USED4
= 4,
1329 ACPI_HEST_TYPE_NOT_USED5
= 5,
1330 ACPI_HEST_TYPE_AER_ROOT_PORT
= 6,
1331 ACPI_HEST_TYPE_AER_ENDPOINT
= 7,
1332 ACPI_HEST_TYPE_AER_BRIDGE
= 8,
1333 ACPI_HEST_TYPE_GENERIC_ERROR
= 9,
1334 ACPI_HEST_TYPE_GENERIC_ERROR_V2
= 10,
1335 ACPI_HEST_TYPE_IA32_DEFERRED_CHECK
= 11,
1336 ACPI_HEST_TYPE_RESERVED
= 12 /* 12 and greater are reserved */
1341 * HEST substructures contained in subtables
1345 * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
1346 * ACPI_HEST_IA_CORRECTED structures.
1348 typedef struct acpi_hest_ia_error_bank
1351 UINT8 ClearStatusOnInit
;
1354 UINT32 ControlRegister
;
1356 UINT32 StatusRegister
;
1357 UINT32 AddressRegister
;
1358 UINT32 MiscRegister
;
1360 } ACPI_HEST_IA_ERROR_BANK
;
1363 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
1365 typedef struct acpi_hest_aer_common
1370 UINT32 RecordsToPreallocate
;
1371 UINT32 MaxSectionsPerRecord
;
1372 UINT32 Bus
; /* Bus and Segment numbers */
1375 UINT16 DeviceControl
;
1377 UINT32 UncorrectableMask
;
1378 UINT32 UncorrectableSeverity
;
1379 UINT32 CorrectableMask
;
1380 UINT32 AdvancedCapabilities
;
1382 } ACPI_HEST_AER_COMMON
;
1384 /* Masks for HEST Flags fields */
1386 #define ACPI_HEST_FIRMWARE_FIRST (1)
1387 #define ACPI_HEST_GLOBAL (1<<1)
1388 #define ACPI_HEST_GHES_ASSIST (1<<2)
1391 * Macros to access the bus/segment numbers in Bus field above:
1392 * Bus number is encoded in bits 7:0
1393 * Segment number is encoded in bits 23:8
1395 #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
1396 #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
1399 /* Hardware Error Notification */
1401 typedef struct acpi_hest_notify
1405 UINT16 ConfigWriteEnable
;
1406 UINT32 PollInterval
;
1408 UINT32 PollingThresholdValue
;
1409 UINT32 PollingThresholdWindow
;
1410 UINT32 ErrorThresholdValue
;
1411 UINT32 ErrorThresholdWindow
;
1415 /* Values for Notify Type field above */
1417 enum AcpiHestNotifyTypes
1419 ACPI_HEST_NOTIFY_POLLED
= 0,
1420 ACPI_HEST_NOTIFY_EXTERNAL
= 1,
1421 ACPI_HEST_NOTIFY_LOCAL
= 2,
1422 ACPI_HEST_NOTIFY_SCI
= 3,
1423 ACPI_HEST_NOTIFY_NMI
= 4,
1424 ACPI_HEST_NOTIFY_CMCI
= 5, /* ACPI 5.0 */
1425 ACPI_HEST_NOTIFY_MCE
= 6, /* ACPI 5.0 */
1426 ACPI_HEST_NOTIFY_GPIO
= 7, /* ACPI 6.0 */
1427 ACPI_HEST_NOTIFY_SEA
= 8, /* ACPI 6.1 */
1428 ACPI_HEST_NOTIFY_SEI
= 9, /* ACPI 6.1 */
1429 ACPI_HEST_NOTIFY_GSIV
= 10, /* ACPI 6.1 */
1430 ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED
= 11, /* ACPI 6.2 */
1431 ACPI_HEST_NOTIFY_RESERVED
= 12 /* 12 and greater are reserved */
1434 /* Values for ConfigWriteEnable bitfield above */
1436 #define ACPI_HEST_TYPE (1)
1437 #define ACPI_HEST_POLL_INTERVAL (1<<1)
1438 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
1439 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
1440 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
1441 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
1448 /* 0: IA32 Machine Check Exception */
1450 typedef struct acpi_hest_ia_machine_check
1452 ACPI_HEST_HEADER Header
;
1454 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1456 UINT32 RecordsToPreallocate
;
1457 UINT32 MaxSectionsPerRecord
;
1458 UINT64 GlobalCapabilityData
;
1459 UINT64 GlobalControlData
;
1460 UINT8 NumHardwareBanks
;
1463 } ACPI_HEST_IA_MACHINE_CHECK
;
1466 /* 1: IA32 Corrected Machine Check */
1468 typedef struct acpi_hest_ia_corrected
1470 ACPI_HEST_HEADER Header
;
1472 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1474 UINT32 RecordsToPreallocate
;
1475 UINT32 MaxSectionsPerRecord
;
1476 ACPI_HEST_NOTIFY Notify
;
1477 UINT8 NumHardwareBanks
;
1480 } ACPI_HEST_IA_CORRECTED
;
1483 /* 2: IA32 Non-Maskable Interrupt */
1485 typedef struct acpi_hest_ia_nmi
1487 ACPI_HEST_HEADER Header
;
1489 UINT32 RecordsToPreallocate
;
1490 UINT32 MaxSectionsPerRecord
;
1491 UINT32 MaxRawDataLength
;
1496 /* 3,4,5: Not used */
1498 /* 6: PCI Express Root Port AER */
1500 typedef struct acpi_hest_aer_root
1502 ACPI_HEST_HEADER Header
;
1503 ACPI_HEST_AER_COMMON Aer
;
1504 UINT32 RootErrorCommand
;
1506 } ACPI_HEST_AER_ROOT
;
1509 /* 7: PCI Express AER (AER Endpoint) */
1511 typedef struct acpi_hest_aer
1513 ACPI_HEST_HEADER Header
;
1514 ACPI_HEST_AER_COMMON Aer
;
1519 /* 8: PCI Express/PCI-X Bridge AER */
1521 typedef struct acpi_hest_aer_bridge
1523 ACPI_HEST_HEADER Header
;
1524 ACPI_HEST_AER_COMMON Aer
;
1525 UINT32 UncorrectableMask2
;
1526 UINT32 UncorrectableSeverity2
;
1527 UINT32 AdvancedCapabilities2
;
1529 } ACPI_HEST_AER_BRIDGE
;
1532 /* 9: Generic Hardware Error Source */
1534 typedef struct acpi_hest_generic
1536 ACPI_HEST_HEADER Header
;
1537 UINT16 RelatedSourceId
;
1540 UINT32 RecordsToPreallocate
;
1541 UINT32 MaxSectionsPerRecord
;
1542 UINT32 MaxRawDataLength
;
1543 ACPI_GENERIC_ADDRESS ErrorStatusAddress
;
1544 ACPI_HEST_NOTIFY Notify
;
1545 UINT32 ErrorBlockLength
;
1547 } ACPI_HEST_GENERIC
;
1550 /* 10: Generic Hardware Error Source, version 2 */
1552 typedef struct acpi_hest_generic_v2
1554 ACPI_HEST_HEADER Header
;
1555 UINT16 RelatedSourceId
;
1558 UINT32 RecordsToPreallocate
;
1559 UINT32 MaxSectionsPerRecord
;
1560 UINT32 MaxRawDataLength
;
1561 ACPI_GENERIC_ADDRESS ErrorStatusAddress
;
1562 ACPI_HEST_NOTIFY Notify
;
1563 UINT32 ErrorBlockLength
;
1564 ACPI_GENERIC_ADDRESS ReadAckRegister
;
1565 UINT64 ReadAckPreserve
;
1566 UINT64 ReadAckWrite
;
1568 } ACPI_HEST_GENERIC_V2
;
1571 /* Generic Error Status block */
1573 typedef struct acpi_hest_generic_status
1576 UINT32 RawDataOffset
;
1577 UINT32 RawDataLength
;
1579 UINT32 ErrorSeverity
;
1581 } ACPI_HEST_GENERIC_STATUS
;
1583 /* Values for BlockStatus flags above */
1585 #define ACPI_HEST_UNCORRECTABLE (1)
1586 #define ACPI_HEST_CORRECTABLE (1<<1)
1587 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
1588 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
1589 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
1592 /* Generic Error Data entry */
1594 typedef struct acpi_hest_generic_data
1596 UINT8 SectionType
[16];
1597 UINT32 ErrorSeverity
;
1599 UINT8 ValidationBits
;
1601 UINT32 ErrorDataLength
;
1605 } ACPI_HEST_GENERIC_DATA
;
1607 /* Extension for revision 0x0300 */
1609 typedef struct acpi_hest_generic_data_v300
1611 UINT8 SectionType
[16];
1612 UINT32 ErrorSeverity
;
1614 UINT8 ValidationBits
;
1616 UINT32 ErrorDataLength
;
1621 } ACPI_HEST_GENERIC_DATA_V300
;
1623 /* Values for ErrorSeverity above */
1625 #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
1626 #define ACPI_HEST_GEN_ERROR_FATAL 1
1627 #define ACPI_HEST_GEN_ERROR_CORRECTED 2
1628 #define ACPI_HEST_GEN_ERROR_NONE 3
1630 /* Flags for ValidationBits above */
1632 #define ACPI_HEST_GEN_VALID_FRU_ID (1)
1633 #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
1634 #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
1637 /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
1639 typedef struct acpi_hest_ia_deferred_check
1641 ACPI_HEST_HEADER Header
;
1643 UINT8 Flags
; /* See flags ACPI_HEST_GLOBAL, etc. above */
1645 UINT32 RecordsToPreallocate
;
1646 UINT32 MaxSectionsPerRecord
;
1647 ACPI_HEST_NOTIFY Notify
;
1648 UINT8 NumHardwareBanks
;
1651 } ACPI_HEST_IA_DEFERRED_CHECK
;
1654 /*******************************************************************************
1656 * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
1659 ******************************************************************************/
1661 typedef struct acpi_table_hmat
1663 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1669 /* Values for HMAT structure types */
1673 ACPI_HMAT_TYPE_ADDRESS_RANGE
= 0, /* Memory subystem address range */
1674 ACPI_HMAT_TYPE_LOCALITY
= 1, /* System locality latency and bandwidth information */
1675 ACPI_HMAT_TYPE_CACHE
= 2, /* Memory side cache information */
1676 ACPI_HMAT_TYPE_RESERVED
= 3 /* 3 and greater are reserved */
1679 typedef struct acpi_hmat_structure
1685 } ACPI_HMAT_STRUCTURE
;
1689 * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
1692 /* 0: Memory subystem address range */
1694 typedef struct acpi_hmat_address_range
1696 ACPI_HMAT_STRUCTURE Header
;
1699 UINT32 ProcessorPD
; /* Processor proximity domain */
1700 UINT32 MemoryPD
; /* Memory proximity domain */
1702 UINT64 PhysicalAddressBase
; /* Physical address range base */
1703 UINT64 PhysicalAddressLength
; /* Physical address range length */
1705 } ACPI_HMAT_ADDRESS_RANGE
;
1707 /* Masks for Flags field above */
1709 #define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: ProcessorPD field is valid */
1710 #define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: MemoryPD field is valid */
1711 #define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */
1714 /* 1: System locality latency and bandwidth information */
1716 typedef struct acpi_hmat_locality
1718 ACPI_HMAT_STRUCTURE Header
;
1722 UINT32 NumberOfInitiatorPDs
;
1723 UINT32 NumberOfTargetPDs
;
1725 UINT64 EntryBaseUnit
;
1727 } ACPI_HMAT_LOCALITY
;
1729 /* Masks for Flags field above */
1731 #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F)
1733 /* Values for Memory Hierarchy flag */
1735 #define ACPI_HMAT_MEMORY 0
1736 #define ACPI_HMAT_LAST_LEVEL_CACHE 1
1737 #define ACPI_HMAT_1ST_LEVEL_CACHE 2
1738 #define ACPI_HMAT_2ND_LEVEL_CACHE 3
1739 #define ACPI_HMAT_3RD_LEVEL_CACHE 4
1741 /* Values for DataType field above */
1743 #define ACPI_HMAT_ACCESS_LATENCY 0
1744 #define ACPI_HMAT_READ_LATENCY 1
1745 #define ACPI_HMAT_WRITE_LATENCY 2
1746 #define ACPI_HMAT_ACCESS_BANDWIDTH 3
1747 #define ACPI_HMAT_READ_BANDWIDTH 4
1748 #define ACPI_HMAT_WRITE_BANDWIDTH 5
1751 /* 2: Memory side cache information */
1753 typedef struct acpi_hmat_cache
1755 ACPI_HMAT_STRUCTURE Header
;
1759 UINT32 CacheAttributes
;
1761 UINT16 NumberOfSMBIOSHandles
;
1765 /* Masks for CacheAttributes field above */
1767 #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
1768 #define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
1769 #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
1770 #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
1771 #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
1773 /* Values for cache associativity flag */
1775 #define ACPI_HMAT_CA_NONE (0)
1776 #define ACPI_HMAT_CA_DIRECT_MAPPED (1)
1777 #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
1779 /* Values for write policy flag */
1781 #define ACPI_HMAT_CP_NONE (0)
1782 #define ACPI_HMAT_CP_WB (1)
1783 #define ACPI_HMAT_CP_WT (2)
1786 /*******************************************************************************
1788 * HPET - High Precision Event Timer table
1791 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
1792 * Version 1.0a, October 2004
1794 ******************************************************************************/
1796 typedef struct acpi_table_hpet
1798 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1799 UINT32 Id
; /* Hardware ID of event timer block */
1800 ACPI_GENERIC_ADDRESS Address
; /* Address of event timer block */
1801 UINT8 Sequence
; /* HPET sequence number */
1802 UINT16 MinimumTick
; /* Main counter min tick, periodic mode */
1807 /* Masks for Flags field above */
1809 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
1811 /* Values for Page Protect flags */
1813 enum AcpiHpetPageProtect
1815 ACPI_HPET_NO_PAGE_PROTECT
= 0,
1816 ACPI_HPET_PAGE_PROTECT4
= 1,
1817 ACPI_HPET_PAGE_PROTECT64
= 2
1821 /*******************************************************************************
1823 * IBFT - Boot Firmware Table
1826 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
1827 * Specification", Version 1.01, March 1, 2007
1829 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
1830 * Therefore, it is not currently supported by the disassembler.
1832 ******************************************************************************/
1834 typedef struct acpi_table_ibft
1836 ACPI_TABLE_HEADER Header
; /* Common ACPI table header */
1842 /* IBFT common subtable header */
1844 typedef struct acpi_ibft_header
1854 /* Values for Type field above */
1858 ACPI_IBFT_TYPE_NOT_USED
= 0,
1859 ACPI_IBFT_TYPE_CONTROL
= 1,
1860 ACPI_IBFT_TYPE_INITIATOR
= 2,
1861 ACPI_IBFT_TYPE_NIC
= 3,
1862 ACPI_IBFT_TYPE_TARGET
= 4,
1863 ACPI_IBFT_TYPE_EXTENSIONS
= 5,
1864 ACPI_IBFT_TYPE_RESERVED
= 6 /* 6 and greater are reserved */
1868 /* IBFT subtables */
1870 typedef struct acpi_ibft_control
1872 ACPI_IBFT_HEADER Header
;
1874 UINT16 InitiatorOffset
;
1876 UINT16 Target0Offset
;
1878 UINT16 Target1Offset
;
1880 } ACPI_IBFT_CONTROL
;
1882 typedef struct acpi_ibft_initiator
1884 ACPI_IBFT_HEADER Header
;
1885 UINT8 SnsServer
[16];
1886 UINT8 SlpServer
[16];
1887 UINT8 PrimaryServer
[16];
1888 UINT8 SecondaryServer
[16];
1892 } ACPI_IBFT_INITIATOR
;
1894 typedef struct acpi_ibft_nic
1896 ACPI_IBFT_HEADER Header
;
1897 UINT8 IpAddress
[16];
1898 UINT8 SubnetMaskPrefix
;
1901 UINT8 PrimaryDns
[16];
1902 UINT8 SecondaryDns
[16];
1905 UINT8 MacAddress
[6];
1912 typedef struct acpi_ibft_target
1914 ACPI_IBFT_HEADER Header
;
1915 UINT8 TargetIpAddress
[16];
1916 UINT16 TargetIpSocket
;
1917 UINT8 TargetBootLun
[8];
1919 UINT8 NicAssociation
;
1920 UINT16 TargetNameLength
;
1921 UINT16 TargetNameOffset
;
1922 UINT16 ChapNameLength
;
1923 UINT16 ChapNameOffset
;
1924 UINT16 ChapSecretLength
;
1925 UINT16 ChapSecretOffset
;
1926 UINT16 ReverseChapNameLength
;
1927 UINT16 ReverseChapNameOffset
;
1928 UINT16 ReverseChapSecretLength
;
1929 UINT16 ReverseChapSecretOffset
;
1934 /* Reset to default packing */
1938 #endif /* __ACTBL1_H__ */