1*f334afcfSToomas Soome /** @file
2*f334afcfSToomas Soome   ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010
3*f334afcfSToomas Soome 
4*f334afcfSToomas Soome   Copyright (c) 2010 - 2022, Intel Corporation. All rights reserved.<BR>
5*f334afcfSToomas Soome   SPDX-License-Identifier: BSD-2-Clause-Patent
6*f334afcfSToomas Soome **/
7*f334afcfSToomas Soome 
8*f334afcfSToomas Soome #ifndef _ACPI_4_0_H_
9*f334afcfSToomas Soome #define _ACPI_4_0_H_
10*f334afcfSToomas Soome 
11*f334afcfSToomas Soome #include <IndustryStandard/Acpi30.h>
12*f334afcfSToomas Soome 
13*f334afcfSToomas Soome //
14*f334afcfSToomas Soome // Ensure proper structure formats
15*f334afcfSToomas Soome //
16*f334afcfSToomas Soome #pragma pack(1)
17*f334afcfSToomas Soome 
18*f334afcfSToomas Soome ///
19*f334afcfSToomas Soome /// ACPI 4.0 Generic Address Space definition
20*f334afcfSToomas Soome ///
21*f334afcfSToomas Soome typedef struct {
22*f334afcfSToomas Soome   UINT8     AddressSpaceId;
23*f334afcfSToomas Soome   UINT8     RegisterBitWidth;
24*f334afcfSToomas Soome   UINT8     RegisterBitOffset;
25*f334afcfSToomas Soome   UINT8     AccessSize;
26*f334afcfSToomas Soome   UINT64    Address;
27*f334afcfSToomas Soome } EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE;
28*f334afcfSToomas Soome 
29*f334afcfSToomas Soome //
30*f334afcfSToomas Soome // Generic Address Space Address IDs
31*f334afcfSToomas Soome //
32*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_MEMORY              0
33*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_IO                  1
34*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_CONFIGURATION_SPACE    2
35*f334afcfSToomas Soome #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER        3
36*f334afcfSToomas Soome #define EFI_ACPI_4_0_SMBUS                      4
37*f334afcfSToomas Soome #define EFI_ACPI_4_0_FUNCTIONAL_FIXED_HARDWARE  0x7F
38*f334afcfSToomas Soome 
39*f334afcfSToomas Soome //
40*f334afcfSToomas Soome // Generic Address Space Access Sizes
41*f334afcfSToomas Soome //
42*f334afcfSToomas Soome #define EFI_ACPI_4_0_UNDEFINED  0
43*f334afcfSToomas Soome #define EFI_ACPI_4_0_BYTE       1
44*f334afcfSToomas Soome #define EFI_ACPI_4_0_WORD       2
45*f334afcfSToomas Soome #define EFI_ACPI_4_0_DWORD      3
46*f334afcfSToomas Soome #define EFI_ACPI_4_0_QWORD      4
47*f334afcfSToomas Soome 
48*f334afcfSToomas Soome //
49*f334afcfSToomas Soome // ACPI 4.0 table structures
50*f334afcfSToomas Soome //
51*f334afcfSToomas Soome 
52*f334afcfSToomas Soome ///
53*f334afcfSToomas Soome /// Root System Description Pointer Structure
54*f334afcfSToomas Soome ///
55*f334afcfSToomas Soome typedef struct {
56*f334afcfSToomas Soome   UINT64    Signature;
57*f334afcfSToomas Soome   UINT8     Checksum;
58*f334afcfSToomas Soome   UINT8     OemId[6];
59*f334afcfSToomas Soome   UINT8     Revision;
60*f334afcfSToomas Soome   UINT32    RsdtAddress;
61*f334afcfSToomas Soome   UINT32    Length;
62*f334afcfSToomas Soome   UINT64    XsdtAddress;
63*f334afcfSToomas Soome   UINT8     ExtendedChecksum;
64*f334afcfSToomas Soome   UINT8     Reserved[3];
65*f334afcfSToomas Soome } EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
66*f334afcfSToomas Soome 
67*f334afcfSToomas Soome ///
68*f334afcfSToomas Soome /// RSD_PTR Revision (as defined in ACPI 4.0b spec.)
69*f334afcfSToomas Soome ///
70*f334afcfSToomas Soome #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 4.0a) says current value is 2
71*f334afcfSToomas Soome 
72*f334afcfSToomas Soome ///
73*f334afcfSToomas Soome /// Common table header, this prefaces all ACPI tables, including FACS, but
74*f334afcfSToomas Soome /// excluding the RSD PTR structure
75*f334afcfSToomas Soome ///
76*f334afcfSToomas Soome typedef struct {
77*f334afcfSToomas Soome   UINT32    Signature;
78*f334afcfSToomas Soome   UINT32    Length;
79*f334afcfSToomas Soome } EFI_ACPI_4_0_COMMON_HEADER;
80*f334afcfSToomas Soome 
81*f334afcfSToomas Soome //
82*f334afcfSToomas Soome // Root System Description Table
83*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with
84*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
85*f334afcfSToomas Soome //
86*f334afcfSToomas Soome 
87*f334afcfSToomas Soome ///
88*f334afcfSToomas Soome /// RSDT Revision (as defined in ACPI 4.0 spec.)
89*f334afcfSToomas Soome ///
90*f334afcfSToomas Soome #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
91*f334afcfSToomas Soome 
92*f334afcfSToomas Soome //
93*f334afcfSToomas Soome // Extended System Description Table
94*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with
95*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
96*f334afcfSToomas Soome //
97*f334afcfSToomas Soome 
98*f334afcfSToomas Soome ///
99*f334afcfSToomas Soome /// XSDT Revision (as defined in ACPI 4.0 spec.)
100*f334afcfSToomas Soome ///
101*f334afcfSToomas Soome #define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
102*f334afcfSToomas Soome 
103*f334afcfSToomas Soome ///
104*f334afcfSToomas Soome /// Fixed ACPI Description Table Structure (FADT)
105*f334afcfSToomas Soome ///
106*f334afcfSToomas Soome typedef struct {
107*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER               Header;
108*f334afcfSToomas Soome   UINT32                                    FirmwareCtrl;
109*f334afcfSToomas Soome   UINT32                                    Dsdt;
110*f334afcfSToomas Soome   UINT8                                     Reserved0;
111*f334afcfSToomas Soome   UINT8                                     PreferredPmProfile;
112*f334afcfSToomas Soome   UINT16                                    SciInt;
113*f334afcfSToomas Soome   UINT32                                    SmiCmd;
114*f334afcfSToomas Soome   UINT8                                     AcpiEnable;
115*f334afcfSToomas Soome   UINT8                                     AcpiDisable;
116*f334afcfSToomas Soome   UINT8                                     S4BiosReq;
117*f334afcfSToomas Soome   UINT8                                     PstateCnt;
118*f334afcfSToomas Soome   UINT32                                    Pm1aEvtBlk;
119*f334afcfSToomas Soome   UINT32                                    Pm1bEvtBlk;
120*f334afcfSToomas Soome   UINT32                                    Pm1aCntBlk;
121*f334afcfSToomas Soome   UINT32                                    Pm1bCntBlk;
122*f334afcfSToomas Soome   UINT32                                    Pm2CntBlk;
123*f334afcfSToomas Soome   UINT32                                    PmTmrBlk;
124*f334afcfSToomas Soome   UINT32                                    Gpe0Blk;
125*f334afcfSToomas Soome   UINT32                                    Gpe1Blk;
126*f334afcfSToomas Soome   UINT8                                     Pm1EvtLen;
127*f334afcfSToomas Soome   UINT8                                     Pm1CntLen;
128*f334afcfSToomas Soome   UINT8                                     Pm2CntLen;
129*f334afcfSToomas Soome   UINT8                                     PmTmrLen;
130*f334afcfSToomas Soome   UINT8                                     Gpe0BlkLen;
131*f334afcfSToomas Soome   UINT8                                     Gpe1BlkLen;
132*f334afcfSToomas Soome   UINT8                                     Gpe1Base;
133*f334afcfSToomas Soome   UINT8                                     CstCnt;
134*f334afcfSToomas Soome   UINT16                                    PLvl2Lat;
135*f334afcfSToomas Soome   UINT16                                    PLvl3Lat;
136*f334afcfSToomas Soome   UINT16                                    FlushSize;
137*f334afcfSToomas Soome   UINT16                                    FlushStride;
138*f334afcfSToomas Soome   UINT8                                     DutyOffset;
139*f334afcfSToomas Soome   UINT8                                     DutyWidth;
140*f334afcfSToomas Soome   UINT8                                     DayAlrm;
141*f334afcfSToomas Soome   UINT8                                     MonAlrm;
142*f334afcfSToomas Soome   UINT8                                     Century;
143*f334afcfSToomas Soome   UINT16                                    IaPcBootArch;
144*f334afcfSToomas Soome   UINT8                                     Reserved1;
145*f334afcfSToomas Soome   UINT32                                    Flags;
146*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
147*f334afcfSToomas Soome   UINT8                                     ResetValue;
148*f334afcfSToomas Soome   UINT8                                     Reserved2[3];
149*f334afcfSToomas Soome   UINT64                                    XFirmwareCtrl;
150*f334afcfSToomas Soome   UINT64                                    XDsdt;
151*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
152*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
153*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
154*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
155*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
156*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
157*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
158*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
159*f334afcfSToomas Soome } EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE;
160*f334afcfSToomas Soome 
161*f334afcfSToomas Soome ///
162*f334afcfSToomas Soome /// FADT Version (as defined in ACPI 4.0 spec.)
163*f334afcfSToomas Soome ///
164*f334afcfSToomas Soome #define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x04
165*f334afcfSToomas Soome 
166*f334afcfSToomas Soome //
167*f334afcfSToomas Soome // Fixed ACPI Description Table Preferred Power Management Profile
168*f334afcfSToomas Soome //
169*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED         0
170*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_DESKTOP             1
171*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_MOBILE              2
172*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_WORKSTATION         3
173*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_ENTERPRISE_SERVER   4
174*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_SOHO_SERVER         5
175*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_APPLIANCE_PC        6
176*f334afcfSToomas Soome #define EFI_ACPI_4_0_PM_PROFILE_PERFORMANCE_SERVER  7
177*f334afcfSToomas Soome 
178*f334afcfSToomas Soome //
179*f334afcfSToomas Soome // Fixed ACPI Description Table Boot Architecture Flags
180*f334afcfSToomas Soome // All other bits are reserved and must be set to 0.
181*f334afcfSToomas Soome //
182*f334afcfSToomas Soome #define EFI_ACPI_4_0_LEGACY_DEVICES      BIT0
183*f334afcfSToomas Soome #define EFI_ACPI_4_0_8042                BIT1
184*f334afcfSToomas Soome #define EFI_ACPI_4_0_VGA_NOT_PRESENT     BIT2
185*f334afcfSToomas Soome #define EFI_ACPI_4_0_MSI_NOT_SUPPORTED   BIT3
186*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS  BIT4
187*f334afcfSToomas Soome 
188*f334afcfSToomas Soome //
189*f334afcfSToomas Soome // Fixed ACPI Description Table Fixed Feature Flags
190*f334afcfSToomas Soome // All other bits are reserved and must be set to 0.
191*f334afcfSToomas Soome //
192*f334afcfSToomas Soome #define EFI_ACPI_4_0_WBINVD                                BIT0
193*f334afcfSToomas Soome #define EFI_ACPI_4_0_WBINVD_FLUSH                          BIT1
194*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROC_C1                               BIT2
195*f334afcfSToomas Soome #define EFI_ACPI_4_0_P_LVL2_UP                             BIT3
196*f334afcfSToomas Soome #define EFI_ACPI_4_0_PWR_BUTTON                            BIT4
197*f334afcfSToomas Soome #define EFI_ACPI_4_0_SLP_BUTTON                            BIT5
198*f334afcfSToomas Soome #define EFI_ACPI_4_0_FIX_RTC                               BIT6
199*f334afcfSToomas Soome #define EFI_ACPI_4_0_RTC_S4                                BIT7
200*f334afcfSToomas Soome #define EFI_ACPI_4_0_TMR_VAL_EXT                           BIT8
201*f334afcfSToomas Soome #define EFI_ACPI_4_0_DCK_CAP                               BIT9
202*f334afcfSToomas Soome #define EFI_ACPI_4_0_RESET_REG_SUP                         BIT10
203*f334afcfSToomas Soome #define EFI_ACPI_4_0_SEALED_CASE                           BIT11
204*f334afcfSToomas Soome #define EFI_ACPI_4_0_HEADLESS                              BIT12
205*f334afcfSToomas Soome #define EFI_ACPI_4_0_CPU_SW_SLP                            BIT13
206*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_EXP_WAK                           BIT14
207*f334afcfSToomas Soome #define EFI_ACPI_4_0_USE_PLATFORM_CLOCK                    BIT15
208*f334afcfSToomas Soome #define EFI_ACPI_4_0_S4_RTC_STS_VALID                      BIT16
209*f334afcfSToomas Soome #define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE               BIT17
210*f334afcfSToomas Soome #define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL              BIT18
211*f334afcfSToomas Soome #define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
212*f334afcfSToomas Soome 
213*f334afcfSToomas Soome ///
214*f334afcfSToomas Soome /// Firmware ACPI Control Structure
215*f334afcfSToomas Soome ///
216*f334afcfSToomas Soome typedef struct {
217*f334afcfSToomas Soome   UINT32    Signature;
218*f334afcfSToomas Soome   UINT32    Length;
219*f334afcfSToomas Soome   UINT32    HardwareSignature;
220*f334afcfSToomas Soome   UINT32    FirmwareWakingVector;
221*f334afcfSToomas Soome   UINT32    GlobalLock;
222*f334afcfSToomas Soome   UINT32    Flags;
223*f334afcfSToomas Soome   UINT64    XFirmwareWakingVector;
224*f334afcfSToomas Soome   UINT8     Version;
225*f334afcfSToomas Soome   UINT8     Reserved0[3];
226*f334afcfSToomas Soome   UINT32    OspmFlags;
227*f334afcfSToomas Soome   UINT8     Reserved1[24];
228*f334afcfSToomas Soome } EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
229*f334afcfSToomas Soome 
230*f334afcfSToomas Soome ///
231*f334afcfSToomas Soome /// FACS Version (as defined in ACPI 4.0 spec.)
232*f334afcfSToomas Soome ///
233*f334afcfSToomas Soome #define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x02
234*f334afcfSToomas Soome 
235*f334afcfSToomas Soome ///
236*f334afcfSToomas Soome /// Firmware Control Structure Feature Flags
237*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0.
238*f334afcfSToomas Soome ///
239*f334afcfSToomas Soome #define EFI_ACPI_4_0_S4BIOS_F                BIT0
240*f334afcfSToomas Soome #define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F  BIT1
241*f334afcfSToomas Soome 
242*f334afcfSToomas Soome ///
243*f334afcfSToomas Soome /// OSPM Enabled Firmware Control Structure Flags
244*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0.
245*f334afcfSToomas Soome ///
246*f334afcfSToomas Soome #define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F  BIT0
247*f334afcfSToomas Soome 
248*f334afcfSToomas Soome //
249*f334afcfSToomas Soome // Differentiated System Description Table,
250*f334afcfSToomas Soome // Secondary System Description Table
251*f334afcfSToomas Soome // and Persistent System Description Table,
252*f334afcfSToomas Soome // no definition needed as they are common description table header, the same with
253*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
254*f334afcfSToomas Soome //
255*f334afcfSToomas Soome #define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
256*f334afcfSToomas Soome #define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
257*f334afcfSToomas Soome 
258*f334afcfSToomas Soome ///
259*f334afcfSToomas Soome /// Multiple APIC Description Table header definition.  The rest of the table
260*f334afcfSToomas Soome /// must be defined in a platform specific manner.
261*f334afcfSToomas Soome ///
262*f334afcfSToomas Soome typedef struct {
263*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
264*f334afcfSToomas Soome   UINT32                         LocalApicAddress;
265*f334afcfSToomas Soome   UINT32                         Flags;
266*f334afcfSToomas Soome } EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
267*f334afcfSToomas Soome 
268*f334afcfSToomas Soome ///
269*f334afcfSToomas Soome /// MADT Revision (as defined in ACPI 4.0 spec.)
270*f334afcfSToomas Soome ///
271*f334afcfSToomas Soome #define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x03
272*f334afcfSToomas Soome 
273*f334afcfSToomas Soome ///
274*f334afcfSToomas Soome /// Multiple APIC Flags
275*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0.
276*f334afcfSToomas Soome ///
277*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCAT_COMPAT  BIT0
278*f334afcfSToomas Soome 
279*f334afcfSToomas Soome //
280*f334afcfSToomas Soome // Multiple APIC Description Table APIC structure types
281*f334afcfSToomas Soome // All other values between 0x0B an 0xFF are reserved and
282*f334afcfSToomas Soome // will be ignored by OSPM.
283*f334afcfSToomas Soome //
284*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC           0x00
285*f334afcfSToomas Soome #define EFI_ACPI_4_0_IO_APIC                        0x01
286*f334afcfSToomas Soome #define EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE      0x02
287*f334afcfSToomas Soome #define EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
288*f334afcfSToomas Soome #define EFI_ACPI_4_0_LOCAL_APIC_NMI                 0x04
289*f334afcfSToomas Soome #define EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
290*f334afcfSToomas Soome #define EFI_ACPI_4_0_IO_SAPIC                       0x06
291*f334afcfSToomas Soome #define EFI_ACPI_4_0_LOCAL_SAPIC                    0x07
292*f334afcfSToomas Soome #define EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES     0x08
293*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC         0x09
294*f334afcfSToomas Soome #define EFI_ACPI_4_0_LOCAL_X2APIC_NMI               0x0A
295*f334afcfSToomas Soome 
296*f334afcfSToomas Soome //
297*f334afcfSToomas Soome // APIC Structure Definitions
298*f334afcfSToomas Soome //
299*f334afcfSToomas Soome 
300*f334afcfSToomas Soome ///
301*f334afcfSToomas Soome /// Processor Local APIC Structure Definition
302*f334afcfSToomas Soome ///
303*f334afcfSToomas Soome typedef struct {
304*f334afcfSToomas Soome   UINT8     Type;
305*f334afcfSToomas Soome   UINT8     Length;
306*f334afcfSToomas Soome   UINT8     AcpiProcessorId;
307*f334afcfSToomas Soome   UINT8     ApicId;
308*f334afcfSToomas Soome   UINT32    Flags;
309*f334afcfSToomas Soome } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
310*f334afcfSToomas Soome 
311*f334afcfSToomas Soome ///
312*f334afcfSToomas Soome /// Local APIC Flags.  All other bits are reserved and must be 0.
313*f334afcfSToomas Soome ///
314*f334afcfSToomas Soome #define EFI_ACPI_4_0_LOCAL_APIC_ENABLED  BIT0
315*f334afcfSToomas Soome 
316*f334afcfSToomas Soome ///
317*f334afcfSToomas Soome /// IO APIC Structure
318*f334afcfSToomas Soome ///
319*f334afcfSToomas Soome typedef struct {
320*f334afcfSToomas Soome   UINT8     Type;
321*f334afcfSToomas Soome   UINT8     Length;
322*f334afcfSToomas Soome   UINT8     IoApicId;
323*f334afcfSToomas Soome   UINT8     Reserved;
324*f334afcfSToomas Soome   UINT32    IoApicAddress;
325*f334afcfSToomas Soome   UINT32    GlobalSystemInterruptBase;
326*f334afcfSToomas Soome } EFI_ACPI_4_0_IO_APIC_STRUCTURE;
327*f334afcfSToomas Soome 
328*f334afcfSToomas Soome ///
329*f334afcfSToomas Soome /// Interrupt Source Override Structure
330*f334afcfSToomas Soome ///
331*f334afcfSToomas Soome typedef struct {
332*f334afcfSToomas Soome   UINT8     Type;
333*f334afcfSToomas Soome   UINT8     Length;
334*f334afcfSToomas Soome   UINT8     Bus;
335*f334afcfSToomas Soome   UINT8     Source;
336*f334afcfSToomas Soome   UINT32    GlobalSystemInterrupt;
337*f334afcfSToomas Soome   UINT16    Flags;
338*f334afcfSToomas Soome } EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
339*f334afcfSToomas Soome 
340*f334afcfSToomas Soome ///
341*f334afcfSToomas Soome /// Platform Interrupt Sources Structure Definition
342*f334afcfSToomas Soome ///
343*f334afcfSToomas Soome typedef struct {
344*f334afcfSToomas Soome   UINT8     Type;
345*f334afcfSToomas Soome   UINT8     Length;
346*f334afcfSToomas Soome   UINT16    Flags;
347*f334afcfSToomas Soome   UINT8     InterruptType;
348*f334afcfSToomas Soome   UINT8     ProcessorId;
349*f334afcfSToomas Soome   UINT8     ProcessorEid;
350*f334afcfSToomas Soome   UINT8     IoSapicVector;
351*f334afcfSToomas Soome   UINT32    GlobalSystemInterrupt;
352*f334afcfSToomas Soome   UINT32    PlatformInterruptSourceFlags;
353*f334afcfSToomas Soome   UINT8     CpeiProcessorOverride;
354*f334afcfSToomas Soome   UINT8     Reserved[31];
355*f334afcfSToomas Soome } EFI_ACPI_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
356*f334afcfSToomas Soome 
357*f334afcfSToomas Soome //
358*f334afcfSToomas Soome // MPS INTI flags.
359*f334afcfSToomas Soome // All other bits are reserved and must be set to 0.
360*f334afcfSToomas Soome //
361*f334afcfSToomas Soome #define EFI_ACPI_4_0_POLARITY      (3 << 0)
362*f334afcfSToomas Soome #define EFI_ACPI_4_0_TRIGGER_MODE  (3 << 2)
363*f334afcfSToomas Soome 
364*f334afcfSToomas Soome ///
365*f334afcfSToomas Soome /// Non-Maskable Interrupt Source Structure
366*f334afcfSToomas Soome ///
367*f334afcfSToomas Soome typedef struct {
368*f334afcfSToomas Soome   UINT8     Type;
369*f334afcfSToomas Soome   UINT8     Length;
370*f334afcfSToomas Soome   UINT16    Flags;
371*f334afcfSToomas Soome   UINT32    GlobalSystemInterrupt;
372*f334afcfSToomas Soome } EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
373*f334afcfSToomas Soome 
374*f334afcfSToomas Soome ///
375*f334afcfSToomas Soome /// Local APIC NMI Structure
376*f334afcfSToomas Soome ///
377*f334afcfSToomas Soome typedef struct {
378*f334afcfSToomas Soome   UINT8     Type;
379*f334afcfSToomas Soome   UINT8     Length;
380*f334afcfSToomas Soome   UINT8     AcpiProcessorId;
381*f334afcfSToomas Soome   UINT16    Flags;
382*f334afcfSToomas Soome   UINT8     LocalApicLint;
383*f334afcfSToomas Soome } EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE;
384*f334afcfSToomas Soome 
385*f334afcfSToomas Soome ///
386*f334afcfSToomas Soome /// Local APIC Address Override Structure
387*f334afcfSToomas Soome ///
388*f334afcfSToomas Soome typedef struct {
389*f334afcfSToomas Soome   UINT8     Type;
390*f334afcfSToomas Soome   UINT8     Length;
391*f334afcfSToomas Soome   UINT16    Reserved;
392*f334afcfSToomas Soome   UINT64    LocalApicAddress;
393*f334afcfSToomas Soome } EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
394*f334afcfSToomas Soome 
395*f334afcfSToomas Soome ///
396*f334afcfSToomas Soome /// IO SAPIC Structure
397*f334afcfSToomas Soome ///
398*f334afcfSToomas Soome typedef struct {
399*f334afcfSToomas Soome   UINT8     Type;
400*f334afcfSToomas Soome   UINT8     Length;
401*f334afcfSToomas Soome   UINT8     IoApicId;
402*f334afcfSToomas Soome   UINT8     Reserved;
403*f334afcfSToomas Soome   UINT32    GlobalSystemInterruptBase;
404*f334afcfSToomas Soome   UINT64    IoSapicAddress;
405*f334afcfSToomas Soome } EFI_ACPI_4_0_IO_SAPIC_STRUCTURE;
406*f334afcfSToomas Soome 
407*f334afcfSToomas Soome ///
408*f334afcfSToomas Soome /// Local SAPIC Structure
409*f334afcfSToomas Soome /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
410*f334afcfSToomas Soome ///
411*f334afcfSToomas Soome typedef struct {
412*f334afcfSToomas Soome   UINT8     Type;
413*f334afcfSToomas Soome   UINT8     Length;
414*f334afcfSToomas Soome   UINT8     AcpiProcessorId;
415*f334afcfSToomas Soome   UINT8     LocalSapicId;
416*f334afcfSToomas Soome   UINT8     LocalSapicEid;
417*f334afcfSToomas Soome   UINT8     Reserved[3];
418*f334afcfSToomas Soome   UINT32    Flags;
419*f334afcfSToomas Soome   UINT32    ACPIProcessorUIDValue;
420*f334afcfSToomas Soome } EFI_ACPI_4_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
421*f334afcfSToomas Soome 
422*f334afcfSToomas Soome ///
423*f334afcfSToomas Soome /// Platform Interrupt Sources Structure
424*f334afcfSToomas Soome ///
425*f334afcfSToomas Soome typedef struct {
426*f334afcfSToomas Soome   UINT8     Type;
427*f334afcfSToomas Soome   UINT8     Length;
428*f334afcfSToomas Soome   UINT16    Flags;
429*f334afcfSToomas Soome   UINT8     InterruptType;
430*f334afcfSToomas Soome   UINT8     ProcessorId;
431*f334afcfSToomas Soome   UINT8     ProcessorEid;
432*f334afcfSToomas Soome   UINT8     IoSapicVector;
433*f334afcfSToomas Soome   UINT32    GlobalSystemInterrupt;
434*f334afcfSToomas Soome   UINT32    PlatformInterruptSourceFlags;
435*f334afcfSToomas Soome } EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
436*f334afcfSToomas Soome 
437*f334afcfSToomas Soome ///
438*f334afcfSToomas Soome /// Platform Interrupt Source Flags.
439*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0.
440*f334afcfSToomas Soome ///
441*f334afcfSToomas Soome #define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE  BIT0
442*f334afcfSToomas Soome 
443*f334afcfSToomas Soome ///
444*f334afcfSToomas Soome /// Processor Local x2APIC Structure Definition
445*f334afcfSToomas Soome ///
446*f334afcfSToomas Soome typedef struct {
447*f334afcfSToomas Soome   UINT8     Type;
448*f334afcfSToomas Soome   UINT8     Length;
449*f334afcfSToomas Soome   UINT8     Reserved[2];
450*f334afcfSToomas Soome   UINT32    X2ApicId;
451*f334afcfSToomas Soome   UINT32    Flags;
452*f334afcfSToomas Soome   UINT32    AcpiProcessorUid;
453*f334afcfSToomas Soome } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
454*f334afcfSToomas Soome 
455*f334afcfSToomas Soome ///
456*f334afcfSToomas Soome /// Local x2APIC NMI Structure
457*f334afcfSToomas Soome ///
458*f334afcfSToomas Soome typedef struct {
459*f334afcfSToomas Soome   UINT8     Type;
460*f334afcfSToomas Soome   UINT8     Length;
461*f334afcfSToomas Soome   UINT16    Flags;
462*f334afcfSToomas Soome   UINT32    AcpiProcessorUid;
463*f334afcfSToomas Soome   UINT8     LocalX2ApicLint;
464*f334afcfSToomas Soome   UINT8     Reserved[3];
465*f334afcfSToomas Soome } EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE;
466*f334afcfSToomas Soome 
467*f334afcfSToomas Soome ///
468*f334afcfSToomas Soome /// Smart Battery Description Table (SBST)
469*f334afcfSToomas Soome ///
470*f334afcfSToomas Soome typedef struct {
471*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
472*f334afcfSToomas Soome   UINT32                         WarningEnergyLevel;
473*f334afcfSToomas Soome   UINT32                         LowEnergyLevel;
474*f334afcfSToomas Soome   UINT32                         CriticalEnergyLevel;
475*f334afcfSToomas Soome } EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE;
476*f334afcfSToomas Soome 
477*f334afcfSToomas Soome ///
478*f334afcfSToomas Soome /// SBST Version (as defined in ACPI 4.0 spec.)
479*f334afcfSToomas Soome ///
480*f334afcfSToomas Soome #define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
481*f334afcfSToomas Soome 
482*f334afcfSToomas Soome ///
483*f334afcfSToomas Soome /// Embedded Controller Boot Resources Table (ECDT)
484*f334afcfSToomas Soome /// The table is followed by a null terminated ASCII string that contains
485*f334afcfSToomas Soome /// a fully qualified reference to the name space object.
486*f334afcfSToomas Soome ///
487*f334afcfSToomas Soome typedef struct {
488*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER               Header;
489*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
490*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    EcData;
491*f334afcfSToomas Soome   UINT32                                    Uid;
492*f334afcfSToomas Soome   UINT8                                     GpeBit;
493*f334afcfSToomas Soome } EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
494*f334afcfSToomas Soome 
495*f334afcfSToomas Soome ///
496*f334afcfSToomas Soome /// ECDT Version (as defined in ACPI 4.0 spec.)
497*f334afcfSToomas Soome ///
498*f334afcfSToomas Soome #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
499*f334afcfSToomas Soome 
500*f334afcfSToomas Soome ///
501*f334afcfSToomas Soome /// System Resource Affinity Table (SRAT.  The rest of the table
502*f334afcfSToomas Soome /// must be defined in a platform specific manner.
503*f334afcfSToomas Soome ///
504*f334afcfSToomas Soome typedef struct {
505*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
506*f334afcfSToomas Soome   UINT32                         Reserved1; ///< Must be set to 1
507*f334afcfSToomas Soome   UINT64                         Reserved2;
508*f334afcfSToomas Soome } EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
509*f334afcfSToomas Soome 
510*f334afcfSToomas Soome ///
511*f334afcfSToomas Soome /// SRAT Version (as defined in ACPI 4.0 spec.)
512*f334afcfSToomas Soome ///
513*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x03
514*f334afcfSToomas Soome 
515*f334afcfSToomas Soome //
516*f334afcfSToomas Soome // SRAT structure types.
517*f334afcfSToomas Soome // All other values between 0x03 an 0xFF are reserved and
518*f334afcfSToomas Soome // will be ignored by OSPM.
519*f334afcfSToomas Soome //
520*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
521*f334afcfSToomas Soome #define EFI_ACPI_4_0_MEMORY_AFFINITY                      0x01
522*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY      0x02
523*f334afcfSToomas Soome 
524*f334afcfSToomas Soome ///
525*f334afcfSToomas Soome /// Processor Local APIC/SAPIC Affinity Structure Definition
526*f334afcfSToomas Soome ///
527*f334afcfSToomas Soome typedef struct {
528*f334afcfSToomas Soome   UINT8     Type;
529*f334afcfSToomas Soome   UINT8     Length;
530*f334afcfSToomas Soome   UINT8     ProximityDomain7To0;
531*f334afcfSToomas Soome   UINT8     ApicId;
532*f334afcfSToomas Soome   UINT32    Flags;
533*f334afcfSToomas Soome   UINT8     LocalSapicEid;
534*f334afcfSToomas Soome   UINT8     ProximityDomain31To8[3];
535*f334afcfSToomas Soome   UINT32    ClockDomain;
536*f334afcfSToomas Soome } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
537*f334afcfSToomas Soome 
538*f334afcfSToomas Soome ///
539*f334afcfSToomas Soome /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
540*f334afcfSToomas Soome ///
541*f334afcfSToomas Soome #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
542*f334afcfSToomas Soome 
543*f334afcfSToomas Soome ///
544*f334afcfSToomas Soome /// Memory Affinity Structure Definition
545*f334afcfSToomas Soome ///
546*f334afcfSToomas Soome typedef struct {
547*f334afcfSToomas Soome   UINT8     Type;
548*f334afcfSToomas Soome   UINT8     Length;
549*f334afcfSToomas Soome   UINT32    ProximityDomain;
550*f334afcfSToomas Soome   UINT16    Reserved1;
551*f334afcfSToomas Soome   UINT32    AddressBaseLow;
552*f334afcfSToomas Soome   UINT32    AddressBaseHigh;
553*f334afcfSToomas Soome   UINT32    LengthLow;
554*f334afcfSToomas Soome   UINT32    LengthHigh;
555*f334afcfSToomas Soome   UINT32    Reserved2;
556*f334afcfSToomas Soome   UINT32    Flags;
557*f334afcfSToomas Soome   UINT64    Reserved3;
558*f334afcfSToomas Soome } EFI_ACPI_4_0_MEMORY_AFFINITY_STRUCTURE;
559*f334afcfSToomas Soome 
560*f334afcfSToomas Soome //
561*f334afcfSToomas Soome // Memory Flags.  All other bits are reserved and must be 0.
562*f334afcfSToomas Soome //
563*f334afcfSToomas Soome #define EFI_ACPI_4_0_MEMORY_ENABLED        (1 << 0)
564*f334afcfSToomas Soome #define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE  (1 << 1)
565*f334afcfSToomas Soome #define EFI_ACPI_4_0_MEMORY_NONVOLATILE    (1 << 2)
566*f334afcfSToomas Soome 
567*f334afcfSToomas Soome ///
568*f334afcfSToomas Soome /// Processor Local x2APIC Affinity Structure Definition
569*f334afcfSToomas Soome ///
570*f334afcfSToomas Soome typedef struct {
571*f334afcfSToomas Soome   UINT8     Type;
572*f334afcfSToomas Soome   UINT8     Length;
573*f334afcfSToomas Soome   UINT8     Reserved1[2];
574*f334afcfSToomas Soome   UINT32    ProximityDomain;
575*f334afcfSToomas Soome   UINT32    X2ApicId;
576*f334afcfSToomas Soome   UINT32    Flags;
577*f334afcfSToomas Soome   UINT32    ClockDomain;
578*f334afcfSToomas Soome   UINT8     Reserved2[4];
579*f334afcfSToomas Soome } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
580*f334afcfSToomas Soome 
581*f334afcfSToomas Soome ///
582*f334afcfSToomas Soome /// System Locality Distance Information Table (SLIT).
583*f334afcfSToomas Soome /// The rest of the table is a matrix.
584*f334afcfSToomas Soome ///
585*f334afcfSToomas Soome typedef struct {
586*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
587*f334afcfSToomas Soome   UINT64                         NumberOfSystemLocalities;
588*f334afcfSToomas Soome } EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
589*f334afcfSToomas Soome 
590*f334afcfSToomas Soome ///
591*f334afcfSToomas Soome /// SLIT Version (as defined in ACPI 4.0 spec.)
592*f334afcfSToomas Soome ///
593*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
594*f334afcfSToomas Soome 
595*f334afcfSToomas Soome ///
596*f334afcfSToomas Soome /// Corrected Platform Error Polling Table (CPEP)
597*f334afcfSToomas Soome ///
598*f334afcfSToomas Soome typedef struct {
599*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
600*f334afcfSToomas Soome   UINT8                          Reserved[8];
601*f334afcfSToomas Soome } EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
602*f334afcfSToomas Soome 
603*f334afcfSToomas Soome ///
604*f334afcfSToomas Soome /// CPEP Version (as defined in ACPI 4.0 spec.)
605*f334afcfSToomas Soome ///
606*f334afcfSToomas Soome #define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION  0x01
607*f334afcfSToomas Soome 
608*f334afcfSToomas Soome //
609*f334afcfSToomas Soome // CPEP processor structure types.
610*f334afcfSToomas Soome //
611*f334afcfSToomas Soome #define EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC  0x00
612*f334afcfSToomas Soome 
613*f334afcfSToomas Soome ///
614*f334afcfSToomas Soome /// Corrected Platform Error Polling Processor Structure Definition
615*f334afcfSToomas Soome ///
616*f334afcfSToomas Soome typedef struct {
617*f334afcfSToomas Soome   UINT8     Type;
618*f334afcfSToomas Soome   UINT8     Length;
619*f334afcfSToomas Soome   UINT8     ProcessorId;
620*f334afcfSToomas Soome   UINT8     ProcessorEid;
621*f334afcfSToomas Soome   UINT32    PollingInterval;
622*f334afcfSToomas Soome } EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
623*f334afcfSToomas Soome 
624*f334afcfSToomas Soome ///
625*f334afcfSToomas Soome /// Maximum System Characteristics Table (MSCT)
626*f334afcfSToomas Soome ///
627*f334afcfSToomas Soome typedef struct {
628*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
629*f334afcfSToomas Soome   UINT32                         OffsetProxDomInfo;
630*f334afcfSToomas Soome   UINT32                         MaximumNumberOfProximityDomains;
631*f334afcfSToomas Soome   UINT32                         MaximumNumberOfClockDomains;
632*f334afcfSToomas Soome   UINT64                         MaximumPhysicalAddress;
633*f334afcfSToomas Soome } EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
634*f334afcfSToomas Soome 
635*f334afcfSToomas Soome ///
636*f334afcfSToomas Soome /// MSCT Version (as defined in ACPI 4.0 spec.)
637*f334afcfSToomas Soome ///
638*f334afcfSToomas Soome #define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION  0x01
639*f334afcfSToomas Soome 
640*f334afcfSToomas Soome ///
641*f334afcfSToomas Soome /// Maximum Proximity Domain Information Structure Definition
642*f334afcfSToomas Soome ///
643*f334afcfSToomas Soome typedef struct {
644*f334afcfSToomas Soome   UINT8     Revision;
645*f334afcfSToomas Soome   UINT8     Length;
646*f334afcfSToomas Soome   UINT32    ProximityDomainRangeLow;
647*f334afcfSToomas Soome   UINT32    ProximityDomainRangeHigh;
648*f334afcfSToomas Soome   UINT32    MaximumProcessorCapacity;
649*f334afcfSToomas Soome   UINT64    MaximumMemoryCapacity;
650*f334afcfSToomas Soome } EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
651*f334afcfSToomas Soome 
652*f334afcfSToomas Soome ///
653*f334afcfSToomas Soome /// Boot Error Record Table (BERT)
654*f334afcfSToomas Soome ///
655*f334afcfSToomas Soome typedef struct {
656*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
657*f334afcfSToomas Soome   UINT32                         BootErrorRegionLength;
658*f334afcfSToomas Soome   UINT64                         BootErrorRegion;
659*f334afcfSToomas Soome } EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER;
660*f334afcfSToomas Soome 
661*f334afcfSToomas Soome ///
662*f334afcfSToomas Soome /// BERT Version (as defined in ACPI 4.0 spec.)
663*f334afcfSToomas Soome ///
664*f334afcfSToomas Soome #define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION  0x01
665*f334afcfSToomas Soome 
666*f334afcfSToomas Soome ///
667*f334afcfSToomas Soome /// Boot Error Region Block Status Definition
668*f334afcfSToomas Soome ///
669*f334afcfSToomas Soome typedef struct {
670*f334afcfSToomas Soome   UINT32    UncorrectableErrorValid     : 1;
671*f334afcfSToomas Soome   UINT32    CorrectableErrorValid       : 1;
672*f334afcfSToomas Soome   UINT32    MultipleUncorrectableErrors : 1;
673*f334afcfSToomas Soome   UINT32    MultipleCorrectableErrors   : 1;
674*f334afcfSToomas Soome   UINT32    ErrorDataEntryCount         : 10;
675*f334afcfSToomas Soome   UINT32    Reserved                    : 18;
676*f334afcfSToomas Soome } EFI_ACPI_4_0_ERROR_BLOCK_STATUS;
677*f334afcfSToomas Soome 
678*f334afcfSToomas Soome ///
679*f334afcfSToomas Soome /// Boot Error Region Definition
680*f334afcfSToomas Soome ///
681*f334afcfSToomas Soome typedef struct {
682*f334afcfSToomas Soome   EFI_ACPI_4_0_ERROR_BLOCK_STATUS    BlockStatus;
683*f334afcfSToomas Soome   UINT32                             RawDataOffset;
684*f334afcfSToomas Soome   UINT32                             RawDataLength;
685*f334afcfSToomas Soome   UINT32                             DataLength;
686*f334afcfSToomas Soome   UINT32                             ErrorSeverity;
687*f334afcfSToomas Soome } EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE;
688*f334afcfSToomas Soome 
689*f334afcfSToomas Soome //
690*f334afcfSToomas Soome // Boot Error Severity types
691*f334afcfSToomas Soome //
692*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE  0x00
693*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SEVERITY_RECOVERABLE  0x00
694*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL        0x01
695*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED    0x02
696*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SEVERITY_NONE         0x03
697*f334afcfSToomas Soome 
698*f334afcfSToomas Soome ///
699*f334afcfSToomas Soome /// Generic Error Data Entry Definition
700*f334afcfSToomas Soome ///
701*f334afcfSToomas Soome typedef struct {
702*f334afcfSToomas Soome   UINT8     SectionType[16];
703*f334afcfSToomas Soome   UINT32    ErrorSeverity;
704*f334afcfSToomas Soome   UINT16    Revision;
705*f334afcfSToomas Soome   UINT8     ValidationBits;
706*f334afcfSToomas Soome   UINT8     Flags;
707*f334afcfSToomas Soome   UINT32    ErrorDataLength;
708*f334afcfSToomas Soome   UINT8     FruId[16];
709*f334afcfSToomas Soome   UINT8     FruText[20];
710*f334afcfSToomas Soome } EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
711*f334afcfSToomas Soome 
712*f334afcfSToomas Soome ///
713*f334afcfSToomas Soome /// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.)
714*f334afcfSToomas Soome ///
715*f334afcfSToomas Soome #define EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_REVISION  0x0201
716*f334afcfSToomas Soome 
717*f334afcfSToomas Soome ///
718*f334afcfSToomas Soome /// HEST - Hardware Error Source Table
719*f334afcfSToomas Soome ///
720*f334afcfSToomas Soome typedef struct {
721*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
722*f334afcfSToomas Soome   UINT32                         ErrorSourceCount;
723*f334afcfSToomas Soome } EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
724*f334afcfSToomas Soome 
725*f334afcfSToomas Soome ///
726*f334afcfSToomas Soome /// HEST Version (as defined in ACPI 4.0 spec.)
727*f334afcfSToomas Soome ///
728*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION  0x01
729*f334afcfSToomas Soome 
730*f334afcfSToomas Soome //
731*f334afcfSToomas Soome // Error Source structure types.
732*f334afcfSToomas Soome //
733*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION  0x00
734*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK  0x01
735*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR                0x02
736*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER                  0x06
737*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER                     0x07
738*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER                     0x08
739*f334afcfSToomas Soome #define EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR                     0x09
740*f334afcfSToomas Soome 
741*f334afcfSToomas Soome //
742*f334afcfSToomas Soome // Error Source structure flags.
743*f334afcfSToomas Soome //
744*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST  (1 << 0)
745*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL          (1 << 1)
746*f334afcfSToomas Soome 
747*f334afcfSToomas Soome ///
748*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Exception Structure Definition
749*f334afcfSToomas Soome ///
750*f334afcfSToomas Soome typedef struct {
751*f334afcfSToomas Soome   UINT16    Type;
752*f334afcfSToomas Soome   UINT16    SourceId;
753*f334afcfSToomas Soome   UINT8     Reserved0[2];
754*f334afcfSToomas Soome   UINT8     Flags;
755*f334afcfSToomas Soome   UINT8     Enabled;
756*f334afcfSToomas Soome   UINT32    NumberOfRecordsToPreAllocate;
757*f334afcfSToomas Soome   UINT32    MaxSectionsPerRecord;
758*f334afcfSToomas Soome   UINT64    GlobalCapabilityInitData;
759*f334afcfSToomas Soome   UINT64    GlobalControlInitData;
760*f334afcfSToomas Soome   UINT8     NumberOfHardwareBanks;
761*f334afcfSToomas Soome   UINT8     Reserved1[7];
762*f334afcfSToomas Soome } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
763*f334afcfSToomas Soome 
764*f334afcfSToomas Soome ///
765*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure Definition
766*f334afcfSToomas Soome ///
767*f334afcfSToomas Soome typedef struct {
768*f334afcfSToomas Soome   UINT8     BankNumber;
769*f334afcfSToomas Soome   UINT8     ClearStatusOnInitialization;
770*f334afcfSToomas Soome   UINT8     StatusDataFormat;
771*f334afcfSToomas Soome   UINT8     Reserved0;
772*f334afcfSToomas Soome   UINT32    ControlRegisterMsrAddress;
773*f334afcfSToomas Soome   UINT64    ControlInitData;
774*f334afcfSToomas Soome   UINT32    StatusRegisterMsrAddress;
775*f334afcfSToomas Soome   UINT32    AddressRegisterMsrAddress;
776*f334afcfSToomas Soome   UINT32    MiscRegisterMsrAddress;
777*f334afcfSToomas Soome } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
778*f334afcfSToomas Soome 
779*f334afcfSToomas Soome ///
780*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure MCA data format
781*f334afcfSToomas Soome ///
782*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32     0x00
783*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64  0x01
784*f334afcfSToomas Soome #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64    0x02
785*f334afcfSToomas Soome 
786*f334afcfSToomas Soome //
787*f334afcfSToomas Soome // Hardware Error Notification types. All other values are reserved
788*f334afcfSToomas Soome //
789*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED              0x00
790*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT  0x01
791*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT     0x02
792*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI                 0x03
793*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI                 0x04
794*f334afcfSToomas Soome 
795*f334afcfSToomas Soome ///
796*f334afcfSToomas Soome /// Hardware Error Notification Configuration Write Enable Structure Definition
797*f334afcfSToomas Soome ///
798*f334afcfSToomas Soome typedef struct {
799*f334afcfSToomas Soome   UINT16    Type                           : 1;
800*f334afcfSToomas Soome   UINT16    PollInterval                   : 1;
801*f334afcfSToomas Soome   UINT16    SwitchToPollingThresholdValue  : 1;
802*f334afcfSToomas Soome   UINT16    SwitchToPollingThresholdWindow : 1;
803*f334afcfSToomas Soome   UINT16    ErrorThresholdValue            : 1;
804*f334afcfSToomas Soome   UINT16    ErrorThresholdWindow           : 1;
805*f334afcfSToomas Soome   UINT16    Reserved                       : 10;
806*f334afcfSToomas Soome } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
807*f334afcfSToomas Soome 
808*f334afcfSToomas Soome ///
809*f334afcfSToomas Soome /// Hardware Error Notification Structure Definition
810*f334afcfSToomas Soome ///
811*f334afcfSToomas Soome typedef struct {
812*f334afcfSToomas Soome   UINT8                                                                            Type;
813*f334afcfSToomas Soome   UINT8                                                                            Length;
814*f334afcfSToomas Soome   EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE    ConfigurationWriteEnable;
815*f334afcfSToomas Soome   UINT32                                                                           PollInterval;
816*f334afcfSToomas Soome   UINT32                                                                           Vector;
817*f334afcfSToomas Soome   UINT32                                                                           SwitchToPollingThresholdValue;
818*f334afcfSToomas Soome   UINT32                                                                           SwitchToPollingThresholdWindow;
819*f334afcfSToomas Soome   UINT32                                                                           ErrorThresholdValue;
820*f334afcfSToomas Soome   UINT32                                                                           ErrorThresholdWindow;
821*f334afcfSToomas Soome } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
822*f334afcfSToomas Soome 
823*f334afcfSToomas Soome ///
824*f334afcfSToomas Soome /// IA-32 Architecture Corrected Machine Check Structure Definition
825*f334afcfSToomas Soome ///
826*f334afcfSToomas Soome typedef struct {
827*f334afcfSToomas Soome   UINT16                                                Type;
828*f334afcfSToomas Soome   UINT16                                                SourceId;
829*f334afcfSToomas Soome   UINT8                                                 Reserved0[2];
830*f334afcfSToomas Soome   UINT8                                                 Flags;
831*f334afcfSToomas Soome   UINT8                                                 Enabled;
832*f334afcfSToomas Soome   UINT32                                                NumberOfRecordsToPreAllocate;
833*f334afcfSToomas Soome   UINT32                                                MaxSectionsPerRecord;
834*f334afcfSToomas Soome   EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
835*f334afcfSToomas Soome   UINT8                                                 NumberOfHardwareBanks;
836*f334afcfSToomas Soome   UINT8                                                 Reserved1[3];
837*f334afcfSToomas Soome } EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
838*f334afcfSToomas Soome 
839*f334afcfSToomas Soome ///
840*f334afcfSToomas Soome /// IA-32 Architecture NMI Error Structure Definition
841*f334afcfSToomas Soome ///
842*f334afcfSToomas Soome typedef struct {
843*f334afcfSToomas Soome   UINT16    Type;
844*f334afcfSToomas Soome   UINT16    SourceId;
845*f334afcfSToomas Soome   UINT8     Reserved0[2];
846*f334afcfSToomas Soome   UINT32    NumberOfRecordsToPreAllocate;
847*f334afcfSToomas Soome   UINT32    MaxSectionsPerRecord;
848*f334afcfSToomas Soome   UINT32    MaxRawDataLength;
849*f334afcfSToomas Soome } EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
850*f334afcfSToomas Soome 
851*f334afcfSToomas Soome ///
852*f334afcfSToomas Soome /// PCI Express Root Port AER Structure Definition
853*f334afcfSToomas Soome ///
854*f334afcfSToomas Soome typedef struct {
855*f334afcfSToomas Soome   UINT16    Type;
856*f334afcfSToomas Soome   UINT16    SourceId;
857*f334afcfSToomas Soome   UINT8     Reserved0[2];
858*f334afcfSToomas Soome   UINT8     Flags;
859*f334afcfSToomas Soome   UINT8     Enabled;
860*f334afcfSToomas Soome   UINT32    NumberOfRecordsToPreAllocate;
861*f334afcfSToomas Soome   UINT32    MaxSectionsPerRecord;
862*f334afcfSToomas Soome   UINT32    Bus;
863*f334afcfSToomas Soome   UINT16    Device;
864*f334afcfSToomas Soome   UINT16    Function;
865*f334afcfSToomas Soome   UINT16    DeviceControl;
866*f334afcfSToomas Soome   UINT8     Reserved1[2];
867*f334afcfSToomas Soome   UINT32    UncorrectableErrorMask;
868*f334afcfSToomas Soome   UINT32    UncorrectableErrorSeverity;
869*f334afcfSToomas Soome   UINT32    CorrectableErrorMask;
870*f334afcfSToomas Soome   UINT32    AdvancedErrorCapabilitiesAndControl;
871*f334afcfSToomas Soome   UINT32    RootErrorCommand;
872*f334afcfSToomas Soome } EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
873*f334afcfSToomas Soome 
874*f334afcfSToomas Soome ///
875*f334afcfSToomas Soome /// PCI Express Device AER Structure Definition
876*f334afcfSToomas Soome ///
877*f334afcfSToomas Soome typedef struct {
878*f334afcfSToomas Soome   UINT16    Type;
879*f334afcfSToomas Soome   UINT16    SourceId;
880*f334afcfSToomas Soome   UINT8     Reserved0[2];
881*f334afcfSToomas Soome   UINT8     Flags;
882*f334afcfSToomas Soome   UINT8     Enabled;
883*f334afcfSToomas Soome   UINT32    NumberOfRecordsToPreAllocate;
884*f334afcfSToomas Soome   UINT32    MaxSectionsPerRecord;
885*f334afcfSToomas Soome   UINT32    Bus;
886*f334afcfSToomas Soome   UINT16    Device;
887*f334afcfSToomas Soome   UINT16    Function;
888*f334afcfSToomas Soome   UINT16    DeviceControl;
889*f334afcfSToomas Soome   UINT8     Reserved1[2];
890*f334afcfSToomas Soome   UINT32    UncorrectableErrorMask;
891*f334afcfSToomas Soome   UINT32    UncorrectableErrorSeverity;
892*f334afcfSToomas Soome   UINT32    CorrectableErrorMask;
893*f334afcfSToomas Soome   UINT32    AdvancedErrorCapabilitiesAndControl;
894*f334afcfSToomas Soome } EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
895*f334afcfSToomas Soome 
896*f334afcfSToomas Soome ///
897*f334afcfSToomas Soome /// PCI Express Bridge AER Structure Definition
898*f334afcfSToomas Soome ///
899*f334afcfSToomas Soome typedef struct {
900*f334afcfSToomas Soome   UINT16    Type;
901*f334afcfSToomas Soome   UINT16    SourceId;
902*f334afcfSToomas Soome   UINT8     Reserved0[2];
903*f334afcfSToomas Soome   UINT8     Flags;
904*f334afcfSToomas Soome   UINT8     Enabled;
905*f334afcfSToomas Soome   UINT32    NumberOfRecordsToPreAllocate;
906*f334afcfSToomas Soome   UINT32    MaxSectionsPerRecord;
907*f334afcfSToomas Soome   UINT32    Bus;
908*f334afcfSToomas Soome   UINT16    Device;
909*f334afcfSToomas Soome   UINT16    Function;
910*f334afcfSToomas Soome   UINT16    DeviceControl;
911*f334afcfSToomas Soome   UINT8     Reserved1[2];
912*f334afcfSToomas Soome   UINT32    UncorrectableErrorMask;
913*f334afcfSToomas Soome   UINT32    UncorrectableErrorSeverity;
914*f334afcfSToomas Soome   UINT32    CorrectableErrorMask;
915*f334afcfSToomas Soome   UINT32    AdvancedErrorCapabilitiesAndControl;
916*f334afcfSToomas Soome   UINT32    SecondaryUncorrectableErrorMask;
917*f334afcfSToomas Soome   UINT32    SecondaryUncorrectableErrorSeverity;
918*f334afcfSToomas Soome   UINT32    SecondaryAdvancedErrorCapabilitiesAndControl;
919*f334afcfSToomas Soome } EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
920*f334afcfSToomas Soome 
921*f334afcfSToomas Soome ///
922*f334afcfSToomas Soome /// Generic Hardware Error Source Structure Definition
923*f334afcfSToomas Soome ///
924*f334afcfSToomas Soome typedef struct {
925*f334afcfSToomas Soome   UINT16                                                Type;
926*f334afcfSToomas Soome   UINT16                                                SourceId;
927*f334afcfSToomas Soome   UINT16                                                RelatedSourceId;
928*f334afcfSToomas Soome   UINT8                                                 Flags;
929*f334afcfSToomas Soome   UINT8                                                 Enabled;
930*f334afcfSToomas Soome   UINT32                                                NumberOfRecordsToPreAllocate;
931*f334afcfSToomas Soome   UINT32                                                MaxSectionsPerRecord;
932*f334afcfSToomas Soome   UINT32                                                MaxRawDataLength;
933*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE                ErrorStatusAddress;
934*f334afcfSToomas Soome   EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
935*f334afcfSToomas Soome   UINT32                                                ErrorStatusBlockLength;
936*f334afcfSToomas Soome } EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
937*f334afcfSToomas Soome 
938*f334afcfSToomas Soome ///
939*f334afcfSToomas Soome /// Generic Error Status Definition
940*f334afcfSToomas Soome ///
941*f334afcfSToomas Soome typedef struct {
942*f334afcfSToomas Soome   EFI_ACPI_4_0_ERROR_BLOCK_STATUS    BlockStatus;
943*f334afcfSToomas Soome   UINT32                             RawDataOffset;
944*f334afcfSToomas Soome   UINT32                             RawDataLength;
945*f334afcfSToomas Soome   UINT32                             DataLength;
946*f334afcfSToomas Soome   UINT32                             ErrorSeverity;
947*f334afcfSToomas Soome } EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE;
948*f334afcfSToomas Soome 
949*f334afcfSToomas Soome ///
950*f334afcfSToomas Soome /// ERST - Error Record Serialization Table
951*f334afcfSToomas Soome ///
952*f334afcfSToomas Soome typedef struct {
953*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
954*f334afcfSToomas Soome   UINT32                         SerializationHeaderSize;
955*f334afcfSToomas Soome   UINT8                          Reserved0[4];
956*f334afcfSToomas Soome   UINT32                         InstructionEntryCount;
957*f334afcfSToomas Soome } EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
958*f334afcfSToomas Soome 
959*f334afcfSToomas Soome ///
960*f334afcfSToomas Soome /// ERST Version (as defined in ACPI 4.0 spec.)
961*f334afcfSToomas Soome ///
962*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION  0x01
963*f334afcfSToomas Soome 
964*f334afcfSToomas Soome ///
965*f334afcfSToomas Soome /// ERST Serialization Actions
966*f334afcfSToomas Soome ///
967*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION                   0x00
968*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION                    0x01
969*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION                   0x02
970*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_END_OPERATION                           0x03
971*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET                       0x04
972*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION                       0x05
973*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS                       0x06
974*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS                      0x07
975*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER                   0x08
976*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER                   0x09
977*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT                        0x0A
978*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION             0x0B
979*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE             0x0D
980*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH      0x0E
981*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES  0x0F
982*f334afcfSToomas Soome 
983*f334afcfSToomas Soome ///
984*f334afcfSToomas Soome /// ERST Action Command Status
985*f334afcfSToomas Soome ///
986*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS                 0x00
987*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE        0x01
988*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE  0x02
989*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_FAILED                  0x03
990*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY      0x04
991*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND        0x05
992*f334afcfSToomas Soome 
993*f334afcfSToomas Soome ///
994*f334afcfSToomas Soome /// ERST Serialization Instructions
995*f334afcfSToomas Soome ///
996*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_READ_REGISTER                  0x00
997*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE            0x01
998*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_WRITE_REGISTER                 0x02
999*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE           0x03
1000*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_NOOP                           0x04
1001*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_LOAD_VAR1                      0x05
1002*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_LOAD_VAR2                      0x06
1003*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_STORE_VAR1                     0x07
1004*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_ADD                            0x08
1005*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SUBTRACT                       0x09
1006*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_ADD_VALUE                      0x0A
1007*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE                 0x0B
1008*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_STALL                          0x0C
1009*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE               0x0D
1010*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE  0x0E
1011*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_GOTO                           0x0F
1012*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE           0x10
1013*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE           0x11
1014*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_MOVE_DATA                      0x12
1015*f334afcfSToomas Soome 
1016*f334afcfSToomas Soome ///
1017*f334afcfSToomas Soome /// ERST Instruction Flags
1018*f334afcfSToomas Soome ///
1019*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER  0x01
1020*f334afcfSToomas Soome 
1021*f334afcfSToomas Soome ///
1022*f334afcfSToomas Soome /// ERST Serialization Instruction Entry
1023*f334afcfSToomas Soome ///
1024*f334afcfSToomas Soome typedef struct {
1025*f334afcfSToomas Soome   UINT8                                     SerializationAction;
1026*f334afcfSToomas Soome   UINT8                                     Instruction;
1027*f334afcfSToomas Soome   UINT8                                     Flags;
1028*f334afcfSToomas Soome   UINT8                                     Reserved0;
1029*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
1030*f334afcfSToomas Soome   UINT64                                    Value;
1031*f334afcfSToomas Soome   UINT64                                    Mask;
1032*f334afcfSToomas Soome } EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
1033*f334afcfSToomas Soome 
1034*f334afcfSToomas Soome ///
1035*f334afcfSToomas Soome /// EINJ - Error Injection Table
1036*f334afcfSToomas Soome ///
1037*f334afcfSToomas Soome typedef struct {
1038*f334afcfSToomas Soome   EFI_ACPI_DESCRIPTION_HEADER    Header;
1039*f334afcfSToomas Soome   UINT32                         InjectionHeaderSize;
1040*f334afcfSToomas Soome   UINT8                          InjectionFlags;
1041*f334afcfSToomas Soome   UINT8                          Reserved0[3];
1042*f334afcfSToomas Soome   UINT32                         InjectionEntryCount;
1043*f334afcfSToomas Soome } EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER;
1044*f334afcfSToomas Soome 
1045*f334afcfSToomas Soome ///
1046*f334afcfSToomas Soome /// EINJ Version (as defined in ACPI 4.0 spec.)
1047*f334afcfSToomas Soome ///
1048*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION  0x01
1049*f334afcfSToomas Soome 
1050*f334afcfSToomas Soome ///
1051*f334afcfSToomas Soome /// EINJ Error Injection Actions
1052*f334afcfSToomas Soome ///
1053*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION       0x00
1054*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE  0x01
1055*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE                  0x02
1056*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE                  0x03
1057*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_END_OPERATION                   0x04
1058*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION               0x05
1059*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS               0x06
1060*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS              0x07
1061*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR                   0xFF
1062*f334afcfSToomas Soome 
1063*f334afcfSToomas Soome ///
1064*f334afcfSToomas Soome /// EINJ Action Command Status
1065*f334afcfSToomas Soome ///
1066*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS          0x00
1067*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE  0x01
1068*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS   0x02
1069*f334afcfSToomas Soome 
1070*f334afcfSToomas Soome ///
1071*f334afcfSToomas Soome /// EINJ Error Type Definition
1072*f334afcfSToomas Soome ///
1073*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE               (1 << 0)
1074*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL    (1 << 1)
1075*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL       (1 << 2)
1076*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE                  (1 << 3)
1077*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL       (1 << 4)
1078*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL          (1 << 5)
1079*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE             (1 << 6)
1080*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL  (1 << 7)
1081*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL     (1 << 8)
1082*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE                (1 << 9)
1083*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL     (1 << 10)
1084*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL        (1 << 11)
1085*f334afcfSToomas Soome 
1086*f334afcfSToomas Soome ///
1087*f334afcfSToomas Soome /// EINJ Injection Instructions
1088*f334afcfSToomas Soome ///
1089*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_READ_REGISTER         0x00
1090*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE   0x01
1091*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_WRITE_REGISTER        0x02
1092*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE  0x03
1093*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_NOOP                  0x04
1094*f334afcfSToomas Soome 
1095*f334afcfSToomas Soome ///
1096*f334afcfSToomas Soome /// EINJ Instruction Flags
1097*f334afcfSToomas Soome ///
1098*f334afcfSToomas Soome #define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER  0x01
1099*f334afcfSToomas Soome 
1100*f334afcfSToomas Soome ///
1101*f334afcfSToomas Soome /// EINJ Injection Instruction Entry
1102*f334afcfSToomas Soome ///
1103*f334afcfSToomas Soome typedef struct {
1104*f334afcfSToomas Soome   UINT8                                     InjectionAction;
1105*f334afcfSToomas Soome   UINT8                                     Instruction;
1106*f334afcfSToomas Soome   UINT8                                     Flags;
1107*f334afcfSToomas Soome   UINT8                                     Reserved0;
1108*f334afcfSToomas Soome   EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
1109*f334afcfSToomas Soome   UINT64                                    Value;
1110*f334afcfSToomas Soome   UINT64                                    Mask;
1111*f334afcfSToomas Soome } EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
1112*f334afcfSToomas Soome 
1113*f334afcfSToomas Soome ///
1114*f334afcfSToomas Soome /// EINJ Trigger Action Table
1115*f334afcfSToomas Soome ///
1116*f334afcfSToomas Soome typedef struct {
1117*f334afcfSToomas Soome   UINT32    HeaderSize;
1118*f334afcfSToomas Soome   UINT32    Revision;
1119*f334afcfSToomas Soome   UINT32    TableSize;
1120*f334afcfSToomas Soome   UINT32    EntryCount;
1121*f334afcfSToomas Soome } EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE;
1122*f334afcfSToomas Soome 
1123*f334afcfSToomas Soome //
1124*f334afcfSToomas Soome // Known table signatures
1125*f334afcfSToomas Soome //
1126*f334afcfSToomas Soome 
1127*f334afcfSToomas Soome ///
1128*f334afcfSToomas Soome /// "RSD PTR " Root System Description Pointer
1129*f334afcfSToomas Soome ///
1130*f334afcfSToomas Soome #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
1131*f334afcfSToomas Soome 
1132*f334afcfSToomas Soome ///
1133*f334afcfSToomas Soome /// "APIC" Multiple APIC Description Table
1134*f334afcfSToomas Soome ///
1135*f334afcfSToomas Soome #define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
1136*f334afcfSToomas Soome 
1137*f334afcfSToomas Soome ///
1138*f334afcfSToomas Soome /// "BERT" Boot Error Record Table
1139*f334afcfSToomas Soome ///
1140*f334afcfSToomas Soome #define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE  SIGNATURE_32('B', 'E', 'R', 'T')
1141*f334afcfSToomas Soome 
1142*f334afcfSToomas Soome ///
1143*f334afcfSToomas Soome /// "CPEP" Corrected Platform Error Polling Table
1144*f334afcfSToomas Soome ///
1145*f334afcfSToomas Soome #define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
1146*f334afcfSToomas Soome 
1147*f334afcfSToomas Soome ///
1148*f334afcfSToomas Soome /// "DSDT" Differentiated System Description Table
1149*f334afcfSToomas Soome ///
1150*f334afcfSToomas Soome #define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
1151*f334afcfSToomas Soome 
1152*f334afcfSToomas Soome ///
1153*f334afcfSToomas Soome /// "ECDT" Embedded Controller Boot Resources Table
1154*f334afcfSToomas Soome ///
1155*f334afcfSToomas Soome #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
1156*f334afcfSToomas Soome 
1157*f334afcfSToomas Soome ///
1158*f334afcfSToomas Soome /// "EINJ" Error Injection Table
1159*f334afcfSToomas Soome ///
1160*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'I', 'N', 'J')
1161*f334afcfSToomas Soome 
1162*f334afcfSToomas Soome ///
1163*f334afcfSToomas Soome /// "ERST" Error Record Serialization Table
1164*f334afcfSToomas Soome ///
1165*f334afcfSToomas Soome #define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE  SIGNATURE_32('E', 'R', 'S', 'T')
1166*f334afcfSToomas Soome 
1167*f334afcfSToomas Soome ///
1168*f334afcfSToomas Soome /// "FACP" Fixed ACPI Description Table
1169*f334afcfSToomas Soome ///
1170*f334afcfSToomas Soome #define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
1171*f334afcfSToomas Soome 
1172*f334afcfSToomas Soome ///
1173*f334afcfSToomas Soome /// "FACS" Firmware ACPI Control Structure
1174*f334afcfSToomas Soome ///
1175*f334afcfSToomas Soome #define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
1176*f334afcfSToomas Soome 
1177*f334afcfSToomas Soome ///
1178*f334afcfSToomas Soome /// "HEST" Hardware Error Source Table
1179*f334afcfSToomas Soome ///
1180*f334afcfSToomas Soome #define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE  SIGNATURE_32('H', 'E', 'S', 'T')
1181*f334afcfSToomas Soome 
1182*f334afcfSToomas Soome ///
1183*f334afcfSToomas Soome /// "MSCT" Maximum System Characteristics Table
1184*f334afcfSToomas Soome ///
1185*f334afcfSToomas Soome #define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'C', 'T')
1186*f334afcfSToomas Soome 
1187*f334afcfSToomas Soome ///
1188*f334afcfSToomas Soome /// "PSDT" Persistent System Description Table
1189*f334afcfSToomas Soome ///
1190*f334afcfSToomas Soome #define EFI_ACPI_4_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
1191*f334afcfSToomas Soome 
1192*f334afcfSToomas Soome ///
1193*f334afcfSToomas Soome /// "RSDT" Root System Description Table
1194*f334afcfSToomas Soome ///
1195*f334afcfSToomas Soome #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
1196*f334afcfSToomas Soome 
1197*f334afcfSToomas Soome ///
1198*f334afcfSToomas Soome /// "SBST" Smart Battery Specification Table
1199*f334afcfSToomas Soome ///
1200*f334afcfSToomas Soome #define EFI_ACPI_4_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
1201*f334afcfSToomas Soome 
1202*f334afcfSToomas Soome ///
1203*f334afcfSToomas Soome /// "SLIT" System Locality Information Table
1204*f334afcfSToomas Soome ///
1205*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
1206*f334afcfSToomas Soome 
1207*f334afcfSToomas Soome ///
1208*f334afcfSToomas Soome /// "SRAT" System Resource Affinity Table
1209*f334afcfSToomas Soome ///
1210*f334afcfSToomas Soome #define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
1211*f334afcfSToomas Soome 
1212*f334afcfSToomas Soome ///
1213*f334afcfSToomas Soome /// "SSDT" Secondary System Description Table
1214*f334afcfSToomas Soome ///
1215*f334afcfSToomas Soome #define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
1216*f334afcfSToomas Soome 
1217*f334afcfSToomas Soome ///
1218*f334afcfSToomas Soome /// "XSDT" Extended System Description Table
1219*f334afcfSToomas Soome ///
1220*f334afcfSToomas Soome #define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
1221*f334afcfSToomas Soome 
1222*f334afcfSToomas Soome ///
1223*f334afcfSToomas Soome /// "BOOT" MS Simple Boot Spec
1224*f334afcfSToomas Soome ///
1225*f334afcfSToomas Soome #define EFI_ACPI_4_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
1226*f334afcfSToomas Soome 
1227*f334afcfSToomas Soome ///
1228*f334afcfSToomas Soome /// "DBGP" MS Debug Port Spec
1229*f334afcfSToomas Soome ///
1230*f334afcfSToomas Soome #define EFI_ACPI_4_0_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
1231*f334afcfSToomas Soome 
1232*f334afcfSToomas Soome ///
1233*f334afcfSToomas Soome /// "DMAR" DMA Remapping Table
1234*f334afcfSToomas Soome ///
1235*f334afcfSToomas Soome #define EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE  SIGNATURE_32('D', 'M', 'A', 'R')
1236*f334afcfSToomas Soome 
1237*f334afcfSToomas Soome ///
1238*f334afcfSToomas Soome /// "ETDT" Event Timer Description Table
1239*f334afcfSToomas Soome ///
1240*f334afcfSToomas Soome #define EFI_ACPI_4_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
1241*f334afcfSToomas Soome 
1242*f334afcfSToomas Soome ///
1243*f334afcfSToomas Soome /// "HPET" IA-PC High Precision Event Timer Table
1244*f334afcfSToomas Soome ///
1245*f334afcfSToomas Soome #define EFI_ACPI_4_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
1246*f334afcfSToomas Soome 
1247*f334afcfSToomas Soome ///
1248*f334afcfSToomas Soome /// "iBFT" iSCSI Boot Firmware Table
1249*f334afcfSToomas Soome ///
1250*f334afcfSToomas Soome #define EFI_ACPI_4_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
1251*f334afcfSToomas Soome 
1252*f334afcfSToomas Soome ///
1253*f334afcfSToomas Soome /// "IVRS" I/O Virtualization Reporting Structure
1254*f334afcfSToomas Soome ///
1255*f334afcfSToomas Soome #define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE  SIGNATURE_32('I', 'V', 'R', 'S')
1256*f334afcfSToomas Soome 
1257*f334afcfSToomas Soome ///
1258*f334afcfSToomas Soome /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
1259*f334afcfSToomas Soome ///
1260*f334afcfSToomas Soome #define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
1261*f334afcfSToomas Soome 
1262*f334afcfSToomas Soome ///
1263*f334afcfSToomas Soome /// "MCHI" Management Controller Host Interface Table
1264*f334afcfSToomas Soome ///
1265*f334afcfSToomas Soome #define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'H', 'I')
1266*f334afcfSToomas Soome 
1267*f334afcfSToomas Soome ///
1268*f334afcfSToomas Soome /// "SPCR" Serial Port Console Redirection Table
1269*f334afcfSToomas Soome ///
1270*f334afcfSToomas Soome #define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
1271*f334afcfSToomas Soome 
1272*f334afcfSToomas Soome ///
1273*f334afcfSToomas Soome /// "SPMI" Server Platform Management Interface Table
1274*f334afcfSToomas Soome ///
1275*f334afcfSToomas Soome #define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
1276*f334afcfSToomas Soome 
1277*f334afcfSToomas Soome ///
1278*f334afcfSToomas Soome /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
1279*f334afcfSToomas Soome ///
1280*f334afcfSToomas Soome #define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
1281*f334afcfSToomas Soome 
1282*f334afcfSToomas Soome ///
1283*f334afcfSToomas Soome /// "UEFI" UEFI ACPI Data Table
1284*f334afcfSToomas Soome ///
1285*f334afcfSToomas Soome #define EFI_ACPI_4_0_UEFI_ACPI_DATA_TABLE_SIGNATURE  SIGNATURE_32('U', 'E', 'F', 'I')
1286*f334afcfSToomas Soome 
1287*f334afcfSToomas Soome ///
1288*f334afcfSToomas Soome /// "WAET" Windows ACPI Enlightenment Table
1289*f334afcfSToomas Soome ///
1290*f334afcfSToomas Soome #define EFI_ACPI_4_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE  SIGNATURE_32('W', 'A', 'E', 'T')
1291*f334afcfSToomas Soome 
1292*f334afcfSToomas Soome ///
1293*f334afcfSToomas Soome /// "WDAT" Watchdog Action Table
1294*f334afcfSToomas Soome ///
1295*f334afcfSToomas Soome #define EFI_ACPI_4_0_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
1296*f334afcfSToomas Soome 
1297*f334afcfSToomas Soome ///
1298*f334afcfSToomas Soome /// "WDRT" Watchdog Resource Table
1299*f334afcfSToomas Soome ///
1300*f334afcfSToomas Soome #define EFI_ACPI_4_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
1301*f334afcfSToomas Soome 
1302*f334afcfSToomas Soome #pragma pack()
1303*f334afcfSToomas Soome 
1304*f334afcfSToomas Soome #endif
1305