iPXE
Acpi51.h
Go to the documentation of this file.
00001 /** @file
00002   ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016.
00003 
00004   Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>
00005   Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
00006   (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
00007   This program and the accompanying materials
00008   are licensed and made available under the terms and conditions of the BSD License
00009   which accompanies this distribution.  The full text of the license may be found at
00010   http://opensource.org/licenses/bsd-license.php
00011 
00012   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
00013   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
00014 **/
00015 
00016 #ifndef _ACPI_5_1_H_
00017 #define _ACPI_5_1_H_
00018 
00019 FILE_LICENCE ( BSD3 );
00020 
00021 #include <ipxe/efi/IndustryStandard/Acpi50.h>
00022 
00023 //
00024 // Ensure proper structure formats
00025 //
00026 #pragma pack(1)
00027 
00028 ///
00029 /// ACPI 5.1 Generic Address Space definition
00030 ///
00031 typedef struct {
00032   UINT8   AddressSpaceId;
00033   UINT8   RegisterBitWidth;
00034   UINT8   RegisterBitOffset;
00035   UINT8   AccessSize;
00036   UINT64  Address;
00037 } EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE;
00038 
00039 //
00040 // Generic Address Space Address IDs
00041 //
00042 #define EFI_ACPI_5_1_SYSTEM_MEMORY              0
00043 #define EFI_ACPI_5_1_SYSTEM_IO                  1
00044 #define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE    2
00045 #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER        3
00046 #define EFI_ACPI_5_1_SMBUS                      4
00047 #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL  0x0A
00048 #define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE       0x7F
00049 
00050 //
00051 // Generic Address Space Access Sizes
00052 //
00053 #define EFI_ACPI_5_1_UNDEFINED  0
00054 #define EFI_ACPI_5_1_BYTE       1
00055 #define EFI_ACPI_5_1_WORD       2
00056 #define EFI_ACPI_5_1_DWORD      3
00057 #define EFI_ACPI_5_1_QWORD      4
00058 
00059 //
00060 // ACPI 5.1 table structures
00061 //
00062 
00063 ///
00064 /// Root System Description Pointer Structure
00065 ///
00066 typedef struct {
00067   UINT64  Signature;
00068   UINT8   Checksum;
00069   UINT8   OemId[6];
00070   UINT8   Revision;
00071   UINT32  RsdtAddress;
00072   UINT32  Length;
00073   UINT64  XsdtAddress;
00074   UINT8   ExtendedChecksum;
00075   UINT8   Reserved[3];
00076 } EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER;
00077 
00078 ///
00079 /// RSD_PTR Revision (as defined in ACPI 5.1 spec.)
00080 ///
00081 #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 5.1) says current value is 2
00082 
00083 ///
00084 /// Common table header, this prefaces all ACPI tables, including FACS, but
00085 /// excluding the RSD PTR structure
00086 ///
00087 typedef struct {
00088   UINT32  Signature;
00089   UINT32  Length;
00090 } EFI_ACPI_5_1_COMMON_HEADER;
00091 
00092 //
00093 // Root System Description Table
00094 // No definition needed as it is a common description table header, the same with
00095 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
00096 //
00097 
00098 ///
00099 /// RSDT Revision (as defined in ACPI 5.1 spec.)
00100 ///
00101 #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
00102 
00103 //
00104 // Extended System Description Table
00105 // No definition needed as it is a common description table header, the same with
00106 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
00107 //
00108 
00109 ///
00110 /// XSDT Revision (as defined in ACPI 5.1 spec.)
00111 ///
00112 #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
00113 
00114 ///
00115 /// Fixed ACPI Description Table Structure (FADT)
00116 ///
00117 typedef struct {
00118   EFI_ACPI_DESCRIPTION_HEADER             Header;
00119   UINT32                                  FirmwareCtrl;
00120   UINT32                                  Dsdt;
00121   UINT8                                   Reserved0;
00122   UINT8                                   PreferredPmProfile;
00123   UINT16                                  SciInt;
00124   UINT32                                  SmiCmd;
00125   UINT8                                   AcpiEnable;
00126   UINT8                                   AcpiDisable;
00127   UINT8                                   S4BiosReq;
00128   UINT8                                   PstateCnt;
00129   UINT32                                  Pm1aEvtBlk;
00130   UINT32                                  Pm1bEvtBlk;
00131   UINT32                                  Pm1aCntBlk;
00132   UINT32                                  Pm1bCntBlk;
00133   UINT32                                  Pm2CntBlk;
00134   UINT32                                  PmTmrBlk;
00135   UINT32                                  Gpe0Blk;
00136   UINT32                                  Gpe1Blk;
00137   UINT8                                   Pm1EvtLen;
00138   UINT8                                   Pm1CntLen;
00139   UINT8                                   Pm2CntLen;
00140   UINT8                                   PmTmrLen;
00141   UINT8                                   Gpe0BlkLen;
00142   UINT8                                   Gpe1BlkLen;
00143   UINT8                                   Gpe1Base;
00144   UINT8                                   CstCnt;
00145   UINT16                                  PLvl2Lat;
00146   UINT16                                  PLvl3Lat;
00147   UINT16                                  FlushSize;
00148   UINT16                                  FlushStride;
00149   UINT8                                   DutyOffset;
00150   UINT8                                   DutyWidth;
00151   UINT8                                   DayAlrm;
00152   UINT8                                   MonAlrm;
00153   UINT8                                   Century;
00154   UINT16                                  IaPcBootArch;
00155   UINT8                                   Reserved1;
00156   UINT32                                  Flags;
00157   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  ResetReg;
00158   UINT8                                   ResetValue;
00159   UINT16                                  ArmBootArch;
00160   UINT8                                   MinorVersion;
00161   UINT64                                  XFirmwareCtrl;
00162   UINT64                                  XDsdt;
00163   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
00164   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
00165   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
00166   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
00167   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
00168   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
00169   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
00170   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
00171   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
00172   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
00173 } EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE;
00174 
00175 ///
00176 /// FADT Version (as defined in ACPI 5.1 spec.)
00177 ///
00178 #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x05
00179 #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x01
00180 
00181 //
00182 // Fixed ACPI Description Table Preferred Power Management Profile
00183 //
00184 #define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED         0
00185 #define EFI_ACPI_5_1_PM_PROFILE_DESKTOP             1
00186 #define EFI_ACPI_5_1_PM_PROFILE_MOBILE              2
00187 #define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION         3
00188 #define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER   4
00189 #define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER         5
00190 #define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC        6
00191 #define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER  7
00192 #define EFI_ACPI_5_1_PM_PROFILE_TABLET              8
00193 
00194 //
00195 // Fixed ACPI Description Table Boot Architecture Flags
00196 // All other bits are reserved and must be set to 0.
00197 //
00198 #define EFI_ACPI_5_1_LEGACY_DEVICES              BIT0
00199 #define EFI_ACPI_5_1_8042                        BIT1
00200 #define EFI_ACPI_5_1_VGA_NOT_PRESENT             BIT2
00201 #define EFI_ACPI_5_1_MSI_NOT_SUPPORTED           BIT3
00202 #define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS          BIT4
00203 #define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT        BIT5
00204 
00205 //
00206 // Fixed ACPI Description Table Arm Boot Architecture Flags
00207 // All other bits are reserved and must be set to 0.
00208 //
00209 #define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT              BIT0
00210 #define EFI_ACPI_5_1_ARM_PSCI_USE_HVC                BIT1
00211 
00212 //
00213 // Fixed ACPI Description Table Fixed Feature Flags
00214 // All other bits are reserved and must be set to 0.
00215 //
00216 #define EFI_ACPI_5_1_WBINVD                                 BIT0
00217 #define EFI_ACPI_5_1_WBINVD_FLUSH                           BIT1
00218 #define EFI_ACPI_5_1_PROC_C1                                BIT2
00219 #define EFI_ACPI_5_1_P_LVL2_UP                              BIT3
00220 #define EFI_ACPI_5_1_PWR_BUTTON                             BIT4
00221 #define EFI_ACPI_5_1_SLP_BUTTON                             BIT5
00222 #define EFI_ACPI_5_1_FIX_RTC                                BIT6
00223 #define EFI_ACPI_5_1_RTC_S4                                 BIT7
00224 #define EFI_ACPI_5_1_TMR_VAL_EXT                            BIT8
00225 #define EFI_ACPI_5_1_DCK_CAP                                BIT9
00226 #define EFI_ACPI_5_1_RESET_REG_SUP                          BIT10
00227 #define EFI_ACPI_5_1_SEALED_CASE                            BIT11
00228 #define EFI_ACPI_5_1_HEADLESS                               BIT12
00229 #define EFI_ACPI_5_1_CPU_SW_SLP                             BIT13
00230 #define EFI_ACPI_5_1_PCI_EXP_WAK                            BIT14
00231 #define EFI_ACPI_5_1_USE_PLATFORM_CLOCK                     BIT15
00232 #define EFI_ACPI_5_1_S4_RTC_STS_VALID                       BIT16
00233 #define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE                BIT17
00234 #define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL               BIT18
00235 #define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
00236 #define EFI_ACPI_5_1_HW_REDUCED_ACPI                        BIT20
00237 #define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE              BIT21
00238 
00239 ///
00240 /// Firmware ACPI Control Structure
00241 ///
00242 typedef struct {
00243   UINT32  Signature;
00244   UINT32  Length;
00245   UINT32  HardwareSignature;
00246   UINT32  FirmwareWakingVector;
00247   UINT32  GlobalLock;
00248   UINT32  Flags;
00249   UINT64  XFirmwareWakingVector;
00250   UINT8   Version;
00251   UINT8   Reserved0[3];
00252   UINT32  OspmFlags;
00253   UINT8   Reserved1[24];
00254 } EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;
00255 
00256 ///
00257 /// FACS Version (as defined in ACPI 5.1 spec.)
00258 ///
00259 #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x02
00260 
00261 ///
00262 /// Firmware Control Structure Feature Flags
00263 /// All other bits are reserved and must be set to 0.
00264 ///
00265 #define EFI_ACPI_5_1_S4BIOS_F                     BIT0
00266 #define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F       BIT1
00267 
00268 ///
00269 /// OSPM Enabled Firmware Control Structure Flags
00270 /// All other bits are reserved and must be set to 0.
00271 ///
00272 #define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F            BIT0
00273 
00274 //
00275 // Differentiated System Description Table,
00276 // Secondary System Description Table
00277 // and Persistent System Description Table,
00278 // no definition needed as they are common description table header, the same with
00279 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
00280 //
00281 #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
00282 #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
00283 
00284 ///
00285 /// Multiple APIC Description Table header definition.  The rest of the table
00286 /// must be defined in a platform specific manner.
00287 ///
00288 typedef struct {
00289   EFI_ACPI_DESCRIPTION_HEADER Header;
00290   UINT32                      LocalApicAddress;
00291   UINT32                      Flags;
00292 } EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
00293 
00294 ///
00295 /// MADT Revision (as defined in ACPI 5.1 spec.)
00296 ///
00297 #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
00298 
00299 ///
00300 /// Multiple APIC Flags
00301 /// All other bits are reserved and must be set to 0.
00302 ///
00303 #define EFI_ACPI_5_1_PCAT_COMPAT         BIT0
00304 
00305 //
00306 // Multiple APIC Description Table APIC structure types
00307 // All other values between 0x0D and 0x7F are reserved and
00308 // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
00309 //
00310 #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC           0x00
00311 #define EFI_ACPI_5_1_IO_APIC                        0x01
00312 #define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE      0x02
00313 #define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE  0x03
00314 #define EFI_ACPI_5_1_LOCAL_APIC_NMI                 0x04
00315 #define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
00316 #define EFI_ACPI_5_1_IO_SAPIC                       0x06
00317 #define EFI_ACPI_5_1_LOCAL_SAPIC                    0x07
00318 #define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES     0x08
00319 #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC         0x09
00320 #define EFI_ACPI_5_1_LOCAL_X2APIC_NMI               0x0A
00321 #define EFI_ACPI_5_1_GIC                            0x0B
00322 #define EFI_ACPI_5_1_GICD                           0x0C
00323 #define EFI_ACPI_5_1_GIC_MSI_FRAME                  0x0D
00324 #define EFI_ACPI_5_1_GICR                           0x0E
00325 
00326 //
00327 // APIC Structure Definitions
00328 //
00329 
00330 ///
00331 /// Processor Local APIC Structure Definition
00332 ///
00333 typedef struct {
00334   UINT8   Type;
00335   UINT8   Length;
00336   UINT8   AcpiProcessorId;
00337   UINT8   ApicId;
00338   UINT32  Flags;
00339 } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE;
00340 
00341 ///
00342 /// Local APIC Flags.  All other bits are reserved and must be 0.
00343 ///
00344 #define EFI_ACPI_5_1_LOCAL_APIC_ENABLED        BIT0
00345 
00346 ///
00347 /// IO APIC Structure
00348 ///
00349 typedef struct {
00350   UINT8   Type;
00351   UINT8   Length;
00352   UINT8   IoApicId;
00353   UINT8   Reserved;
00354   UINT32  IoApicAddress;
00355   UINT32  GlobalSystemInterruptBase;
00356 } EFI_ACPI_5_1_IO_APIC_STRUCTURE;
00357 
00358 ///
00359 /// Interrupt Source Override Structure
00360 ///
00361 typedef struct {
00362   UINT8   Type;
00363   UINT8   Length;
00364   UINT8   Bus;
00365   UINT8   Source;
00366   UINT32  GlobalSystemInterrupt;
00367   UINT16  Flags;
00368 } EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
00369 
00370 ///
00371 /// Platform Interrupt Sources Structure Definition
00372 ///
00373 typedef struct {
00374   UINT8   Type;
00375   UINT8   Length;
00376   UINT16  Flags;
00377   UINT8   InterruptType;
00378   UINT8   ProcessorId;
00379   UINT8   ProcessorEid;
00380   UINT8   IoSapicVector;
00381   UINT32  GlobalSystemInterrupt;
00382   UINT32  PlatformInterruptSourceFlags;
00383   UINT8   CpeiProcessorOverride;
00384   UINT8   Reserved[31];
00385 } EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;
00386 
00387 //
00388 // MPS INTI flags.
00389 // All other bits are reserved and must be set to 0.
00390 //
00391 #define EFI_ACPI_5_1_POLARITY      (3 << 0)
00392 #define EFI_ACPI_5_1_TRIGGER_MODE  (3 << 2)
00393 
00394 ///
00395 /// Non-Maskable Interrupt Source Structure
00396 ///
00397 typedef struct {
00398   UINT8   Type;
00399   UINT8   Length;
00400   UINT16  Flags;
00401   UINT32  GlobalSystemInterrupt;
00402 } EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
00403 
00404 ///
00405 /// Local APIC NMI Structure
00406 ///
00407 typedef struct {
00408   UINT8   Type;
00409   UINT8   Length;
00410   UINT8   AcpiProcessorId;
00411   UINT16  Flags;
00412   UINT8   LocalApicLint;
00413 } EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE;
00414 
00415 ///
00416 /// Local APIC Address Override Structure
00417 ///
00418 typedef struct {
00419   UINT8   Type;
00420   UINT8   Length;
00421   UINT16  Reserved;
00422   UINT64  LocalApicAddress;
00423 } EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
00424 
00425 ///
00426 /// IO SAPIC Structure
00427 ///
00428 typedef struct {
00429   UINT8   Type;
00430   UINT8   Length;
00431   UINT8   IoApicId;
00432   UINT8   Reserved;
00433   UINT32  GlobalSystemInterruptBase;
00434   UINT64  IoSapicAddress;
00435 } EFI_ACPI_5_1_IO_SAPIC_STRUCTURE;
00436 
00437 ///
00438 /// Local SAPIC Structure
00439 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
00440 ///
00441 typedef struct {
00442   UINT8   Type;
00443   UINT8   Length;
00444   UINT8   AcpiProcessorId;
00445   UINT8   LocalSapicId;
00446   UINT8   LocalSapicEid;
00447   UINT8   Reserved[3];
00448   UINT32  Flags;
00449   UINT32  ACPIProcessorUIDValue;
00450 } EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
00451 
00452 ///
00453 /// Platform Interrupt Sources Structure
00454 ///
00455 typedef struct {
00456   UINT8   Type;
00457   UINT8   Length;
00458   UINT16  Flags;
00459   UINT8   InterruptType;
00460   UINT8   ProcessorId;
00461   UINT8   ProcessorEid;
00462   UINT8   IoSapicVector;
00463   UINT32  GlobalSystemInterrupt;
00464   UINT32  PlatformInterruptSourceFlags;
00465 } EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
00466 
00467 ///
00468 /// Platform Interrupt Source Flags.
00469 /// All other bits are reserved and must be set to 0.
00470 ///
00471 #define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE          BIT0
00472 
00473 ///
00474 /// Processor Local x2APIC Structure Definition
00475 ///
00476 typedef struct {
00477   UINT8   Type;
00478   UINT8   Length;
00479   UINT8   Reserved[2];
00480   UINT32  X2ApicId;
00481   UINT32  Flags;
00482   UINT32  AcpiProcessorUid;
00483 } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
00484 
00485 ///
00486 /// Local x2APIC NMI Structure
00487 ///
00488 typedef struct {
00489   UINT8   Type;
00490   UINT8   Length;
00491   UINT16  Flags;
00492   UINT32  AcpiProcessorUid;
00493   UINT8   LocalX2ApicLint;
00494   UINT8   Reserved[3];
00495 } EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE;
00496 
00497 ///
00498 /// GIC Structure
00499 ///
00500 typedef struct {
00501   UINT8   Type;
00502   UINT8   Length;
00503   UINT16  Reserved;
00504   UINT32  CPUInterfaceNumber;
00505   UINT32  AcpiProcessorUid;
00506   UINT32  Flags;
00507   UINT32  ParkingProtocolVersion;
00508   UINT32  PerformanceInterruptGsiv;
00509   UINT64  ParkedAddress;
00510   UINT64  PhysicalBaseAddress;
00511   UINT64  GICV;
00512   UINT64  GICH;
00513   UINT32  VGICMaintenanceInterrupt;
00514   UINT64  GICRBaseAddress;
00515   UINT64  MPIDR;
00516 } EFI_ACPI_5_1_GIC_STRUCTURE;
00517 
00518 ///
00519 /// GIC Flags.  All other bits are reserved and must be 0.
00520 ///
00521 #define EFI_ACPI_5_1_GIC_ENABLED                              BIT0
00522 #define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL              BIT1
00523 #define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS    BIT2
00524 
00525 ///
00526 /// GIC Distributor Structure
00527 ///
00528 typedef struct {
00529   UINT8   Type;
00530   UINT8   Length;
00531   UINT16  Reserved1;
00532   UINT32  GicId;
00533   UINT64  PhysicalBaseAddress;
00534   UINT32  SystemVectorBase;
00535   UINT8   GicVersion;
00536   UINT8   Reserved2[3];
00537 } EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE;
00538 
00539 ///
00540 /// GIC Version
00541 ///
00542 #define EFI_ACPI_5_1_GIC_V1                                   0x01
00543 #define EFI_ACPI_5_1_GIC_V2                                   0x02
00544 #define EFI_ACPI_5_1_GIC_V3                                   0x03
00545 #define EFI_ACPI_5_1_GIC_V4                                   0x04
00546 
00547 ///
00548 /// GIC MSI Frame Structure
00549 ///
00550 typedef struct {
00551   UINT8   Type;
00552   UINT8   Length;
00553   UINT16  Reserved1;
00554   UINT32  GicMsiFrameId;
00555   UINT64  PhysicalBaseAddress;
00556   UINT32  Flags;
00557   UINT16  SPICount;
00558   UINT16  SPIBase;
00559 } EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE;
00560 
00561 ///
00562 /// GIC MSI Frame Flags.  All other bits are reserved and must be 0.
00563 ///
00564 #define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT                    BIT0
00565 
00566 ///
00567 /// GICR Structure
00568 ///
00569 typedef struct {
00570   UINT8   Type;
00571   UINT8   Length;
00572   UINT16  Reserved;
00573   UINT64  DiscoveryRangeBaseAddress;
00574   UINT32  DiscoveryRangeLength;
00575 } EFI_ACPI_5_1_GICR_STRUCTURE;
00576 
00577 ///
00578 /// Smart Battery Description Table (SBST)
00579 ///
00580 typedef struct {
00581   EFI_ACPI_DESCRIPTION_HEADER Header;
00582   UINT32                      WarningEnergyLevel;
00583   UINT32                      LowEnergyLevel;
00584   UINT32                      CriticalEnergyLevel;
00585 } EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE;
00586 
00587 ///
00588 /// SBST Version (as defined in ACPI 5.1 spec.)
00589 ///
00590 #define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
00591 
00592 ///
00593 /// Embedded Controller Boot Resources Table (ECDT)
00594 /// The table is followed by a null terminated ASCII string that contains
00595 /// a fully qualified reference to the name space object.
00596 ///
00597 typedef struct {
00598   EFI_ACPI_DESCRIPTION_HEADER             Header;
00599   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcControl;
00600   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcData;
00601   UINT32                                  Uid;
00602   UINT8                                   GpeBit;
00603 } EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
00604 
00605 ///
00606 /// ECDT Version (as defined in ACPI 5.1 spec.)
00607 ///
00608 #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
00609 
00610 ///
00611 /// System Resource Affinity Table (SRAT).  The rest of the table
00612 /// must be defined in a platform specific manner.
00613 ///
00614 typedef struct {
00615   EFI_ACPI_DESCRIPTION_HEADER Header;
00616   UINT32                      Reserved1;  ///< Must be set to 1
00617   UINT64                      Reserved2;
00618 } EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
00619 
00620 ///
00621 /// SRAT Version (as defined in ACPI 5.1 spec.)
00622 ///
00623 #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x03
00624 
00625 //
00626 // SRAT structure types.
00627 // All other values between 0x04 an 0xFF are reserved and
00628 // will be ignored by OSPM.
00629 //
00630 #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
00631 #define EFI_ACPI_5_1_MEMORY_AFFINITY                      0x01
00632 #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY      0x02
00633 #define EFI_ACPI_5_1_GICC_AFFINITY                        0x03
00634 
00635 ///
00636 /// Processor Local APIC/SAPIC Affinity Structure Definition
00637 ///
00638 typedef struct {
00639   UINT8   Type;
00640   UINT8   Length;
00641   UINT8   ProximityDomain7To0;
00642   UINT8   ApicId;
00643   UINT32  Flags;
00644   UINT8   LocalSapicEid;
00645   UINT8   ProximityDomain31To8[3];
00646   UINT32  ClockDomain;
00647 } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
00648 
00649 ///
00650 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
00651 ///
00652 #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
00653 
00654 ///
00655 /// Memory Affinity Structure Definition
00656 ///
00657 typedef struct {
00658   UINT8   Type;
00659   UINT8   Length;
00660   UINT32  ProximityDomain;
00661   UINT16  Reserved1;
00662   UINT32  AddressBaseLow;
00663   UINT32  AddressBaseHigh;
00664   UINT32  LengthLow;
00665   UINT32  LengthHigh;
00666   UINT32  Reserved2;
00667   UINT32  Flags;
00668   UINT64  Reserved3;
00669 } EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE;
00670 
00671 //
00672 // Memory Flags.  All other bits are reserved and must be 0.
00673 //
00674 #define EFI_ACPI_5_1_MEMORY_ENABLED       (1 << 0)
00675 #define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1)
00676 #define EFI_ACPI_5_1_MEMORY_NONVOLATILE   (1 << 2)
00677 
00678 ///
00679 /// Processor Local x2APIC Affinity Structure Definition
00680 ///
00681 typedef struct {
00682   UINT8   Type;
00683   UINT8   Length;
00684   UINT8   Reserved1[2];
00685   UINT32  ProximityDomain;
00686   UINT32  X2ApicId;
00687   UINT32  Flags;
00688   UINT32  ClockDomain;
00689   UINT8   Reserved2[4];
00690 } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
00691 
00692 ///
00693 /// GICC Affinity Structure Definition
00694 ///
00695 typedef struct {
00696   UINT8   Type;
00697   UINT8   Length;
00698   UINT32  ProximityDomain;
00699   UINT32  AcpiProcessorUid;
00700   UINT32  Flags;
00701   UINT32  ClockDomain;
00702 } EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE;
00703 
00704 ///
00705 /// GICC Flags.  All other bits are reserved and must be 0.
00706 ///
00707 #define EFI_ACPI_5_1_GICC_ENABLED (1 << 0)
00708 
00709 ///
00710 /// System Locality Distance Information Table (SLIT).
00711 /// The rest of the table is a matrix.
00712 ///
00713 typedef struct {
00714   EFI_ACPI_DESCRIPTION_HEADER Header;
00715   UINT64                      NumberOfSystemLocalities;
00716 } EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
00717 
00718 ///
00719 /// SLIT Version (as defined in ACPI 5.1 spec.)
00720 ///
00721 #define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
00722 
00723 ///
00724 /// Corrected Platform Error Polling Table (CPEP)
00725 ///
00726 typedef struct {
00727   EFI_ACPI_DESCRIPTION_HEADER Header;
00728   UINT8                       Reserved[8];
00729 } EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
00730 
00731 ///
00732 /// CPEP Version (as defined in ACPI 5.1 spec.)
00733 ///
00734 #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
00735 
00736 //
00737 // CPEP processor structure types.
00738 //
00739 #define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC  0x00
00740 
00741 ///
00742 /// Corrected Platform Error Polling Processor Structure Definition
00743 ///
00744 typedef struct {
00745   UINT8   Type;
00746   UINT8   Length;
00747   UINT8   ProcessorId;
00748   UINT8   ProcessorEid;
00749   UINT32  PollingInterval;
00750 } EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
00751 
00752 ///
00753 /// Maximum System Characteristics Table (MSCT)
00754 ///
00755 typedef struct {
00756   EFI_ACPI_DESCRIPTION_HEADER Header;
00757   UINT32                      OffsetProxDomInfo;
00758   UINT32                      MaximumNumberOfProximityDomains;
00759   UINT32                      MaximumNumberOfClockDomains;
00760   UINT64                      MaximumPhysicalAddress;
00761 } EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
00762 
00763 ///
00764 /// MSCT Version (as defined in ACPI 5.1 spec.)
00765 ///
00766 #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
00767 
00768 ///
00769 /// Maximum Proximity Domain Information Structure Definition
00770 ///
00771 typedef struct {
00772   UINT8   Revision;
00773   UINT8   Length;
00774   UINT32  ProximityDomainRangeLow;
00775   UINT32  ProximityDomainRangeHigh;
00776   UINT32  MaximumProcessorCapacity;
00777   UINT64  MaximumMemoryCapacity;
00778 } EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
00779 
00780 ///
00781 /// ACPI RAS Feature Table definition.
00782 ///
00783 typedef struct {
00784   EFI_ACPI_DESCRIPTION_HEADER Header;
00785   UINT8                       PlatformCommunicationChannelIdentifier[12];
00786 } EFI_ACPI_5_1_RAS_FEATURE_TABLE;
00787 
00788 ///
00789 /// RASF Version (as defined in ACPI 5.1 spec.)
00790 ///
00791 #define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01
00792 
00793 ///
00794 /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
00795 ///
00796 typedef struct {
00797   UINT32                      Signature;
00798   UINT16                      Command;
00799   UINT16                      Status;
00800   UINT16                      Version;
00801   UINT8                       RASCapabilities[16];
00802   UINT8                       SetRASCapabilities[16];
00803   UINT16                      NumberOfRASFParameterBlocks;
00804   UINT32                      SetRASCapabilitiesStatus;
00805 } EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
00806 
00807 ///
00808 /// ACPI RASF PCC command code
00809 ///
00810 #define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND  0x01
00811 
00812 ///
00813 /// ACPI RASF Platform RAS Capabilities
00814 ///
00815 #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED                          0x01
00816 #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE  0x02
00817 
00818 ///
00819 /// ACPI RASF Parameter Block structure for PATROL_SCRUB
00820 ///
00821 typedef struct {
00822   UINT16                      Type;
00823   UINT16                      Version;
00824   UINT16                      Length;
00825   UINT16                      PatrolScrubCommand;
00826   UINT64                      RequestedAddressRange[2];
00827   UINT64                      ActualAddressRange[2];
00828   UINT16                      Flags;
00829   UINT8                       RequestedSpeed;
00830 } EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
00831 
00832 ///
00833 /// ACPI RASF Patrol Scrub command
00834 ///
00835 #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
00836 #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
00837 #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
00838 
00839 ///
00840 /// Memory Power State Table definition.
00841 ///
00842 typedef struct {
00843   EFI_ACPI_DESCRIPTION_HEADER Header;
00844   UINT8                       PlatformCommunicationChannelIdentifier;
00845   UINT8                       Reserved[3];
00846 // Memory Power Node Structure
00847 // Memory Power State Characteristics
00848 } EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE;
00849 
00850 ///
00851 /// MPST Version (as defined in ACPI 5.1 spec.)
00852 ///
00853 #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01
00854 
00855 ///
00856 /// MPST Platform Communication Channel Shared Memory Region definition.
00857 ///
00858 typedef struct {
00859   UINT32                      Signature;
00860   UINT16                      Command;
00861   UINT16                      Status;
00862   UINT32                      MemoryPowerCommandRegister;
00863   UINT32                      MemoryPowerStatusRegister;
00864   UINT32                      PowerStateId;
00865   UINT32                      MemoryPowerNodeId;
00866   UINT64                      MemoryEnergyConsumed;
00867   UINT64                      ExpectedAveragePowerComsuned;
00868 } EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
00869 
00870 ///
00871 /// ACPI MPST PCC command code
00872 ///
00873 #define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND  0x03
00874 
00875 ///
00876 /// ACPI MPST Memory Power command
00877 ///
00878 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
00879 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
00880 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
00881 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
00882 
00883 ///
00884 /// MPST Memory Power Node Table
00885 ///
00886 typedef struct {
00887   UINT8                                             PowerStateValue;
00888   UINT8                                             PowerStateInformationIndex;
00889 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE;
00890 
00891 typedef struct {
00892   UINT8                                             Flag;
00893   UINT8                                             Reserved;
00894   UINT16                                            MemoryPowerNodeId;
00895   UINT32                                            Length;
00896   UINT64                                            AddressBase;
00897   UINT64                                            AddressLength;
00898   UINT32                                            NumberOfPowerStates;
00899   UINT32                                            NumberOfPhysicalComponents;
00900 //EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
00901 //UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
00902 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE;
00903 
00904 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
00905 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
00906 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
00907 
00908 typedef struct {
00909   UINT16                      MemoryPowerNodeCount;
00910   UINT8                       Reserved[2];
00911 } EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE;
00912 
00913 ///
00914 /// MPST Memory Power State Characteristics Table
00915 ///
00916 typedef struct {
00917   UINT8                                             PowerStateStructureID;
00918   UINT8                                             Flag;
00919   UINT16                                            Reserved;
00920   UINT32                                            AveragePowerConsumedInMPS0;
00921   UINT32                                            RelativePowerSavingToMPS0;
00922   UINT64                                            ExitLatencyToMPS0;
00923 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
00924 
00925 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
00926 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
00927 #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
00928 
00929 typedef struct {
00930   UINT16                      MemoryPowerStateCharacteristicsCount;
00931   UINT8                       Reserved[2];
00932 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
00933 
00934 ///
00935 /// Memory Topology Table definition.
00936 ///
00937 typedef struct {
00938   EFI_ACPI_DESCRIPTION_HEADER Header;
00939   UINT32                      Reserved;
00940 } EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE;
00941 
00942 ///
00943 /// PMTT Version (as defined in ACPI 5.1 spec.)
00944 ///
00945 #define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
00946 
00947 ///
00948 /// Common Memory Aggregator Device Structure.
00949 ///
00950 typedef struct {
00951   UINT8                       Type;
00952   UINT8                       Reserved;
00953   UINT16                      Length;
00954   UINT16                      Flags;
00955   UINT16                      Reserved1;
00956 } EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
00957 
00958 ///
00959 /// Memory Aggregator Device Type
00960 ///
00961 #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
00962 #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
00963 #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
00964 
00965 ///
00966 /// Socket Memory Aggregator Device Structure.
00967 ///
00968 typedef struct {
00969   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
00970   UINT16                                                       SocketIdentifier;
00971   UINT16                                                       Reserved;
00972 //EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
00973 } EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
00974 
00975 ///
00976 /// MemoryController Memory Aggregator Device Structure.
00977 ///
00978 typedef struct {
00979   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
00980   UINT32                                                       ReadLatency;
00981   UINT32                                                       WriteLatency;
00982   UINT32                                                       ReadBandwidth;
00983   UINT32                                                       WriteBandwidth;
00984   UINT16                                                       OptimalAccessUnit;
00985   UINT16                                                       OptimalAccessAlignment;
00986   UINT16                                                       Reserved;
00987   UINT16                                                       NumberOfProximityDomains;
00988 //UINT32                                                       ProximityDomain[NumberOfProximityDomains];
00989 //EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
00990 } EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
00991 
00992 ///
00993 /// DIMM Memory Aggregator Device Structure.
00994 ///
00995 typedef struct {
00996   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
00997   UINT16                                                       PhysicalComponentIdentifier;
00998   UINT16                                                       Reserved;
00999   UINT32                                                       SizeOfDimm;
01000   UINT32                                                       SmbiosHandle;
01001 } EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
01002 
01003 ///
01004 /// Boot Graphics Resource Table definition.
01005 ///
01006 typedef struct {
01007   EFI_ACPI_DESCRIPTION_HEADER Header;
01008   ///
01009   /// 2-bytes (16 bit) version ID. This value must be 1.
01010   ///
01011   UINT16                      Version;
01012   ///
01013   /// 1-byte status field indicating current status about the table.
01014   ///     Bits[7:1] = Reserved (must be zero)
01015   ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
01016   ///
01017   UINT8                       Status;
01018   ///
01019   /// 1-byte enumerated type field indicating format of the image.
01020   ///     0 = Bitmap
01021   ///     1 - 255  Reserved (for future use)
01022   ///
01023   UINT8                       ImageType;
01024   ///
01025   /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
01026   /// of the image bitmap.
01027   ///
01028   UINT64                      ImageAddress;
01029   ///
01030   /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
01031   /// (X, Y) display offset of the top left corner of the boot image.
01032   /// The top left corner of the display is at offset (0, 0).
01033   ///
01034   UINT32                      ImageOffsetX;
01035   ///
01036   /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
01037   /// (X, Y) display offset of the top left corner of the boot image.
01038   /// The top left corner of the display is at offset (0, 0).
01039   ///
01040   UINT32                      ImageOffsetY;
01041 } EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE;
01042 
01043 ///
01044 /// BGRT Revision
01045 ///
01046 #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
01047 
01048 ///
01049 /// BGRT Version
01050 ///
01051 #define EFI_ACPI_5_1_BGRT_VERSION         0x01
01052 
01053 ///
01054 /// BGRT Status
01055 ///
01056 #define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00
01057 #define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED     0x01
01058 
01059 ///
01060 /// BGRT Image Type
01061 ///
01062 #define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP  0x00
01063 
01064 ///
01065 /// FPDT Version (as defined in ACPI 5.1 spec.)
01066 ///
01067 #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
01068 
01069 ///
01070 /// FPDT Performance Record Types
01071 ///
01072 #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
01073 #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
01074 
01075 ///
01076 /// FPDT Performance Record Revision
01077 ///
01078 #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
01079 #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
01080 
01081 ///
01082 /// FPDT Runtime Performance Record Types
01083 ///
01084 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
01085 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
01086 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
01087 
01088 ///
01089 /// FPDT Runtime Performance Record Revision
01090 ///
01091 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME            0x01
01092 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND           0x01
01093 #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT  0x02
01094 
01095 ///
01096 /// FPDT Performance Record header
01097 ///
01098 typedef struct {
01099   UINT16           Type;
01100   UINT8            Length;
01101   UINT8            Revision;
01102 } EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER;
01103 
01104 ///
01105 /// FPDT Performance Table header
01106 ///
01107 typedef struct {
01108   UINT32  Signature;
01109   UINT32  Length;
01110 } EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER;
01111 
01112 ///
01113 /// FPDT Firmware Basic Boot Performance Pointer Record Structure
01114 ///
01115 typedef struct {
01116   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
01117   UINT32                                          Reserved;
01118   ///
01119   /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
01120   ///
01121   UINT64                                          BootPerformanceTablePointer;
01122 } EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
01123 
01124 ///
01125 /// FPDT S3 Performance Table Pointer Record Structure
01126 ///
01127 typedef struct {
01128   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
01129   UINT32                                          Reserved;
01130   ///
01131   /// 64-bit processor-relative physical address of the S3 Performance Table.
01132   ///
01133   UINT64                                          S3PerformanceTablePointer;
01134 } EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
01135 
01136 ///
01137 /// FPDT Firmware Basic Boot Performance Record Structure
01138 ///
01139 typedef struct {
01140   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
01141   UINT32                                          Reserved;
01142   ///
01143   /// Timer value logged at the beginning of firmware image execution.
01144   /// This may not always be zero or near zero.
01145   ///
01146   UINT64                                          ResetEnd;
01147   ///
01148   /// Timer value logged just prior to loading the OS boot loader into memory.
01149   /// For non-UEFI compatible boots, this field must be zero.
01150   ///
01151   UINT64                                          OsLoaderLoadImageStart;
01152   ///
01153   /// Timer value logged just prior to launching the previously loaded OS boot loader image.
01154   /// For non-UEFI compatible boots, the timer value logged will be just prior
01155   /// to the INT 19h handler invocation.
01156   ///
01157   UINT64                                          OsLoaderStartImageStart;
01158   ///
01159   /// Timer value logged at the point when the OS loader calls the
01160   /// ExitBootServices function for UEFI compatible firmware.
01161   /// For non-UEFI compatible boots, this field must be zero.
01162   ///
01163   UINT64                                          ExitBootServicesEntry;
01164   ///
01165   /// Timer value logged at the point just prior towhen the OS loader gaining
01166   /// control back from calls the ExitBootServices function for UEFI compatible firmware.
01167   /// For non-UEFI compatible boots, this field must be zero.
01168   ///
01169   UINT64                                          ExitBootServicesExit;
01170 } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
01171 
01172 ///
01173 /// FPDT Firmware Basic Boot Performance Table signature
01174 ///
01175 #define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('F', 'B', 'P', 'T')
01176 
01177 //
01178 // FPDT Firmware Basic Boot Performance Table
01179 //
01180 typedef struct {
01181   EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
01182   //
01183   // one or more Performance Records.
01184   //
01185 } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
01186 
01187 ///
01188 /// FPDT "S3PT" S3 Performance Table
01189 ///
01190 #define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('S', '3', 'P', 'T')
01191 
01192 //
01193 // FPDT Firmware S3 Boot Performance Table
01194 //
01195 typedef struct {
01196   EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
01197   //
01198   // one or more Performance Records.
01199   //
01200 } EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE;
01201 
01202 ///
01203 /// FPDT Basic S3 Resume Performance Record
01204 ///
01205 typedef struct {
01206   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
01207   ///
01208   /// A count of the number of S3 resume cycles since the last full boot sequence.
01209   ///
01210   UINT32                                          ResumeCount;
01211   ///
01212   /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
01213   /// OS waking vector. Only the most recent resume cycle's time is retained.
01214   ///
01215   UINT64                                          FullResume;
01216   ///
01217   /// Average timer value of all resume cycles logged since the last full boot
01218   /// sequence, including the most recent resume.  Note that the entire log of
01219   /// timer values does not need to be retained in order to calculate this average.
01220   ///
01221   UINT64                                          AverageResume;
01222 } EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD;
01223 
01224 ///
01225 /// FPDT Basic S3 Suspend Performance Record
01226 ///
01227 typedef struct {
01228   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
01229   ///
01230   /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
01231   /// Only the most recent suspend cycle's timer value is retained.
01232   ///
01233   UINT64                                          SuspendStart;
01234   ///
01235   /// Timer value recorded at the final firmware write to SLP_TYP (or other
01236   /// mechanism) used to trigger hardware entry to S3.
01237   /// Only the most recent suspend cycle's timer value is retained.
01238   ///
01239   UINT64                                          SuspendEnd;
01240 } EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD;
01241 
01242 ///
01243 /// Firmware Performance Record Table definition.
01244 ///
01245 typedef struct {
01246   EFI_ACPI_DESCRIPTION_HEADER Header;
01247 } EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE;
01248 
01249 ///
01250 /// Generic Timer Description Table definition.
01251 ///
01252 typedef struct {
01253   EFI_ACPI_DESCRIPTION_HEADER Header;
01254   UINT64                      CntControlBasePhysicalAddress;
01255   UINT32                      Reserved;
01256   UINT32                      SecurePL1TimerGSIV;
01257   UINT32                      SecurePL1TimerFlags;
01258   UINT32                      NonSecurePL1TimerGSIV;
01259   UINT32                      NonSecurePL1TimerFlags;
01260   UINT32                      VirtualTimerGSIV;
01261   UINT32                      VirtualTimerFlags;
01262   UINT32                      NonSecurePL2TimerGSIV;
01263   UINT32                      NonSecurePL2TimerFlags;
01264   UINT64                      CntReadBasePhysicalAddress;
01265   UINT32                      PlatformTimerCount;
01266   UINT32                      PlatformTimerOffset;
01267 } EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE;
01268 
01269 ///
01270 /// GTDT Version (as defined in ACPI 5.1 spec.)
01271 ///
01272 #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
01273 
01274 ///
01275 /// Timer Flags.  All other bits are reserved and must be 0.
01276 ///
01277 #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
01278 #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
01279 #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY          BIT2
01280 
01281 ///
01282 /// Platform Timer Type
01283 ///
01284 #define EFI_ACPI_5_1_GTDT_GT_BLOCK                       0
01285 #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG          1
01286 
01287 ///
01288 /// GT Block Structure
01289 ///
01290 typedef struct {
01291   UINT8   Type;
01292   UINT16  Length;
01293   UINT8   Reserved;
01294   UINT64  CntCtlBase;
01295   UINT32  GTBlockTimerCount;
01296   UINT32  GTBlockTimerOffset;
01297 } EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE;
01298 
01299 ///
01300 /// GT Block Timer Structure
01301 ///
01302 typedef struct {
01303   UINT8   GTFrameNumber;
01304   UINT8   Reserved[3];
01305   UINT64  CntBaseX;
01306   UINT64  CntEL0BaseX;
01307   UINT32  GTxPhysicalTimerGSIV;
01308   UINT32  GTxPhysicalTimerFlags;
01309   UINT32  GTxVirtualTimerGSIV;
01310   UINT32  GTxVirtualTimerFlags;
01311   UINT32  GTxCommonFlags;
01312 } EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE;
01313 
01314 ///
01315 /// GT Block Physical Timers and Virtual Timers Flags.  All other bits are reserved and must be 0.
01316 ///
01317 #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
01318 #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
01319 
01320 ///
01321 /// Common Flags Flags.  All other bits are reserved and must be 0.
01322 ///
01323 #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER              BIT0
01324 #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1
01325 
01326 ///
01327 /// SBSA Generic Watchdog Structure
01328 ///
01329 typedef struct {
01330   UINT8   Type;
01331   UINT16  Length;
01332   UINT8   Reserved;
01333   UINT64  RefreshFramePhysicalAddress;
01334   UINT64  WatchdogControlFramePhysicalAddress;
01335   UINT32  WatchdogTimerGSIV;
01336   UINT32  WatchdogTimerFlags;
01337 } EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
01338 
01339 ///
01340 /// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.
01341 ///
01342 #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0
01343 #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
01344 #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2
01345 
01346 ///
01347 /// Boot Error Record Table (BERT)
01348 ///
01349 typedef struct {
01350   EFI_ACPI_DESCRIPTION_HEADER Header;
01351   UINT32                      BootErrorRegionLength;
01352   UINT64                      BootErrorRegion;
01353 } EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER;
01354 
01355 ///
01356 /// BERT Version (as defined in ACPI 5.1 spec.)
01357 ///
01358 #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
01359 
01360 ///
01361 /// Boot Error Region Block Status Definition
01362 ///
01363 typedef struct {
01364   UINT32       UncorrectableErrorValid:1;
01365   UINT32       CorrectableErrorValid:1;
01366   UINT32       MultipleUncorrectableErrors:1;
01367   UINT32       MultipleCorrectableErrors:1;
01368   UINT32       ErrorDataEntryCount:10;
01369   UINT32       Reserved:18;
01370 } EFI_ACPI_5_1_ERROR_BLOCK_STATUS;
01371 
01372 ///
01373 /// Boot Error Region Definition
01374 ///
01375 typedef struct {
01376   EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
01377   UINT32                                       RawDataOffset;
01378   UINT32                                       RawDataLength;
01379   UINT32                                       DataLength;
01380   UINT32                                       ErrorSeverity;
01381 } EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE;
01382 
01383 //
01384 // Boot Error Severity types
01385 //
01386 #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE  0x00
01387 #define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL        0x01
01388 #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED    0x02
01389 #define EFI_ACPI_5_1_ERROR_SEVERITY_NONE         0x03
01390 
01391 ///
01392 /// Generic Error Data Entry Definition
01393 ///
01394 typedef struct {
01395   UINT8    SectionType[16];
01396   UINT32   ErrorSeverity;
01397   UINT16   Revision;
01398   UINT8    ValidationBits;
01399   UINT8    Flags;
01400   UINT32   ErrorDataLength;
01401   UINT8    FruId[16];
01402   UINT8    FruText[20];
01403 } EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
01404 
01405 ///
01406 /// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.)
01407 ///
01408 #define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION  0x0201
01409 
01410 ///
01411 /// HEST - Hardware Error Source Table
01412 ///
01413 typedef struct {
01414   EFI_ACPI_DESCRIPTION_HEADER Header;
01415   UINT32                      ErrorSourceCount;
01416 } EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
01417 
01418 ///
01419 /// HEST Version (as defined in ACPI 5.1 spec.)
01420 ///
01421 #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
01422 
01423 //
01424 // Error Source structure types.
01425 //
01426 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION  0x00
01427 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK  0x01
01428 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR                0x02
01429 #define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER                  0x06
01430 #define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER                     0x07
01431 #define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER                     0x08
01432 #define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR                     0x09
01433 
01434 //
01435 // Error Source structure flags.
01436 //
01437 #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
01438 #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
01439 
01440 ///
01441 /// IA-32 Architecture Machine Check Exception Structure Definition
01442 ///
01443 typedef struct {
01444   UINT16  Type;
01445   UINT16  SourceId;
01446   UINT8   Reserved0[2];
01447   UINT8   Flags;
01448   UINT8   Enabled;
01449   UINT32  NumberOfRecordsToPreAllocate;
01450   UINT32  MaxSectionsPerRecord;
01451   UINT64  GlobalCapabilityInitData;
01452   UINT64  GlobalControlInitData;
01453   UINT8   NumberOfHardwareBanks;
01454   UINT8   Reserved1[7];
01455 } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
01456 
01457 ///
01458 /// IA-32 Architecture Machine Check Bank Structure Definition
01459 ///
01460 typedef struct {
01461   UINT8   BankNumber;
01462   UINT8   ClearStatusOnInitialization;
01463   UINT8   StatusDataFormat;
01464   UINT8   Reserved0;
01465   UINT32  ControlRegisterMsrAddress;
01466   UINT64  ControlInitData;
01467   UINT32  StatusRegisterMsrAddress;
01468   UINT32  AddressRegisterMsrAddress;
01469   UINT32  MiscRegisterMsrAddress;
01470 } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
01471 
01472 ///
01473 /// IA-32 Architecture Machine Check Bank Structure MCA data format
01474 ///
01475 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
01476 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
01477 #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
01478 
01479 //
01480 // Hardware Error Notification types. All other values are reserved
01481 //
01482 #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
01483 #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
01484 #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
01485 #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
01486 #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
01487 
01488 ///
01489 /// Hardware Error Notification Configuration Write Enable Structure Definition
01490 ///
01491 typedef struct {
01492   UINT16    Type:1;
01493   UINT16    PollInterval:1;
01494   UINT16    SwitchToPollingThresholdValue:1;
01495   UINT16    SwitchToPollingThresholdWindow:1;
01496   UINT16    ErrorThresholdValue:1;
01497   UINT16    ErrorThresholdWindow:1;
01498   UINT16    Reserved:10;
01499 } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
01500 
01501 ///
01502 /// Hardware Error Notification Structure Definition
01503 ///
01504 typedef struct {
01505   UINT8                                                                          Type;
01506   UINT8                                                                          Length;
01507   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
01508   UINT32                                                                         PollInterval;
01509   UINT32                                                                         Vector;
01510   UINT32                                                                         SwitchToPollingThresholdValue;
01511   UINT32                                                                         SwitchToPollingThresholdWindow;
01512   UINT32                                                                         ErrorThresholdValue;
01513   UINT32                                                                         ErrorThresholdWindow;
01514 } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
01515 
01516 ///
01517 /// IA-32 Architecture Corrected Machine Check Structure Definition
01518 ///
01519 typedef struct {
01520   UINT16                                                 Type;
01521   UINT16                                                 SourceId;
01522   UINT8                                                  Reserved0[2];
01523   UINT8                                                  Flags;
01524   UINT8                                                  Enabled;
01525   UINT32                                                 NumberOfRecordsToPreAllocate;
01526   UINT32                                                 MaxSectionsPerRecord;
01527   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
01528   UINT8                                                  NumberOfHardwareBanks;
01529   UINT8                                                  Reserved1[3];
01530 } EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
01531 
01532 ///
01533 /// IA-32 Architecture NMI Error Structure Definition
01534 ///
01535 typedef struct {
01536   UINT16  Type;
01537   UINT16  SourceId;
01538   UINT8   Reserved0[2];
01539   UINT32  NumberOfRecordsToPreAllocate;
01540   UINT32  MaxSectionsPerRecord;
01541   UINT32  MaxRawDataLength;
01542 } EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
01543 
01544 ///
01545 /// PCI Express Root Port AER Structure Definition
01546 ///
01547 typedef struct {
01548   UINT16  Type;
01549   UINT16  SourceId;
01550   UINT8   Reserved0[2];
01551   UINT8   Flags;
01552   UINT8   Enabled;
01553   UINT32  NumberOfRecordsToPreAllocate;
01554   UINT32  MaxSectionsPerRecord;
01555   UINT32  Bus;
01556   UINT16  Device;
01557   UINT16  Function;
01558   UINT16  DeviceControl;
01559   UINT8   Reserved1[2];
01560   UINT32  UncorrectableErrorMask;
01561   UINT32  UncorrectableErrorSeverity;
01562   UINT32  CorrectableErrorMask;
01563   UINT32  AdvancedErrorCapabilitiesAndControl;
01564   UINT32  RootErrorCommand;
01565 } EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
01566 
01567 ///
01568 /// PCI Express Device AER Structure Definition
01569 ///
01570 typedef struct {
01571   UINT16  Type;
01572   UINT16  SourceId;
01573   UINT8   Reserved0[2];
01574   UINT8   Flags;
01575   UINT8   Enabled;
01576   UINT32  NumberOfRecordsToPreAllocate;
01577   UINT32  MaxSectionsPerRecord;
01578   UINT32  Bus;
01579   UINT16  Device;
01580   UINT16  Function;
01581   UINT16  DeviceControl;
01582   UINT8   Reserved1[2];
01583   UINT32  UncorrectableErrorMask;
01584   UINT32  UncorrectableErrorSeverity;
01585   UINT32  CorrectableErrorMask;
01586   UINT32  AdvancedErrorCapabilitiesAndControl;
01587 } EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
01588 
01589 ///
01590 /// PCI Express Bridge AER Structure Definition
01591 ///
01592 typedef struct {
01593   UINT16  Type;
01594   UINT16  SourceId;
01595   UINT8   Reserved0[2];
01596   UINT8   Flags;
01597   UINT8   Enabled;
01598   UINT32  NumberOfRecordsToPreAllocate;
01599   UINT32  MaxSectionsPerRecord;
01600   UINT32  Bus;
01601   UINT16  Device;
01602   UINT16  Function;
01603   UINT16  DeviceControl;
01604   UINT8   Reserved1[2];
01605   UINT32  UncorrectableErrorMask;
01606   UINT32  UncorrectableErrorSeverity;
01607   UINT32  CorrectableErrorMask;
01608   UINT32  AdvancedErrorCapabilitiesAndControl;
01609   UINT32  SecondaryUncorrectableErrorMask;
01610   UINT32  SecondaryUncorrectableErrorSeverity;
01611   UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
01612 } EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
01613 
01614 ///
01615 /// Generic Hardware Error Source Structure Definition
01616 ///
01617 typedef struct {
01618   UINT16                                                 Type;
01619   UINT16                                                 SourceId;
01620   UINT16                                                 RelatedSourceId;
01621   UINT8                                                  Flags;
01622   UINT8                                                  Enabled;
01623   UINT32                                                 NumberOfRecordsToPreAllocate;
01624   UINT32                                                 MaxSectionsPerRecord;
01625   UINT32                                                 MaxRawDataLength;
01626   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
01627   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
01628   UINT32                                                 ErrorStatusBlockLength;
01629 } EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
01630 
01631 ///
01632 /// Generic Error Status Definition
01633 ///
01634 typedef struct {
01635   EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
01636   UINT32                                       RawDataOffset;
01637   UINT32                                       RawDataLength;
01638   UINT32                                       DataLength;
01639   UINT32                                       ErrorSeverity;
01640 } EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE;
01641 
01642 ///
01643 /// ERST - Error Record Serialization Table
01644 ///
01645 typedef struct {
01646   EFI_ACPI_DESCRIPTION_HEADER Header;
01647   UINT32                      SerializationHeaderSize;
01648   UINT8                       Reserved0[4];
01649   UINT32                      InstructionEntryCount;
01650 } EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
01651 
01652 ///
01653 /// ERST Version (as defined in ACPI 5.1 spec.)
01654 ///
01655 #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
01656 
01657 ///
01658 /// ERST Serialization Actions
01659 ///
01660 #define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION                    0x00
01661 #define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION                     0x01
01662 #define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION                    0x02
01663 #define EFI_ACPI_5_1_ERST_END_OPERATION                            0x03
01664 #define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET                        0x04
01665 #define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION                        0x05
01666 #define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS                        0x06
01667 #define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS                       0x07
01668 #define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER                    0x08
01669 #define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER                    0x09
01670 #define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT                         0x0A
01671 #define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
01672 #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
01673 #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
01674 #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
01675 
01676 ///
01677 /// ERST Action Command Status
01678 ///
01679 #define EFI_ACPI_5_1_ERST_STATUS_SUCCESS                           0x00
01680 #define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
01681 #define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
01682 #define EFI_ACPI_5_1_ERST_STATUS_FAILED                            0x03
01683 #define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY                0x04
01684 #define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND                  0x05
01685 
01686 ///
01687 /// ERST Serialization Instructions
01688 ///
01689 #define EFI_ACPI_5_1_ERST_READ_REGISTER                            0x00
01690 #define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE                      0x01
01691 #define EFI_ACPI_5_1_ERST_WRITE_REGISTER                           0x02
01692 #define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE                     0x03
01693 #define EFI_ACPI_5_1_ERST_NOOP                                     0x04
01694 #define EFI_ACPI_5_1_ERST_LOAD_VAR1                                0x05
01695 #define EFI_ACPI_5_1_ERST_LOAD_VAR2                                0x06
01696 #define EFI_ACPI_5_1_ERST_STORE_VAR1                               0x07
01697 #define EFI_ACPI_5_1_ERST_ADD                                      0x08
01698 #define EFI_ACPI_5_1_ERST_SUBTRACT                                 0x09
01699 #define EFI_ACPI_5_1_ERST_ADD_VALUE                                0x0A
01700 #define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE                           0x0B
01701 #define EFI_ACPI_5_1_ERST_STALL                                    0x0C
01702 #define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE                         0x0D
01703 #define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
01704 #define EFI_ACPI_5_1_ERST_GOTO                                     0x0F
01705 #define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE                     0x10
01706 #define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE                     0x11
01707 #define EFI_ACPI_5_1_ERST_MOVE_DATA                                0x12
01708 
01709 ///
01710 /// ERST Instruction Flags
01711 ///
01712 #define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER                        0x01
01713 
01714 ///
01715 /// ERST Serialization Instruction Entry
01716 ///
01717 typedef struct {
01718   UINT8                                    SerializationAction;
01719   UINT8                                    Instruction;
01720   UINT8                                    Flags;
01721   UINT8                                    Reserved0;
01722   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
01723   UINT64                                   Value;
01724   UINT64                                   Mask;
01725 } EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
01726 
01727 ///
01728 /// EINJ - Error Injection Table
01729 ///
01730 typedef struct {
01731   EFI_ACPI_DESCRIPTION_HEADER Header;
01732   UINT32                      InjectionHeaderSize;
01733   UINT8                       InjectionFlags;
01734   UINT8                       Reserved0[3];
01735   UINT32                      InjectionEntryCount;
01736 } EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER;
01737 
01738 ///
01739 /// EINJ Version (as defined in ACPI 5.1 spec.)
01740 ///
01741 #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01
01742 
01743 ///
01744 /// EINJ Error Injection Actions
01745 ///
01746 #define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION                0x00
01747 #define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
01748 #define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE                           0x02
01749 #define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE                           0x03
01750 #define EFI_ACPI_5_1_EINJ_END_OPERATION                            0x04
01751 #define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION                        0x05
01752 #define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS                        0x06
01753 #define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS                       0x07
01754 #define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR                            0xFF
01755 
01756 ///
01757 /// EINJ Action Command Status
01758 ///
01759 #define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS                           0x00
01760 #define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
01761 #define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS                    0x02
01762 
01763 ///
01764 /// EINJ Error Type Definition
01765 ///
01766 #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
01767 #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
01768 #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
01769 #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
01770 #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
01771 #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
01772 #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
01773 #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
01774 #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
01775 #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
01776 #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
01777 #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
01778 
01779 ///
01780 /// EINJ Injection Instructions
01781 ///
01782 #define EFI_ACPI_5_1_EINJ_READ_REGISTER                            0x00
01783 #define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE                      0x01
01784 #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER                           0x02
01785 #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE                     0x03
01786 #define EFI_ACPI_5_1_EINJ_NOOP                                     0x04
01787 
01788 ///
01789 /// EINJ Instruction Flags
01790 ///
01791 #define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER                        0x01
01792 
01793 ///
01794 /// EINJ Injection Instruction Entry
01795 ///
01796 typedef struct {
01797   UINT8                                    InjectionAction;
01798   UINT8                                    Instruction;
01799   UINT8                                    Flags;
01800   UINT8                                    Reserved0;
01801   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
01802   UINT64                                   Value;
01803   UINT64                                   Mask;
01804 } EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY;
01805 
01806 ///
01807 /// EINJ Trigger Action Table
01808 ///
01809 typedef struct {
01810   UINT32  HeaderSize;
01811   UINT32  Revision;
01812   UINT32  TableSize;
01813   UINT32  EntryCount;
01814 } EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE;
01815 
01816 ///
01817 /// Platform Communications Channel Table (PCCT)
01818 ///
01819 typedef struct {
01820   EFI_ACPI_DESCRIPTION_HEADER Header;
01821   UINT32                      Flags;
01822   UINT64                      Reserved;
01823 } EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
01824 
01825 ///
01826 /// PCCT Version (as defined in ACPI 5.1 spec.)
01827 ///
01828 #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
01829 
01830 ///
01831 /// PCCT Global Flags
01832 ///
01833 #define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL                      BIT0
01834 
01835 //
01836 // PCCT Subspace type
01837 //
01838 #define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC  0x00
01839 
01840 ///
01841 /// PCC Subspace Structure Header
01842 ///
01843 typedef struct {
01844   UINT8        Type;
01845   UINT8        Length;
01846 } EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER;
01847 
01848 ///
01849 /// Generic Communications Subspace Structure
01850 ///
01851 typedef struct {
01852   UINT8                                    Type;
01853   UINT8                                    Length;
01854   UINT8                                    Reserved[6];
01855   UINT64                                   BaseAddress;
01856   UINT64                                   AddressLength;
01857   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
01858   UINT64                                   DoorbellPreserve;
01859   UINT64                                   DoorbellWrite;
01860   UINT32                                   NominalLatency;
01861   UINT32                                   MaximumPeriodicAccessRate;
01862   UINT16                                   MinimumRequestTurnaroundTime;
01863 } EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC;
01864 
01865 ///
01866 /// Generic Communications Channel Shared Memory Region
01867 ///
01868 
01869 typedef struct {
01870   UINT8                                    Command;
01871   UINT8                                    Reserved:7;
01872   UINT8                                    GenerateSci:1;
01873 } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
01874 
01875 typedef struct {
01876   UINT8                                    CommandComplete:1;
01877   UINT8                                    SciDoorbell:1;
01878   UINT8                                    Error:1;
01879   UINT8                                    PlatformNotification:1;
01880   UINT8                                    Reserved:4;
01881   UINT8                                    Reserved1;
01882 } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
01883 
01884 typedef struct {
01885   UINT32                                                    Signature;
01886   EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND    Command;
01887   EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS     Status;
01888 } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
01889 
01890 //
01891 // Known table signatures
01892 //
01893 
01894 ///
01895 /// "RSD PTR " Root System Description Pointer
01896 ///
01897 #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
01898 
01899 ///
01900 /// "APIC" Multiple APIC Description Table
01901 ///
01902 #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
01903 
01904 ///
01905 /// "BERT" Boot Error Record Table
01906 ///
01907 #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE  SIGNATURE_32('B', 'E', 'R', 'T')
01908 
01909 ///
01910 /// "BGRT" Boot Graphics Resource Table
01911 ///
01912 #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('B', 'G', 'R', 'T')
01913 
01914 ///
01915 /// "CPEP" Corrected Platform Error Polling Table
01916 ///
01917 #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
01918 
01919 ///
01920 /// "DSDT" Differentiated System Description Table
01921 ///
01922 #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
01923 
01924 ///
01925 /// "ECDT" Embedded Controller Boot Resources Table
01926 ///
01927 #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
01928 
01929 ///
01930 /// "EINJ" Error Injection Table
01931 ///
01932 #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'I', 'N', 'J')
01933 
01934 ///
01935 /// "ERST" Error Record Serialization Table
01936 ///
01937 #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE  SIGNATURE_32('E', 'R', 'S', 'T')
01938 
01939 ///
01940 /// "FACP" Fixed ACPI Description Table
01941 ///
01942 #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
01943 
01944 ///
01945 /// "FACS" Firmware ACPI Control Structure
01946 ///
01947 #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
01948 
01949 ///
01950 /// "FPDT" Firmware Performance Data Table
01951 ///
01952 #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE  SIGNATURE_32('F', 'P', 'D', 'T')
01953 
01954 ///
01955 /// "GTDT" Generic Timer Description Table
01956 ///
01957 #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('G', 'T', 'D', 'T')
01958 
01959 ///
01960 /// "HEST" Hardware Error Source Table
01961 ///
01962 #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE  SIGNATURE_32('H', 'E', 'S', 'T')
01963 
01964 ///
01965 /// "MPST" Memory Power State Table
01966 ///
01967 #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE  SIGNATURE_32('M', 'P', 'S', 'T')
01968 
01969 ///
01970 /// "MSCT" Maximum System Characteristics Table
01971 ///
01972 #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'C', 'T')
01973 
01974 ///
01975 /// "PMTT" Platform Memory Topology Table
01976 ///
01977 #define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE  SIGNATURE_32('P', 'M', 'T', 'T')
01978 
01979 ///
01980 /// "PSDT" Persistent System Description Table
01981 ///
01982 #define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
01983 
01984 ///
01985 /// "RASF" ACPI RAS Feature Table
01986 ///
01987 #define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE  SIGNATURE_32('R', 'A', 'S', 'F')
01988 
01989 ///
01990 /// "RSDT" Root System Description Table
01991 ///
01992 #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
01993 
01994 ///
01995 /// "SBST" Smart Battery Specification Table
01996 ///
01997 #define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
01998 
01999 ///
02000 /// "SLIT" System Locality Information Table
02001 ///
02002 #define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
02003 
02004 ///
02005 /// "SRAT" System Resource Affinity Table
02006 ///
02007 #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
02008 
02009 ///
02010 /// "SSDT" Secondary System Description Table
02011 ///
02012 #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
02013 
02014 ///
02015 /// "XSDT" Extended System Description Table
02016 ///
02017 #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
02018 
02019 ///
02020 /// "BOOT" MS Simple Boot Spec
02021 ///
02022 #define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
02023 
02024 ///
02025 /// "CSRT" MS Core System Resource Table
02026 ///
02027 #define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('C', 'S', 'R', 'T')
02028 
02029 ///
02030 /// "DBG2" MS Debug Port 2 Spec
02031 ///
02032 #define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', '2')
02033 
02034 ///
02035 /// "DBGP" MS Debug Port Spec
02036 ///
02037 #define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
02038 
02039 ///
02040 /// "DMAR" DMA Remapping Table
02041 ///
02042 #define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE  SIGNATURE_32('D', 'M', 'A', 'R')
02043 
02044 ///
02045 /// "DRTM" Dynamic Root of Trust for Measurement Table
02046 ///
02047 #define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE  SIGNATURE_32('D', 'R', 'T', 'M')
02048 
02049 ///
02050 /// "ETDT" Event Timer Description Table
02051 ///
02052 #define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
02053 
02054 ///
02055 /// "HPET" IA-PC High Precision Event Timer Table
02056 ///
02057 #define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
02058 
02059 ///
02060 /// "iBFT" iSCSI Boot Firmware Table
02061 ///
02062 #define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
02063 
02064 ///
02065 /// "IVRS" I/O Virtualization Reporting Structure
02066 ///
02067 #define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE  SIGNATURE_32('I', 'V', 'R', 'S')
02068 
02069 ///
02070 /// "LPIT" Low Power Idle Table
02071 ///
02072 #define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE  SIGNATURE_32('L', 'P', 'I', 'T')
02073 
02074 ///
02075 /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
02076 ///
02077 #define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
02078 
02079 ///
02080 /// "MCHI" Management Controller Host Interface Table
02081 ///
02082 #define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'H', 'I')
02083 
02084 ///
02085 /// "MSDM" MS Data Management Table
02086 ///
02087 #define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
02088 
02089 ///
02090 /// "SLIC" MS Software Licensing Table Specification
02091 ///
02092 #define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
02093 
02094 ///
02095 /// "SPCR" Serial Port Concole Redirection Table
02096 ///
02097 #define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
02098 
02099 ///
02100 /// "SPMI" Server Platform Management Interface Table
02101 ///
02102 #define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
02103 
02104 ///
02105 /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
02106 ///
02107 #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
02108 
02109 ///
02110 /// "TPM2" Trusted Computing Platform 1 Table
02111 ///
02112 #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE  SIGNATURE_32('T', 'P', 'M', '2')
02113 
02114 ///
02115 /// "UEFI" UEFI ACPI Data Table
02116 ///
02117 #define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE  SIGNATURE_32('U', 'E', 'F', 'I')
02118 
02119 ///
02120 /// "WAET" Windows ACPI Emulated Devices Table
02121 ///
02122 #define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE  SIGNATURE_32('W', 'A', 'E', 'T')
02123 
02124 ///
02125 /// "WDAT" Watchdog Action Table
02126 ///
02127 #define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
02128 
02129 ///
02130 /// "WDRT" Watchdog Resource Table
02131 ///
02132 #define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
02133 
02134 ///
02135 /// "WPBT" MS Platform Binary Table
02136 ///
02137 #define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE  SIGNATURE_32('W', 'P', 'B', 'T')
02138 
02139 #pragma pack()
02140 
02141 #endif