18508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/** @file
28508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ACPI 6.0 definitions from the ACPI Specification Revision 6.0 April, 2015.
38508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
48508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
58a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
68508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  This program and the accompanying materials
78508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  are licensed and made available under the terms and conditions of the BSD License
88508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  which accompanies this distribution.  The full text of the license may be found at
98508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  http://opensource.org/licenses/bsd-license.php
108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen**/
148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#ifndef _ACPI_6_0_H_
168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define _ACPI_6_0_H_
178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#include <IndustryStandard/Acpi51.h>
198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Ensure proper structure formats
228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#pragma pack(1)
248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI 6.0 Generic Address Space definition
278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   AddressSpaceId;
308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   RegisterBitWidth;
318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   RegisterBitOffset;
328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   AccessSize;
338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  Address;
348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE;
358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Generic Address Space Address IDs
388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_MEMORY              0
408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_IO                  1
418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE    2
428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER        3
438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SMBUS                      4
448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL  0x0A
458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE       0x7F
468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Generic Address Space Access Sizes
498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_UNDEFINED  0
518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BYTE       1
528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WORD       2
538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DWORD      3
548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_QWORD      4
558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// ACPI 6.0 table structures
588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Root System Description Pointer Structure
628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  Signature;
658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Checksum;
668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   OemId[6];
678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Revision;
688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  RsdtAddress;
698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Length;
708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  XsdtAddress;
718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ExtendedChecksum;
728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[3];
738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// RSD_PTR Revision (as defined in ACPI 6.0 spec.)
778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 6.0) says current value is 2
798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Common table header, this prefaces all ACPI tables, including FACS, but
828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// excluding the RSD PTR structure
838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Signature;
868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Length;
878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_COMMON_HEADER;
888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Root System Description Table
918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// No definition needed as it is a common description table header, the same with
928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// RSDT Revision (as defined in ACPI 6.0 spec.)
978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Extended System Description Table
1028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// No definition needed as it is a common description table header, the same with
1038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
1048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// XSDT Revision (as defined in ACPI 6.0 spec.)
1088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
1108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Fixed ACPI Description Table Structure (FADT)
1138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
1158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER             Header;
1168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  FirmwareCtrl;
1178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Dsdt;
1188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Reserved0;
1198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   PreferredPmProfile;
1208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  SciInt;
1218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  SmiCmd;
1228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   AcpiEnable;
1238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   AcpiDisable;
1248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   S4BiosReq;
1258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   PstateCnt;
1268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Pm1aEvtBlk;
1278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Pm1bEvtBlk;
1288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Pm1aCntBlk;
1298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Pm1bCntBlk;
1308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Pm2CntBlk;
1318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  PmTmrBlk;
1328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Gpe0Blk;
1338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Gpe1Blk;
1348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Pm1EvtLen;
1358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Pm1CntLen;
1368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Pm2CntLen;
1378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   PmTmrLen;
1388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Gpe0BlkLen;
1398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Gpe1BlkLen;
1408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Gpe1Base;
1418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   CstCnt;
1428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  PLvl2Lat;
1438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  PLvl3Lat;
1448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  FlushSize;
1458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  FlushStride;
1468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   DutyOffset;
1478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   DutyWidth;
1488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   DayAlrm;
1498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   MonAlrm;
1508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Century;
1518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  IaPcBootArch;
1528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   Reserved1;
1538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Flags;
1548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
1558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   ResetValue;
1568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                  ArmBootArch;
1578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   MinorVersion;
1588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                  XFirmwareCtrl;
1598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                  XDsdt;
1608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
1618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
1628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
1638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
1648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
1658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
1668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
1678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
1688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
1698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
1708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                  HypervisorVendorIdentity;
1718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE;
1728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FADT Version (as defined in ACPI 6.0 spec.)
1758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
1768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x06
1778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x00
1788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Fixed ACPI Description Table Preferred Power Management Profile
1818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_UNSPECIFIED         0
1838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_DESKTOP             1
1848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_MOBILE              2
1858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_WORKSTATION         3
1868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER   4
1878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_SOHO_SERVER         5
1888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_APPLIANCE_PC        6
1898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_PERFORMANCE_SERVER  7
1908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PM_PROFILE_TABLET              8
1918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
1928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Fixed ACPI Description Table Boot Architecture Flags
1948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other bits are reserved and must be set to 0.
1958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
1968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LEGACY_DEVICES              BIT0
1978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_8042                        BIT1
1988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_VGA_NOT_PRESENT             BIT2
1998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MSI_NOT_SUPPORTED           BIT3
2008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS          BIT4
2018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT        BIT5
2028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Fixed ACPI Description Table Arm Boot Architecture Flags
2058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other bits are reserved and must be set to 0.
2068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT              BIT0
2088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ARM_PSCI_USE_HVC                BIT1
2098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Fixed ACPI Description Table Fixed Feature Flags
2128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other bits are reserved and must be set to 0.
2138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WBINVD                                 BIT0
2158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WBINVD_FLUSH                           BIT1
2168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROC_C1                                BIT2
2178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_P_LVL2_UP                              BIT3
2188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PWR_BUTTON                             BIT4
2198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SLP_BUTTON                             BIT5
2208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIX_RTC                                BIT6
2218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RTC_S4                                 BIT7
2228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_TMR_VAL_EXT                            BIT8
2238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DCK_CAP                                BIT9
2248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RESET_REG_SUP                          BIT10
2258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SEALED_CASE                            BIT11
2268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HEADLESS                               BIT12
2278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CPU_SW_SLP                             BIT13
2288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_EXP_WAK                            BIT14
2298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_USE_PLATFORM_CLOCK                     BIT15
2308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_S4_RTC_STS_VALID                       BIT16
2318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE                BIT17
2328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL               BIT18
2338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
2348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HW_REDUCED_ACPI                        BIT20
2358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE              BIT21
2368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Firmware ACPI Control Structure
2398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
2418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Signature;
2428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Length;
2438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  HardwareSignature;
2448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  FirmwareWakingVector;
2458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalLock;
2468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
2478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  XFirmwareWakingVector;
2488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Version;
2498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[3];
2508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  OspmFlags;
2518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[24];
2528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
2538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FACS Version (as defined in ACPI 6.0 spec.)
2568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x02
2588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Firmware Control Structure Feature Flags
2618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// All other bits are reserved and must be set to 0.
2628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_S4BIOS_F                     BIT0
2648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F       BIT1
2658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// OSPM Enabled Firmware Control Structure Flags
2688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// All other bits are reserved and must be set to 0.
2698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_OSPM_64BIT_WAKE_F            BIT0
2718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Differentiated System Description Table,
2748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Secondary System Description Table
2758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// and Persistent System Description Table,
2768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// no definition needed as they are common description table header, the same with
2778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
2788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
2798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
2808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
2818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Multiple APIC Description Table header definition.  The rest of the table
2848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// must be defined in a platform specific manner.
2858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
2878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
2888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      LocalApicAddress;
2898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Flags;
2908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
2918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MADT Revision (as defined in ACPI 6.0 spec.)
2948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
2968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
2978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
2988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Multiple APIC Flags
2998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// All other bits are reserved and must be set to 0.
3008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCAT_COMPAT         BIT0
3028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Multiple APIC Description Table APIC structure types
3058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other values between 0x0D and 0x7F are reserved and
3068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
3078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC           0x00
3098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IO_APIC                        0x01
3108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE      0x02
3118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
3128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOCAL_APIC_NMI                 0x04
3138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
3148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IO_SAPIC                       0x06
3158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOCAL_SAPIC                    0x07
3168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES     0x08
3178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC         0x09
3188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOCAL_X2APIC_NMI               0x0A
3198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GIC                            0x0B
3208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GICD                           0x0C
3218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GIC_MSI_FRAME                  0x0D
3228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GICR                           0x0E
3238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GIC_ITS                        0x0F
3248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// APIC Structure Definitions
3278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Processor Local APIC Structure Definition
3318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
3338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
3348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
3358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   AcpiProcessorUid;
3368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ApicId;
3378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
3388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
3398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local APIC Flags.  All other bits are reserved and must be 0.
3428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOCAL_APIC_ENABLED        BIT0
3448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IO APIC Structure
3478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
3498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
3508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
3518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   IoApicId;
3528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved;
3538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  IoApicAddress;
3548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterruptBase;
3558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IO_APIC_STRUCTURE;
3568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Interrupt Source Override Structure
3598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
3618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
3628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
3638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Bus;
3648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Source;
3658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterrupt;
3668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
3678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
3688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Platform Interrupt Sources Structure Definition
3718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
3738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
3748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
3758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
3768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   InterruptType;
3778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorId;
3788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorEid;
3798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   IoSapicVector;
3808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterrupt;
3818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  PlatformInterruptSourceFlags;
3828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   CpeiProcessorOverride;
3838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[31];
3848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
3858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// MPS INTI flags.
3888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other bits are reserved and must be set to 0.
3898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
3908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_POLARITY      (3 << 0)
3918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_TRIGGER_MODE  (3 << 2)
3928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
3938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Non-Maskable Interrupt Source Structure
3958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
3968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
3978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
3988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
3998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
4008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterrupt;
4018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
4028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local APIC NMI Structure
4058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   AcpiProcessorUid;
4108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
4118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   LocalApicLint;
4128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE;
4138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local APIC Address Override Structure
4168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved;
4218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  LocalApicAddress;
4228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
4238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IO SAPIC Structure
4268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   IoApicId;
4318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved;
4328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterruptBase;
4338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  IoSapicAddress;
4348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IO_SAPIC_STRUCTURE;
4358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local SAPIC Structure
4388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
4398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   AcpiProcessorId;
4448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   LocalSapicId;
4458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   LocalSapicEid;
4468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[3];
4478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
4488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ACPIProcessorUIDValue;
4498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
4508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Platform Interrupt Sources Structure
4538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
4588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   InterruptType;
4598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorId;
4608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorEid;
4618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   IoSapicVector;
4628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GlobalSystemInterrupt;
4638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  PlatformInterruptSourceFlags;
4648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
4658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Platform Interrupt Source Flags.
4688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// All other bits are reserved and must be set to 0.
4698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE          BIT0
4718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Processor Local x2APIC Structure Definition
4748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[2];
4798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  X2ApicId;
4808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
4818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AcpiProcessorUid;
4828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
4838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local x2APIC NMI Structure
4868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
4888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
4898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
4908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Flags;
4918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AcpiProcessorUid;
4928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   LocalX2ApicLint;
4938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[3];
4948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE;
4958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
4968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC Structure
4988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
4998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
5018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
5028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved;
5038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  CPUInterfaceNumber;
5048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AcpiProcessorUid;
5058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
5068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ParkingProtocolVersion;
5078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  PerformanceInterruptGsiv;
5088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  ParkedAddress;
5098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  PhysicalBaseAddress;
5108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  GICV;
5118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  GICH;
5128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  VGICMaintenanceInterrupt;
5138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  GICRBaseAddress;
5148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  MPIDR;
5158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorPowerEfficiencyClass;
5168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved2[3];
5178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GIC_STRUCTURE;
5188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC Flags.  All other bits are reserved and must be 0.
5218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GIC_ENABLED                              BIT0
5238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL              BIT1
5248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS    BIT2
5258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC Distributor Structure
5288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
5318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
5328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved1;
5338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GicId;
5348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  PhysicalBaseAddress;
5358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  SystemVectorBase;
5368a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud  UINT8   GicVersion;
5378a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud  UINT8   Reserved2[3];
5388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE;
5398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5418a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud/// GIC Version
5428a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud///
5438a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud#define EFI_ACPI_6_0_GIC_V1                                   0x01
5448a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud#define EFI_ACPI_6_0_GIC_V2                                   0x02
5458a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud#define EFI_ACPI_6_0_GIC_V3                                   0x03
5468a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud#define EFI_ACPI_6_0_GIC_V4                                   0x04
5478a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud
5488a2270a6ce2664fa8e727b391e7f06ac7ba39434Samer El-Haj-Mahmoud///
5498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC MSI Frame Structure
5508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
5538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
5548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved1;
5558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GicMsiFrameId;
5568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  PhysicalBaseAddress;
5578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
5588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SPICount;
5598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SPIBase;
5608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE;
5618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC MSI Frame Flags.  All other bits are reserved and must be 0.
5648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT                    BIT0
5668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GICR Structure
5698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
5728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
5738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved;
5748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  DiscoveryRangeBaseAddress;
5758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  DiscoveryRangeLength;
5768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GICR_STRUCTURE;
5778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GIC Interrupt Translation Service Structure
5808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
5838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
5848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved;
5858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GicItsId;
5868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  PhysicalBaseAddress;
5878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Reserved2;
5888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GIC_ITS_STRUCTURE;
5898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
5908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Smart Battery Description Table (SBST)
5928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
5938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
5948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
5958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      WarningEnergyLevel;
5968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      LowEnergyLevel;
5978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      CriticalEnergyLevel;
5988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE;
5998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// SBST Version (as defined in ACPI 6.0 spec.)
6028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
6048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Embedded Controller Boot Resources Table (ECDT)
6078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// The table is followed by a null terminated ASCII string that contains
6088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// a fully qualified reference to the name space object.
6098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
6118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER             Header;
6128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
6138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  EcData;
6148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                  Uid;
6158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                   GpeBit;
6168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
6178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ECDT Version (as defined in ACPI 6.0 spec.)
6208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
6228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// System Resource Affinity Table (SRAT).  The rest of the table
6258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// must be defined in a platform specific manner.
6268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
6288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
6298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Reserved1;  ///< Must be set to 1
6308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      Reserved2;
6318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
6328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// SRAT Version (as defined in ACPI 6.0 spec.)
6358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x03
6378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
6398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// SRAT structure types.
6408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// All other values between 0x04 an 0xFF are reserved and
6418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// will be ignored by OSPM.
6428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
6438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
6448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_AFFINITY                      0x01
6458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY      0x02
6468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GICC_AFFINITY                        0x03
6478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Processor Local APIC/SAPIC Affinity Structure Definition
6508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
6528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
6538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
6548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProximityDomain7To0;
6558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ApicId;
6568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
6578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   LocalSapicEid;
6588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProximityDomain31To8[3];
6598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ClockDomain;
6608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
6618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
6648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
6668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Memory Affinity Structure Definition
6698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
6718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
6728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
6738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ProximityDomain;
6748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Reserved1;
6758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AddressBaseLow;
6768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AddressBaseHigh;
6778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  LengthLow;
6788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  LengthHigh;
6798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Reserved2;
6808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
6818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  Reserved3;
6828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE;
6838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
6858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Memory Flags.  All other bits are reserved and must be 0.
6868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
6878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_ENABLED       (1 << 0)
6888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE (1 << 1)
6898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_NONVOLATILE   (1 << 2)
6908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
6918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Processor Local x2APIC Affinity Structure Definition
6938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
6948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
6958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
6968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
6978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[2];
6988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ProximityDomain;
6998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  X2ApicId;
7008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
7018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ClockDomain;
7028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved2[4];
7038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
7048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GICC Affinity Structure Definition
7078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
7108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
7118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ProximityDomain;
7128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AcpiProcessorUid;
7138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Flags;
7148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ClockDomain;
7158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE;
7168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GICC Flags.  All other bits are reserved and must be 0.
7198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GICC_ENABLED (1 << 0)
7218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// System Locality Distance Information Table (SLIT).
7248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// The rest of the table is a matrix.
7258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
7288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      NumberOfSystemLocalities;
7298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
7308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// SLIT Version (as defined in ACPI 6.0 spec.)
7338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
7358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Corrected Platform Error Polling Table (CPEP)
7388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
7418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved[8];
7428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
7438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// CPEP Version (as defined in ACPI 6.0 spec.)
7468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
7488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
7508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// CPEP processor structure types.
7518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
7528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC  0x00
7538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Corrected Platform Error Polling Processor Structure Definition
7568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
7598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
7608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorId;
7618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ProcessorEid;
7628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  PollingInterval;
7638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
7648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Maximum System Characteristics Table (MSCT)
7678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
7708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      OffsetProxDomInfo;
7718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      MaximumNumberOfProximityDomains;
7728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      MaximumNumberOfClockDomains;
7738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      MaximumPhysicalAddress;
7748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
7758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MSCT Version (as defined in ACPI 6.0 spec.)
7788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
7808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Maximum Proximity Domain Information Structure Definition
7838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Revision;
7868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Length;
7878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ProximityDomainRangeLow;
7888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ProximityDomainRangeHigh;
7898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaximumProcessorCapacity;
7908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  MaximumMemoryCapacity;
7918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
7928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
7938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RAS Feature Table definition.
7958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
7968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
7978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
7988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       PlatformCommunicationChannelIdentifier[12];
7998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_RAS_FEATURE_TABLE;
8008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// RASF Version (as defined in ACPI 6.0 spec.)
8038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION 0x01
8058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RASF Platform Communication Channel Shared Memory Region definition.
8088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
8108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Signature;
8118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Command;
8128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Status;
8138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Version;
8148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       RASCapabilities[16];
8158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       SetRASCapabilities[16];
8168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      NumberOfRASFParameterBlocks;
8178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      SetRASCapabilitiesStatus;
8188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
8198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RASF PCC command code
8228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND  0x01
8248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RASF Platform RAS Capabilities
8278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED                          0x01
8298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE  0x02
8308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RASF Parameter Block structure for PATROL_SCRUB
8338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
8358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Type;
8368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Version;
8378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Length;
8388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      PatrolScrubCommand;
8398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      RequestedAddressRange[2];
8408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      ActualAddressRange[2];
8418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Flags;
8428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       RequestedSpeed;
8438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
8448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI RASF Patrol Scrub command
8478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
8498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
8508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
8518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Memory Power State Table definition.
8548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
8568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
8578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       PlatformCommunicationChannelIdentifier;
8588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved[3];
8598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Memory Power Node Structure
8608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Memory Power State Characteristics
8618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE;
8628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MPST Version (as defined in ACPI 6.0 spec.)
8658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
8678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MPST Platform Communication Channel Shared Memory Region definition.
8708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
8728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Signature;
8738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Command;
8748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Status;
8758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      MemoryPowerCommandRegister;
8768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      MemoryPowerStatusRegister;
8778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      PowerStateId;
8788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      MemoryPowerNodeId;
8798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      MemoryEnergyConsumed;
8808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      ExpectedAveragePowerComsuned;
8818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
8828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI MPST PCC command code
8858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND  0x03
8878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ACPI MPST Memory Power command
8908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
8928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
8938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
8948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
8958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
8968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MPST Memory Power Node Table
8988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
8998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             PowerStateValue;
9018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             PowerStateInformationIndex;
9028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE;
9038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             Flag;
9068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             Reserved;
9078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                            MemoryPowerNodeId;
9088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                            Length;
9098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                            AddressBase;
9108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                            AddressLength;
9118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                            NumberOfPowerStates;
9128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                            NumberOfPhysicalComponents;
9138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
9148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
9158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE;
9168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
9188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
9198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
9208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      MemoryPowerNodeCount;
9238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved[2];
9248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE;
9258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MPST Memory Power State Characteristics Table
9288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             PowerStateStructureID;
9318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                             Flag;
9328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                            Reserved;
9338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                            AveragePowerConsumedInMPS0;
9348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                            RelativePowerSavingToMPS0;
9358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                            ExitLatencyToMPS0;
9368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
9378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
9398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
9408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
9418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      MemoryPowerStateCharacteristicsCount;
9448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved[2];
9458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
9468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Memory Topology Table definition.
9498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
9528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Reserved;
9538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE;
9548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PMTT Version (as defined in ACPI 6.0 spec.)
9578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
9598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Common Memory Aggregator Device Structure.
9628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Type;
9658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved;
9668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Length;
9678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Flags;
9688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Reserved1;
9698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Memory Aggregator Device Type
9738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
9758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
9768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
9778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Socket Memory Aggregator Device Structure.
9808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
9838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       SocketIdentifier;
9848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       Reserved;
9858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
9868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
9888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// MemoryController Memory Aggregator Device Structure.
9908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
9918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
9928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
9938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       ReadLatency;
9948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       WriteLatency;
9958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       ReadBandwidth;
9968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       WriteBandwidth;
9978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       OptimalAccessUnit;
9988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       OptimalAccessAlignment;
9998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       Reserved;
10008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       NumberOfProximityDomains;
10018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//UINT32                                                       ProximityDomain[NumberOfProximityDomains];
10028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
10038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
10048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// DIMM Memory Aggregator Device Structure.
10078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
10098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
10108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       PhysicalComponentIdentifier;
10118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                       Reserved;
10128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       SizeOfDimm;
10138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                       SmbiosHandle;
10148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
10158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Boot Graphics Resource Table definition.
10188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
10208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
10218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 2-bytes (16 bit) version ID. This value must be 1.
10238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                      Version;
10258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 1-byte status field indicating current status about the table.
10278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///     Bits[7:1] = Reserved (must be zero)
10288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
10298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Status;
10318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 1-byte enumerated type field indicating format of the image.
10338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///     0 = Bitmap
10348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///     1 - 255  Reserved (for future use)
10358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       ImageType;
10378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
10398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// of the image bitmap.
10408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      ImageAddress;
10428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
10448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// (X, Y) display offset of the top left corner of the boot image.
10458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// The top left corner of the display is at offset (0, 0).
10468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      ImageOffsetX;
10488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
10508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// (X, Y) display offset of the top left corner of the boot image.
10518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// The top left corner of the display is at offset (0, 0).
10528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
10538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      ImageOffsetY;
10548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE;
10558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// BGRT Revision
10588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
10608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// BGRT Version
10638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BGRT_VERSION         0x01
10658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// BGRT Status
10688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED 0x00
10708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED     0x01
10718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// BGRT Image Type
10748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BGRT_IMAGE_TYPE_BMP  0x00
10768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Version (as defined in ACPI 6.0 spec.)
10798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
10818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Performance Record Types
10848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
10868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
10878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Performance Record Revision
10908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
10928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
10938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
10948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Runtime Performance Record Types
10968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
10978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
10988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
10998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
11008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Runtime Performance Record Revision
11038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME            0x01
11058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND           0x01
11068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT  0x02
11078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Performance Record header
11108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16           Type;
11138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8            Length;
11148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8            Revision;
11158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER;
11168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Performance Table header
11198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Signature;
11228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Length;
11238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER;
11248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Firmware Basic Boot Performance Pointer Record Structure
11278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                          Reserved;
11318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
11338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          BootPerformanceTablePointer;
11358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
11368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT S3 Performance Table Pointer Record Structure
11398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                          Reserved;
11438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// 64-bit processor-relative physical address of the S3 Performance Table.
11458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          S3PerformanceTablePointer;
11478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
11488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Firmware Basic Boot Performance Record Structure
11518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                          Reserved;
11558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value logged at the beginning of firmware image execution.
11578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// This may not always be zero or near zero.
11588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          ResetEnd;
11608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value logged just prior to loading the OS boot loader into memory.
11628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// For non-UEFI compatible boots, this field must be zero.
11638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          OsLoaderLoadImageStart;
11658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value logged just prior to launching the previously loaded OS boot loader image.
11678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// For non-UEFI compatible boots, the timer value logged will be just prior
11688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// to the INT 19h handler invocation.
11698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          OsLoaderStartImageStart;
11718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value logged at the point when the OS loader calls the
11738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// ExitBootServices function for UEFI compatible firmware.
11748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// For non-UEFI compatible boots, this field must be zero.
11758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          ExitBootServicesEntry;
11778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value logged at the point just prior towhen the OS loader gaining
11798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// control back from calls the ExitBootServices function for UEFI compatible firmware.
11808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// For non-UEFI compatible boots, this field must be zero.
11818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
11828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          ExitBootServicesExit;
11838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
11848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Firmware Basic Boot Performance Table signature
11878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
11888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('F', 'B', 'P', 'T')
11898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
11908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
11918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// FPDT Firmware Basic Boot Performance Table
11928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
11938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
11948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
11958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  //
11968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  // one or more Performance Records.
11978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  //
11988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
11998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT "S3PT" S3 Performance Table
12028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('S', '3', 'P', 'T')
12048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
12068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// FPDT Firmware S3 Boot Performance Table
12078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
12088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
12098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
12108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  //
12118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  // one or more Performance Records.
12128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  //
12138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_FIRMWARE_S3_BOOT_TABLE;
12148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Basic S3 Resume Performance Record
12178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
12198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
12208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// A count of the number of S3 resume cycles since the last full boot sequence.
12228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                          ResumeCount;
12248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
12268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// OS waking vector. Only the most recent resume cycle's time is retained.
12278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          FullResume;
12298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Average timer value of all resume cycles logged since the last full boot
12318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// sequence, including the most recent resume.  Note that the entire log of
12328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// timer values does not need to be retained in order to calculate this average.
12338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          AverageResume;
12358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD;
12368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// FPDT Basic S3 Suspend Performance Record
12398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
12418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
12428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
12448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Only the most recent suspend cycle's timer value is retained.
12458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          SuspendStart;
12478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Timer value recorded at the final firmware write to SLP_TYP (or other
12498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// mechanism) used to trigger hardware entry to S3.
12508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  /// Only the most recent suspend cycle's timer value is retained.
12518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  ///
12528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                          SuspendEnd;
12538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD;
12548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Firmware Performance Record Table definition.
12578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
12598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
12608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
12618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Timer Description Table definition.
12648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
12668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
12678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      CntControlBasePhysicalAddress;
12688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Reserved;
12698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      SecurePL1TimerGSIV;
12708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      SecurePL1TimerFlags;
12718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      NonSecurePL1TimerGSIV;
12728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      NonSecurePL1TimerFlags;
12738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      VirtualTimerGSIV;
12748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      VirtualTimerFlags;
12758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      NonSecurePL2TimerGSIV;
12768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      NonSecurePL2TimerFlags;
12778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      CntReadBasePhysicalAddress;
12788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      PlatformTimerCount;
12798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      PlatformTimerOffset;
12808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE;
12818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GTDT Version (as defined in ACPI 6.0 spec.)
12848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
12868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Timer Flags.  All other bits are reserved and must be 0.
12898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
12918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
12928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY          BIT2
12938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
12948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Platform Timer Type
12968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
12978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_GT_BLOCK                       0
12988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG          1
12998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GT Block Structure
13028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
13048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
13058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Length;
13068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved;
13078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  CntCtlBase;
13088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTBlockTimerCount;
13098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTBlockTimerOffset;
13108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE;
13118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GT Block Timer Structure
13148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
13168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   GTFrameNumber;
13178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved[3];
13188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  CntBaseX;
13198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  CntEL0BaseX;
13208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTxPhysicalTimerGSIV;
13218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTxPhysicalTimerFlags;
13228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTxVirtualTimerGSIV;
13238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTxVirtualTimerFlags;
13248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  GTxCommonFlags;
13258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE;
13268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// GT Block Physical Timers and Virtual Timers Flags.  All other bits are reserved and must be 0.
13298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
13318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
13328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Common Flags Flags.  All other bits are reserved and must be 0.
13358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER              BIT0
13378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1
13388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// SBSA Generic Watchdog Structure
13418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
13438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Type;
13448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Length;
13458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved;
13468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  RefreshFramePhysicalAddress;
13478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  WatchdogControlFramePhysicalAddress;
13488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  WatchdogTimerGSIV;
13498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  WatchdogTimerFlags;
13508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
13518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.
13548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
13558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0
13568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
13578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2
13588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// NVDIMM Firmware Interface Table definition.
13618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
13638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER    Header;
13648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                         Reserved;
13658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE;
13668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// NFIT Version (as defined in ACPI 6.0 spec.)
13698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1
13718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for NFIT Table Structure Types
13748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE              0
13768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE_TYPE  1
13778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE_TYPE                                 2
13788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE              3
13798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE                      4
13808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE            5
13818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE                         6
13828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for NFIT Structure Header
13858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
13878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
13888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
13898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER;
13908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
13918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for System Physical Address Range Structure
13938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
13948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT      BIT0
13958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID             BIT1
13968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION                             { 0x7305944F, 0xFDDA, 0x44E3, 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }
13978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION          { 0x66F0D379, 0xB4F3, 0x4074, 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }
13988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION                              { 0x92F701F6, 0x13B4, 0x405D, 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }
13998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION                    { 0x91AF0530, 0x5D86, 0x470E, 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }
14008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE   { 0x77AB535A, 0x45FC, 0x624B, 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }
14018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE     { 0x3D5ABD30, 0x4175, 0x87CE, 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }
14028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }
14038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT   { 0x08018188, 0x42CD, 0xBB48, 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }
14048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
14068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
14078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      SPARangeStructureIndex;
14088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Flags;
14098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      Reserved_8;
14108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      ProximityDomain;
14118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  GUID                                        AddressRangeTypeGUID;
14128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SystemPhysicalAddressRangeBase;
14138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SystemPhysicalAddressRangeLength;
14148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      AddressRangeMemoryMappingAttribute;
14158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE;
14168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
14178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for Memory Device to System Physical Address Range Mapping Structure
14198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      DIMMNumber:4;
14228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      MemoryChannelNumber:4;
14238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      MemoryControllerID:4;
14248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      SocketID:4;
14258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      NodeControllerID:12;
14268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      Reserved_28:4;
14278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_DEVICE_HANDLE;
14288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
14298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL                                      BIT0
14308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL                                       BIT1
14318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL                                     BIT2
14328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF                        BIT3
14338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF                 BIT4
14348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS  BIT5
14358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
14378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
14388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE             NFITDeviceHandle;
14398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      MemoryDevicePhysicalID;
14408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      MemoryDeviceRegionID;
14418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      SPARangeStructureIndex ;
14428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NVDIMMControlRegionStructureIndex;
14438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      MemoryDeviceRegionSize;
14448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      RegionOffset;
14458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      MemoryDevicePhysicalAddressRegionBase;
14468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      InterleaveStructureIndex;
14478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      InterleaveWays;
14488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      MemoryDeviceStateFlags;
14498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Reserved_46;
14508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE;
14518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
14528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for Interleave Structure
14548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
14578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
14588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      InterleaveStructureIndex;
14598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Reserved_6;
14608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      NumberOfLines;
14618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      LineSize;
14628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//UINT32                                      LineOffset[NumberOfLines];
14638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE;
14648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
14658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for SMBIOS Management Information Structure
14678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
14708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
14718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      Reserved_4;
14728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//UINT8                                       Data[];
14738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE;
14748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
14758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for NVDIMM Control Region Structure
14778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
14788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED    BIT0
14798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
14808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
14818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
14828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NVDIMMControlRegionStructureIndex;
14838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      VendorID;
14848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      DeviceID;
14858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      RevisionID;
14868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      SubsystemVendorID;
14878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      SubsystemDeviceID;
14888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      SubsystemRevisionID;
14898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                       Reserved_18[6];
14908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                      SerialNumber;
14918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      RegionFormatInterfaceCode;
14928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NumberOfBlockControlWindows;
14938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SizeOfBlockControlWindow;
14948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      CommandRegisterOffsetInBlockControlWindow;
14958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SizeOfCommandRegisterInBlockControlWindows;
14968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      StatusRegisterOffsetInBlockControlWindow;
14978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SizeOfStatusRegisterInBlockControlWindows;
14988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NVDIMMControlRegionFlag;
14998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                       Reserved_74[6];
15008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE;
15018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for NVDIMM Block Data Window Region Structure
15048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
15078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
15088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NVDIMMControlRegionStructureIndex;
15098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NumberOfBlockDataWindows;
15108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      BlockDataWindowStartOffset;
15118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      SizeOfBlockDataWindow;
15128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      BlockAccessibleMemoryCapacity;
15138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                      BeginningAddressOfFirstBlockInBlockAccessibleMemory;
15148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE;
15158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Definition for Flush Hint Address Structure
15188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Type;
15218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      Length;
15228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE             NFITDeviceHandle;
15238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                      NumberOfFlushHintAddresses;
15248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                       Reserved_10[6];
15258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//UINT64                                      FlushHintAddress[NumberOfFlushHintAddresses];
15268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE;
15278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Boot Error Record Table (BERT)
15308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
15338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      BootErrorRegionLength;
15348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      BootErrorRegion;
15358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER;
15368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// BERT Version (as defined in ACPI 6.0 spec.)
15398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
15418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Boot Error Region Block Status Definition
15448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       UncorrectableErrorValid:1;
15478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       CorrectableErrorValid:1;
15488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       MultipleUncorrectableErrors:1;
15498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       MultipleCorrectableErrors:1;
15508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       ErrorDataEntryCount:10;
15518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32       Reserved:18;
15528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_ERROR_BLOCK_STATUS;
15538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Boot Error Region Definition
15568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_ERROR_BLOCK_STATUS              BlockStatus;
15598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       RawDataOffset;
15608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       RawDataLength;
15618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       DataLength;
15628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       ErrorSeverity;
15638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE;
15648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Boot Error Severity types
15678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
15688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE  0x00
15698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SEVERITY_FATAL        0x01
15708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED    0x02
15718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SEVERITY_NONE         0x03
15728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Error Data Entry Definition
15758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8    SectionType[16];
15788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32   ErrorSeverity;
15798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16   Revision;
15808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8    ValidationBits;
15818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8    Flags;
15828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32   ErrorDataLength;
15838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8    FruId[16];
15848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8    FruText[20];
15858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
15868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Error Data Entry Version (as defined in ACPI 6.0 spec.)
15898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_REVISION  0x0201
15918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
15928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// HEST - Hardware Error Source Table
15948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
15958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
15968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
15978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      ErrorSourceCount;
15988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
15998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// HEST Version (as defined in ACPI 6.0 spec.)
16028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
16048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Error Source structure types.
16078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION  0x00
16098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK  0x01
16108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR                0x02
16118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER                  0x06
16128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER                     0x07
16138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER                     0x08
16148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR                     0x09
16158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Error Source structure flags.
16188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
16208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
16218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IA-32 Architecture Machine Check Exception Structure Definition
16248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
16268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Type;
16278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SourceId;
16288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[2];
16298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Flags;
16308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Enabled;
16318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  NumberOfRecordsToPreAllocate;
16328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxSectionsPerRecord;
16338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  GlobalCapabilityInitData;
16348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  GlobalControlInitData;
16358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   NumberOfHardwareBanks;
16368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[7];
16378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
16388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IA-32 Architecture Machine Check Bank Structure Definition
16418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
16438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   BankNumber;
16448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   ClearStatusOnInitialization;
16458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   StatusDataFormat;
16468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0;
16478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  ControlRegisterMsrAddress;
16488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64  ControlInitData;
16498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  StatusRegisterMsrAddress;
16508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AddressRegisterMsrAddress;
16518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MiscRegisterMsrAddress;
16528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
16538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IA-32 Architecture Machine Check Bank Structure MCA data format
16568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
16588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
16598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
16608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Hardware Error Notification types. All other values are reserved
16638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
16648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
16658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
16668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
16678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
16688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
16698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Hardware Error Notification Configuration Write Enable Structure Definition
16728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
16748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    Type:1;
16758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    PollInterval:1;
16768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    SwitchToPollingThresholdValue:1;
16778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    SwitchToPollingThresholdWindow:1;
16788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    ErrorThresholdValue:1;
16798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    ErrorThresholdWindow:1;
16808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16    Reserved:10;
16818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
16828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Hardware Error Notification Structure Definition
16858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
16878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                                          Type;
16888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                                          Length;
16898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
16908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         PollInterval;
16918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         Vector;
16928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         SwitchToPollingThresholdValue;
16938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         SwitchToPollingThresholdWindow;
16948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         ErrorThresholdValue;
16958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                                         ErrorThresholdWindow;
16968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
16978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
16988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
16998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IA-32 Architecture Corrected Machine Check Structure Definition
17008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
17028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                 Type;
17038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                 SourceId;
17048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Reserved0[2];
17058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Flags;
17068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Enabled;
17078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 NumberOfRecordsToPreAllocate;
17088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 MaxSectionsPerRecord;
17098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
17108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  NumberOfHardwareBanks;
17118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Reserved1[3];
17128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
17138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
17148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// IA-32 Architecture NMI Error Structure Definition
17168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
17188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Type;
17198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SourceId;
17208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[2];
17218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  NumberOfRecordsToPreAllocate;
17228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxSectionsPerRecord;
17238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxRawDataLength;
17248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
17258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
17268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCI Express Root Port AER Structure Definition
17288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
17308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Type;
17318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SourceId;
17328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[2];
17338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Flags;
17348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Enabled;
17358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  NumberOfRecordsToPreAllocate;
17368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxSectionsPerRecord;
17378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Bus;
17388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Device;
17398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Function;
17408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  DeviceControl;
17418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[2];
17428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorMask;
17438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorSeverity;
17448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  CorrectableErrorMask;
17458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AdvancedErrorCapabilitiesAndControl;
17468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  RootErrorCommand;
17478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
17488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
17498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCI Express Device AER Structure Definition
17518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
17538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Type;
17548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SourceId;
17558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[2];
17568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Flags;
17578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Enabled;
17588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  NumberOfRecordsToPreAllocate;
17598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxSectionsPerRecord;
17608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Bus;
17618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Device;
17628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Function;
17638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  DeviceControl;
17648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[2];
17658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorMask;
17668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorSeverity;
17678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  CorrectableErrorMask;
17688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AdvancedErrorCapabilitiesAndControl;
17698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
17708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
17718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCI Express Bridge AER Structure Definition
17738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
17758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Type;
17768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  SourceId;
17778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved0[2];
17788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Flags;
17798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Enabled;
17808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  NumberOfRecordsToPreAllocate;
17818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  MaxSectionsPerRecord;
17828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Bus;
17838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Device;
17848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  Function;
17858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16  DeviceControl;
17868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8   Reserved1[2];
17878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorMask;
17888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  UncorrectableErrorSeverity;
17898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  CorrectableErrorMask;
17908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  AdvancedErrorCapabilitiesAndControl;
17918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  SecondaryUncorrectableErrorMask;
17928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  SecondaryUncorrectableErrorSeverity;
17938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
17948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
17958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
17968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Hardware Error Source Structure Definition
17988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
17998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
18008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                 Type;
18018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                 SourceId;
18028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                                 RelatedSourceId;
18038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Flags;
18048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                                  Enabled;
18058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 NumberOfRecordsToPreAllocate;
18068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 MaxSectionsPerRecord;
18078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 MaxRawDataLength;
18088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
18098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
18108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                 ErrorStatusBlockLength;
18118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
18128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Error Status Definition
18158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
18178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_ERROR_BLOCK_STATUS              BlockStatus;
18188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       RawDataOffset;
18198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       RawDataLength;
18208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       DataLength;
18218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                       ErrorSeverity;
18228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE;
18238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST - Error Record Serialization Table
18268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
18288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
18298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      SerializationHeaderSize;
18308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved0[4];
18318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      InstructionEntryCount;
18328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
18338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Version (as defined in ACPI 6.0 spec.)
18368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
18388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Serialization Actions
18418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION                    0x00
18438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION                     0x01
18448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION                    0x02
18458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_END_OPERATION                            0x03
18468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET                        0x04
18478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION                        0x05
18488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS                        0x06
18498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS                       0x07
18508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER                    0x08
18518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER                    0x09
18528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT                         0x0A
18538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
18548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
18558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
18568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
18578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Action Command Status
18608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_SUCCESS                           0x00
18628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
18638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
18648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_FAILED                            0x03
18658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY                0x04
18668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND                  0x05
18678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Serialization Instructions
18708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_READ_REGISTER                            0x00
18728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE                      0x01
18738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_WRITE_REGISTER                           0x02
18748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE                     0x03
18758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_NOOP                                     0x04
18768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_LOAD_VAR1                                0x05
18778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_LOAD_VAR2                                0x06
18788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STORE_VAR1                               0x07
18798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_ADD                                      0x08
18808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SUBTRACT                                 0x09
18818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_ADD_VALUE                                0x0A
18828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE                           0x0B
18838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STALL                                    0x0C
18848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE                         0x0D
18858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
18868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_GOTO                                     0x0F
18878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE                     0x10
18888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE                     0x11
18898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_MOVE_DATA                                0x12
18908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Instruction Flags
18938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER                        0x01
18958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
18968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// ERST Serialization Instruction Entry
18988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
18998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
19008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    SerializationAction;
19018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Instruction;
19028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Flags;
19038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved0;
19048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
19058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   Value;
19068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   Mask;
19078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
19088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ - Error Injection Table
19118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
19138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
19148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      InjectionHeaderSize;
19158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       InjectionFlags;
19168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                       Reserved0[3];
19178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      InjectionEntryCount;
19188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER;
19198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Version (as defined in ACPI 6.0 spec.)
19228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION 0x01
19248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Error Injection Actions
19278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION                0x00
19298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
19308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE                           0x02
19318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE                           0x03
19328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_END_OPERATION                            0x04
19338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION                        0x05
19348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS                        0x06
19358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS                       0x07
19368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR                            0xFF
19378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Action Command Status
19408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS                           0x00
19428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
19438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS                    0x02
19448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Error Type Definition
19478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
19498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
19508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
19518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
19528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
19538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
19548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
19558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
19568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
19578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
19588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
19598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
19608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Injection Instructions
19638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_READ_REGISTER                            0x00
19658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE                      0x01
19668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER                           0x02
19678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE                     0x03
19688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_NOOP                                     0x04
19698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Instruction Flags
19728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER                        0x01
19748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Injection Instruction Entry
19778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
19798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    InjectionAction;
19808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Instruction;
19818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Flags;
19828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved0;
19838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
19848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   Value;
19858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   Mask;
19868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
19878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// EINJ Trigger Action Table
19908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
19928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  HeaderSize;
19938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  Revision;
19948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  TableSize;
19958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32  EntryCount;
19968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE;
19978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
19988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
19998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Platform Communications Channel Table (PCCT)
20008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_DESCRIPTION_HEADER Header;
20038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                      Flags;
20048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                      Reserved;
20058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
20068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCCT Version (as defined in ACPI 6.0 spec.)
20098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
20118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCCT Global Flags
20148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL                      BIT0
20168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
20188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// PCCT Subspace type
20198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
20208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC  0x00
20218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// PCC Subspace Structure Header
20248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8        Type;
20278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8        Length;
20288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER;
20298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Communications Subspace Structure
20328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Type;
20358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Length;
20368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved[6];
20378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   BaseAddress;
20388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   AddressLength;
20398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
20408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   DoorbellPreserve;
20418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT64                                   DoorbellWrite;
20428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                   NominalLatency;
20438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                   MaximumPeriodicAccessRate;
20448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT16                                   MinimumRequestTurnaroundTime;
20458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC;
20468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// Generic Communications Channel Shared Memory Region
20498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Command;
20538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved:7;
20548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    GenerateSci:1;
20558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
20568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    CommandComplete:1;
20598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    SciDoorbell:1;
20608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Error:1;
20618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    PlatformNotification:1;
20628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved:4;
20638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT8                                    Reserved1;
20648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
20658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewentypedef struct {
20678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  UINT32                                                    Signature;
20688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND    Command;
20698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen  EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS     Status;
20708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
20718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
20738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen// Known table signatures
20748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen//
20758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "RSD PTR " Root System Description Pointer
20788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
20808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "APIC" Multiple APIC Description Table
20838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
20858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "BERT" Boot Error Record Table
20888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE  SIGNATURE_32('B', 'E', 'R', 'T')
20908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "BGRT" Boot Graphics Resource Table
20938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('B', 'G', 'R', 'T')
20958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
20968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "CPEP" Corrected Platform Error Polling Table
20988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
20998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
21008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "DSDT" Differentiated System Description Table
21038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
21058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "ECDT" Embedded Controller Boot Resources Table
21088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
21108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "EINJ" Error Injection Table
21138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'I', 'N', 'J')
21158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "ERST" Error Record Serialization Table
21188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE  SIGNATURE_32('E', 'R', 'S', 'T')
21208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "FACP" Fixed ACPI Description Table
21238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
21258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "FACS" Firmware ACPI Control Structure
21288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
21308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "FPDT" Firmware Performance Data Table
21338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE  SIGNATURE_32('F', 'P', 'D', 'T')
21358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "GTDT" Generic Timer Description Table
21388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('G', 'T', 'D', 'T')
21408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "HEST" Hardware Error Source Table
21438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE  SIGNATURE_32('H', 'E', 'S', 'T')
21458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "MPST" Memory Power State Table
21488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_SIGNATURE  SIGNATURE_32('M', 'P', 'S', 'T')
21508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "MSCT" Maximum System Characteristics Table
21538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'C', 'T')
21558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "NFIT" NVDIMM Firmware Interface Table
21588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE  SIGNATURE_32('N', 'F', 'I', 'T')
21608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "PMTT" Platform Memory Topology Table
21638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE  SIGNATURE_32('P', 'M', 'T', 'T')
21658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "PSDT" Persistent System Description Table
21688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
21708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "RASF" ACPI RAS Feature Table
21738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE  SIGNATURE_32('R', 'A', 'S', 'F')
21758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "RSDT" Root System Description Table
21788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
21808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SBST" Smart Battery Specification Table
21838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
21858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SLIT" System Locality Information Table
21888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
21908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SRAT" System Resource Affinity Table
21938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
21958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
21968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SSDT" Secondary System Description Table
21988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
21998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
22008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "XSDT" Extended System Description Table
22038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
22058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "BOOT" MS Simple Boot Spec
22088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
22108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "CSRT" MS Core System Resource Table
22138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('C', 'S', 'R', 'T')
22158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "DBG2" MS Debug Port 2 Spec
22188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DEBUG_PORT_2_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', '2')
22208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "DBGP" MS Debug Port Spec
22238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
22258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "DMAR" DMA Remapping Table
22288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DMA_REMAPPING_TABLE_SIGNATURE  SIGNATURE_32('D', 'M', 'A', 'R')
22308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "DRTM" Dynamic Root of Trust for Measurement Table
22338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE  SIGNATURE_32('D', 'R', 'T', 'M')
22358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "ETDT" Event Timer Description Table
22388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
22408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "HPET" IA-PC High Precision Event Timer Table
22438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22448508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
22458508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22468508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22478508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "iBFT" iSCSI Boot Firmware Table
22488508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22498508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
22508508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22518508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22528508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "IORT" Interrupt Source Override
22538508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22548508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_SIGNATURE  SIGNATURE_32('I', 'O', 'R', 'T')
22558508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22568508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22578508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "IVRS" I/O Virtualization Reporting Structure
22588508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22598508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE  SIGNATURE_32('I', 'V', 'R', 'S')
22608508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22618508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22628508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "LPIT" Low Power Idle Table
22638508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22648508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE  SIGNATURE_32('L', 'P', 'I', 'T')
22658508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22668508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22678508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
22688508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22698508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
22708508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22718508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22728508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "MCHI" Management Controller Host Interface Table
22738508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22748508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'H', 'I')
22758508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22768508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22778508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "MSDM" MS Data Management Table
22788508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22798508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
22808508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22818508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22828508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SLIC" MS Software Licensing Table Specification
22838508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22848508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
22858508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22868508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22878508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SPCR" Serial Port Concole Redirection Table
22888508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22898508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
22908508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22918508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22928508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "SPMI" Server Platform Management Interface Table
22938508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22948508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
22958508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
22968508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22978508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "STAO" _STA Override Table
22988508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
22998508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_STA_OVERRIDE_TABLE_SIGNATURE  SIGNATURE_32('S', 'T', 'A', 'O')
23008508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23018508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23028508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
23038508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23048508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
23058508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23068508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23078508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "TPM2" Trusted Computing Platform 1 Table
23088508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23098508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE  SIGNATURE_32('T', 'P', 'M', '2')
23108508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23118508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23128508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "UEFI" UEFI ACPI Data Table
23138508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23148508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_UEFI_ACPI_DATA_TABLE_SIGNATURE  SIGNATURE_32('U', 'E', 'F', 'I')
23158508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23168508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23178508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "WAET" Windows ACPI Emulated Devices Table
23188508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23198508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE  SIGNATURE_32('W', 'A', 'E', 'T')
23208508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23218508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23228508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "WDAT" Watchdog Action Table
23238508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23248508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
23258508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23268508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23278508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "WDRT" Watchdog Resource Table
23288508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23298508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
23308508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23318508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23328508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "WPBT" MS Platform Binary Table
23338508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23348508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_PLATFORM_BINARY_TABLE_SIGNATURE  SIGNATURE_32('W', 'P', 'B', 'T')
23358508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23368508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23378508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen/// "XENV" Xen Project Table
23388508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen///
23398508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#define EFI_ACPI_6_0_XEN_PROJECT_TABLE_SIGNATURE  SIGNATURE_32('X', 'E', 'N', 'V')
23408508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23418508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#pragma pack()
23428508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen
23438508fe58c4f25a27c18c56027b768a9525fc7eddYao, Jiewen#endif
2344