1 /** 2 Based on IndustryStandard/Acpi60.h, original notice: 3 4 ACPI 6.0 definitions from the ACPI Specification Revision 6.0 April, 2015. 5 6 Copyright (c) 2015, Intel Corporation. All rights reserved. 7 This program and the accompanying materials 8 are licensed and made available under the terms and conditions of the BSD License 9 which accompanies this distribution. The full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 **/ 15 module uefi.acpi60; 16 import uefi.base; 17 import uefi.base_type; 18 import uefi.acpiaml; 19 import uefi.acpi10; 20 import uefi.acpi20; 21 import uefi.acpi30; 22 import uefi.acpi40; 23 import uefi.acpi50; 24 import uefi.acpi51; 25 26 public: 27 extern (C): 28 29 /// ACPI 6.0 Generic Address Space definition 30 struct EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE 31 { 32 align(1): 33 UINT8 AddressSpaceId; 34 UINT8 RegisterBitWidth; 35 UINT8 RegisterBitOffset; 36 UINT8 AccessSize; 37 UINT64 Address; 38 } 39 40 enum EFI_ACPI_6_0_SYSTEM_MEMORY = 0; 41 enum EFI_ACPI_6_0_SYSTEM_IO = 1; 42 enum EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE = 2; 43 enum EFI_ACPI_6_0_EMBEDDED_CONTROLLER = 3; 44 enum EFI_ACPI_6_0_SMBUS = 4; 45 enum EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL = 0x0A; 46 enum EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE = 0x7F; 47 enum EFI_ACPI_6_0_UNDEFINED = 0; 48 enum EFI_ACPI_6_0_BYTE = 1; 49 enum EFI_ACPI_6_0_WORD = 2; 50 enum EFI_ACPI_6_0_DWORD = 3; 51 enum EFI_ACPI_6_0_QWORD = 4; 52 /// Root System Description Pointer Structure 53 struct EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER 54 { 55 align(1): 56 UINT64 Signature; 57 UINT8 Checksum; 58 UINT8[6] OemId; 59 UINT8 Revision; 60 UINT32 RsdtAddress; 61 UINT32 Length; 62 UINT64 XsdtAddress; 63 UINT8 ExtendedChecksum; 64 UINT8[3] Reserved; 65 } 66 /// RSD_PTR Revision (as defined in ACPI 6.0 spec.) 67 enum EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION = 0x02; ///< ACPISpec (Revision 6.0) says current value is 2 68 /// Common table header, this prefaces all ACPI tables, including FACS, but 69 /// excluding the RSD PTR structure 70 struct EFI_ACPI_6_0_COMMON_HEADER 71 { 72 align(1): 73 UINT32 Signature; 74 UINT32 Length; 75 } 76 /// RSDT Revision (as defined in ACPI 6.0 spec.) 77 enum EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION = 0x01; 78 /// XSDT Revision (as defined in ACPI 6.0 spec.) 79 enum EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION = 0x01; 80 /// Fixed ACPI Description Table Structure (FADT) 81 struct EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE 82 { 83 align(1): 84 EFI_ACPI_DESCRIPTION_HEADER Header; 85 UINT32 FirmwareCtrl; 86 UINT32 Dsdt; 87 UINT8 Reserved0; 88 UINT8 PreferredPmProfile; 89 UINT16 SciInt; 90 UINT32 SmiCmd; 91 UINT8 AcpiEnable; 92 UINT8 AcpiDisable; 93 UINT8 S4BiosReq; 94 UINT8 PstateCnt; 95 UINT32 Pm1aEvtBlk; 96 UINT32 Pm1bEvtBlk; 97 UINT32 Pm1aCntBlk; 98 UINT32 Pm1bCntBlk; 99 UINT32 Pm2CntBlk; 100 UINT32 PmTmrBlk; 101 UINT32 Gpe0Blk; 102 UINT32 Gpe1Blk; 103 UINT8 Pm1EvtLen; 104 UINT8 Pm1CntLen; 105 UINT8 Pm2CntLen; 106 UINT8 PmTmrLen; 107 UINT8 Gpe0BlkLen; 108 UINT8 Gpe1BlkLen; 109 UINT8 Gpe1Base; 110 UINT8 CstCnt; 111 UINT16 PLvl2Lat; 112 UINT16 PLvl3Lat; 113 UINT16 FlushSize; 114 UINT16 FlushStride; 115 UINT8 DutyOffset; 116 UINT8 DutyWidth; 117 UINT8 DayAlrm; 118 UINT8 MonAlrm; 119 UINT8 Century; 120 UINT16 IaPcBootArch; 121 UINT8 Reserved1; 122 UINT32 Flags; 123 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ResetReg; 124 UINT8 ResetValue; 125 UINT16 ArmBootArch; 126 UINT8 MinorVersion; 127 UINT64 XFirmwareCtrl; 128 UINT64 XDsdt; 129 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 130 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 131 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 132 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 133 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 134 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 135 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 136 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 137 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg; 138 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; 139 UINT64 HypervisorVendorIdentity; 140 } 141 /// FADT Version (as defined in ACPI 6.0 spec.) 142 enum EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION = 0x06; 143 enum EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION = 0x00; 144 enum EFI_ACPI_6_0_PM_PROFILE_UNSPECIFIED = 0; 145 enum EFI_ACPI_6_0_PM_PROFILE_DESKTOP = 1; 146 enum EFI_ACPI_6_0_PM_PROFILE_MOBILE = 2; 147 enum EFI_ACPI_6_0_PM_PROFILE_WORKSTATION = 3; 148 enum EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER = 4; 149 enum EFI_ACPI_6_0_PM_PROFILE_SOHO_SERVER = 5; 150 enum EFI_ACPI_6_0_PM_PROFILE_APPLIANCE_PC = 6; 151 enum EFI_ACPI_6_0_PM_PROFILE_PERFORMANCE_SERVER = 7; 152 enum EFI_ACPI_6_0_PM_PROFILE_TABLET = 8; 153 enum EFI_ACPI_6_0_LEGACY_DEVICES = BIT0; 154 enum EFI_ACPI_6_0_8042 = BIT1; 155 enum EFI_ACPI_6_0_VGA_NOT_PRESENT = BIT2; 156 enum EFI_ACPI_6_0_MSI_NOT_SUPPORTED = BIT3; 157 enum EFI_ACPI_6_0_PCIE_ASPM_CONTROLS = BIT4; 158 enum EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT = BIT5; 159 enum EFI_ACPI_6_0_ARM_PSCI_COMPLIANT = BIT0; 160 enum EFI_ACPI_6_0_ARM_PSCI_USE_HVC = BIT1; 161 enum EFI_ACPI_6_0_WBINVD = BIT0; 162 enum EFI_ACPI_6_0_WBINVD_FLUSH = BIT1; 163 enum EFI_ACPI_6_0_PROC_C1 = BIT2; 164 enum EFI_ACPI_6_0_P_LVL2_UP = BIT3; 165 enum EFI_ACPI_6_0_PWR_BUTTON = BIT4; 166 enum EFI_ACPI_6_0_SLP_BUTTON = BIT5; 167 enum EFI_ACPI_6_0_FIX_RTC = BIT6; 168 enum EFI_ACPI_6_0_RTC_S4 = BIT7; 169 enum EFI_ACPI_6_0_TMR_VAL_EXT = BIT8; 170 enum EFI_ACPI_6_0_DCK_CAP = BIT9; 171 enum EFI_ACPI_6_0_RESET_REG_SUP = BIT10; 172 enum EFI_ACPI_6_0_SEALED_CASE = BIT11; 173 enum EFI_ACPI_6_0_HEADLESS = BIT12; 174 enum EFI_ACPI_6_0_CPU_SW_SLP = BIT13; 175 enum EFI_ACPI_6_0_PCI_EXP_WAK = BIT14; 176 enum EFI_ACPI_6_0_USE_PLATFORM_CLOCK = BIT15; 177 enum EFI_ACPI_6_0_S4_RTC_STS_VALID = BIT16; 178 enum EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE = BIT17; 179 enum EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL = BIT18; 180 enum EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE = BIT19; 181 enum EFI_ACPI_6_0_HW_REDUCED_ACPI = BIT20; 182 enum EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE = BIT21; 183 /// Firmware ACPI Control Structure 184 struct EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE 185 { 186 align(1): 187 UINT32 Signature; 188 UINT32 Length; 189 UINT32 HardwareSignature; 190 UINT32 FirmwareWakingVector; 191 UINT32 GlobalLock; 192 UINT32 Flags; 193 UINT64 XFirmwareWakingVector; 194 UINT8 Version; 195 UINT8[3] Reserved0; 196 UINT32 OspmFlags; 197 UINT8[24] Reserved1; 198 } 199 /// FACS Version (as defined in ACPI 6.0 spec.) 200 enum EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION = 0x02; 201 /// Firmware Control Structure Feature Flags 202 /// All other bits are reserved and must be set to 0. 203 enum EFI_ACPI_6_0_S4BIOS_F = BIT0; 204 enum EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F = BIT1; 205 /// OSPM Enabled Firmware Control Structure Flags 206 /// All other bits are reserved and must be set to 0. 207 enum EFI_ACPI_6_0_OSPM_64BIT_WAKE_F = BIT0; 208 enum EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION = 0x02; 209 enum EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION = 0x02; 210 /// Multiple APIC Description Table header definition. The rest of the table 211 /// must be defined in a platform specific manner. 212 struct EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER 213 { 214 align(1): 215 EFI_ACPI_DESCRIPTION_HEADER Header; 216 UINT32 LocalApicAddress; 217 UINT32 Flags; 218 } 219 /// MADT Revision (as defined in ACPI 6.0 spec.) 220 enum EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION = 0x03; 221 /// Multiple APIC Flags 222 /// All other bits are reserved and must be set to 0. 223 enum EFI_ACPI_6_0_PCAT_COMPAT = BIT0; 224 enum EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC = 0x00; 225 enum EFI_ACPI_6_0_IO_APIC = 0x01; 226 enum EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE = 0x02; 227 enum EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE = 0x03; 228 enum EFI_ACPI_6_0_LOCAL_APIC_NMI = 0x04; 229 enum EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE = 0x05; 230 enum EFI_ACPI_6_0_IO_SAPIC = 0x06; 231 enum EFI_ACPI_6_0_LOCAL_SAPIC = 0x07; 232 enum EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES = 0x08; 233 enum EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC = 0x09; 234 enum EFI_ACPI_6_0_LOCAL_X2APIC_NMI = 0x0A; 235 enum EFI_ACPI_6_0_GIC = 0x0B; 236 enum EFI_ACPI_6_0_GICD = 0x0C; 237 enum EFI_ACPI_6_0_GIC_MSI_FRAME = 0x0D; 238 enum EFI_ACPI_6_0_GICR = 0x0E; 239 enum EFI_ACPI_6_0_GIC_ITS = 0x0F; 240 /// Processor Local APIC Structure Definition 241 struct EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE 242 { 243 align(1): 244 UINT8 Type; 245 UINT8 Length; 246 UINT8 AcpiProcessorUid; 247 UINT8 ApicId; 248 UINT32 Flags; 249 } 250 /// Local APIC Flags. All other bits are reserved and must be 0. 251 enum EFI_ACPI_6_0_LOCAL_APIC_ENABLED = BIT0; 252 /// IO APIC Structure 253 struct EFI_ACPI_6_0_IO_APIC_STRUCTURE 254 { 255 align(1): 256 UINT8 Type; 257 UINT8 Length; 258 UINT8 IoApicId; 259 UINT8 Reserved; 260 UINT32 IoApicAddress; 261 UINT32 GlobalSystemInterruptBase; 262 } 263 /// Interrupt Source Override Structure 264 struct EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE 265 { 266 align(1): 267 UINT8 Type; 268 UINT8 Length; 269 UINT8 Bus; 270 UINT8 Source; 271 UINT32 GlobalSystemInterrupt; 272 UINT16 Flags; 273 } 274 /// Platform Interrupt Sources Structure Definition 275 struct EFI_ACPI_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE 276 { 277 align(1): 278 UINT8 Type; 279 UINT8 Length; 280 UINT16 Flags; 281 UINT8 InterruptType; 282 UINT8 ProcessorId; 283 UINT8 ProcessorEid; 284 UINT8 IoSapicVector; 285 UINT32 GlobalSystemInterrupt; 286 UINT32 PlatformInterruptSourceFlags; 287 UINT8 CpeiProcessorOverride; 288 UINT8[31] Reserved; 289 } 290 291 enum EFI_ACPI_6_0_POLARITY = (3 << 0); 292 enum EFI_ACPI_6_0_TRIGGER_MODE = (3 << 2); 293 /// Non-Maskable Interrupt Source Structure 294 struct EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE 295 { 296 align(1): 297 UINT8 Type; 298 UINT8 Length; 299 UINT16 Flags; 300 UINT32 GlobalSystemInterrupt; 301 } 302 /// Local APIC NMI Structure 303 struct EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE 304 { 305 align(1): 306 UINT8 Type; 307 UINT8 Length; 308 UINT8 AcpiProcessorUid; 309 UINT16 Flags; 310 UINT8 LocalApicLint; 311 } 312 /// Local APIC Address Override Structure 313 struct EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE 314 { 315 align(1): 316 UINT8 Type; 317 UINT8 Length; 318 UINT16 Reserved; 319 UINT64 LocalApicAddress; 320 } 321 /// IO SAPIC Structure 322 struct EFI_ACPI_6_0_IO_SAPIC_STRUCTURE 323 { 324 align(1): 325 UINT8 Type; 326 UINT8 Length; 327 UINT8 IoApicId; 328 UINT8 Reserved; 329 UINT32 GlobalSystemInterruptBase; 330 UINT64 IoSapicAddress; 331 } 332 /// Local SAPIC Structure 333 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 334 struct EFI_ACPI_6_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE 335 { 336 align(1): 337 UINT8 Type; 338 UINT8 Length; 339 UINT8 AcpiProcessorId; 340 UINT8 LocalSapicId; 341 UINT8 LocalSapicEid; 342 UINT8[3] Reserved; 343 UINT32 Flags; 344 UINT32 ACPIProcessorUIDValue; 345 } 346 /// Platform Interrupt Sources Structure 347 struct EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE 348 { 349 align(1): 350 UINT8 Type; 351 UINT8 Length; 352 UINT16 Flags; 353 UINT8 InterruptType; 354 UINT8 ProcessorId; 355 UINT8 ProcessorEid; 356 UINT8 IoSapicVector; 357 UINT32 GlobalSystemInterrupt; 358 UINT32 PlatformInterruptSourceFlags; 359 } 360 /// Platform Interrupt Source Flags. 361 /// All other bits are reserved and must be set to 0. 362 enum EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE = BIT0; 363 /// Processor Local x2APIC Structure Definition 364 struct EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE 365 { 366 align(1): 367 UINT8 Type; 368 UINT8 Length; 369 UINT8[2] Reserved; 370 UINT32 X2ApicId; 371 UINT32 Flags; 372 UINT32 AcpiProcessorUid; 373 } 374 /// Local x2APIC NMI Structure 375 struct EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE 376 { 377 align(1): 378 UINT8 Type; 379 UINT8 Length; 380 UINT16 Flags; 381 UINT32 AcpiProcessorUid; 382 UINT8 LocalX2ApicLint; 383 UINT8[3] Reserved; 384 } 385 /// GIC Structure 386 struct EFI_ACPI_6_0_GIC_STRUCTURE 387 { 388 align(1): 389 UINT8 Type; 390 UINT8 Length; 391 UINT16 Reserved; 392 UINT32 CPUInterfaceNumber; 393 UINT32 AcpiProcessorUid; 394 UINT32 Flags; 395 UINT32 ParkingProtocolVersion; 396 UINT32 PerformanceInterruptGsiv; 397 UINT64 ParkedAddress; 398 UINT64 PhysicalBaseAddress; 399 UINT64 GICV; 400 UINT64 GICH; 401 UINT32 VGICMaintenanceInterrupt; 402 UINT64 GICRBaseAddress; 403 UINT64 MPIDR; 404 UINT8 ProcessorPowerEfficiencyClass; 405 UINT8[3] Reserved2; 406 } 407 /// GIC Flags. All other bits are reserved and must be 0. 408 enum EFI_ACPI_6_0_GIC_ENABLED = BIT0; 409 enum EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL = BIT1; 410 enum EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS = BIT2; 411 /// GIC Distributor Structure 412 struct EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE 413 { 414 align(1): 415 UINT8 Type; 416 UINT8 Length; 417 UINT16 Reserved1; 418 UINT32 GicId; 419 UINT64 PhysicalBaseAddress; 420 UINT32 SystemVectorBase; 421 UINT32 Reserved2; 422 } 423 /// GIC MSI Frame Structure 424 struct EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE 425 { 426 align(1): 427 UINT8 Type; 428 UINT8 Length; 429 UINT16 Reserved1; 430 UINT32 GicMsiFrameId; 431 UINT64 PhysicalBaseAddress; 432 UINT32 Flags; 433 UINT16 SPICount; 434 UINT16 SPIBase; 435 } 436 /// GIC MSI Frame Flags. All other bits are reserved and must be 0. 437 enum EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT = BIT0; 438 /// GICR Structure 439 struct EFI_ACPI_6_0_GICR_STRUCTURE 440 { 441 align(1): 442 UINT8 Type; 443 UINT8 Length; 444 UINT16 Reserved; 445 UINT64 DiscoveryRangeBaseAddress; 446 UINT32 DiscoveryRangeLength; 447 } 448 /// GIC Interrupt Translation Service Structure 449 struct EFI_ACPI_6_0_GIC_ITS_STRUCTURE 450 { 451 align(1): 452 UINT8 Type; 453 UINT8 Length; 454 UINT16 Reserved; 455 UINT32 GicItsId; 456 UINT64 PhysicalBaseAddress; 457 UINT32 Reserved2; 458 } 459 /// Smart Battery Description Table (SBST) 460 struct EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE 461 { 462 align(1): 463 EFI_ACPI_DESCRIPTION_HEADER Header; 464 UINT32 WarningEnergyLevel; 465 UINT32 LowEnergyLevel; 466 UINT32 CriticalEnergyLevel; 467 } 468 /// SBST Version (as defined in ACPI 6.0 spec.) 469 enum EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION = 0x01; 470 /// Embedded Controller Boot Resources Table (ECDT) 471 /// The table is followed by a null terminated ASCII string that contains 472 /// a fully qualified reference to the name space object. 473 struct EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE 474 { 475 align(1): 476 EFI_ACPI_DESCRIPTION_HEADER Header; 477 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcControl; 478 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcData; 479 UINT32 Uid; 480 UINT8 GpeBit; 481 } 482 /// ECDT Version (as defined in ACPI 6.0 spec.) 483 enum EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION = 0x01; 484 /// System Resource Affinity Table (SRAT). The rest of the table 485 /// must be defined in a platform specific manner. 486 struct EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER 487 { 488 align(1): 489 EFI_ACPI_DESCRIPTION_HEADER Header; 490 UINT32 Reserved1; ///< Must be set to 1 491 UINT64 Reserved2; 492 } 493 /// SRAT Version (as defined in ACPI 6.0 spec.) 494 enum EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION = 0x03; 495 enum EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY = 0x00; 496 enum EFI_ACPI_6_0_MEMORY_AFFINITY = 0x01; 497 enum EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY = 0x02; 498 enum EFI_ACPI_6_0_GICC_AFFINITY = 0x03; 499 /// Processor Local APIC/SAPIC Affinity Structure Definition 500 struct EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE 501 { 502 align(1): 503 UINT8 Type; 504 UINT8 Length; 505 UINT8 ProximityDomain7To0; 506 UINT8 ApicId; 507 UINT32 Flags; 508 UINT8 LocalSapicEid; 509 UINT8[3] ProximityDomain31To8; 510 UINT32 ClockDomain; 511 } 512 /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 513 enum EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED = (1 << 0); 514 /// Memory Affinity Structure Definition 515 struct EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE 516 { 517 align(1): 518 UINT8 Type; 519 UINT8 Length; 520 UINT32 ProximityDomain; 521 UINT16 Reserved1; 522 UINT32 AddressBaseLow; 523 UINT32 AddressBaseHigh; 524 UINT32 LengthLow; 525 UINT32 LengthHigh; 526 UINT32 Reserved2; 527 UINT32 Flags; 528 UINT64 Reserved3; 529 } 530 531 enum EFI_ACPI_6_0_MEMORY_ENABLED = (1 << 0); 532 enum EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE = (1 << 1); 533 enum EFI_ACPI_6_0_MEMORY_NONVOLATILE = (1 << 2); 534 /// Processor Local x2APIC Affinity Structure Definition 535 struct EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE 536 { 537 align(1): 538 UINT8 Type; 539 UINT8 Length; 540 UINT8[2] Reserved1; 541 UINT32 ProximityDomain; 542 UINT32 X2ApicId; 543 UINT32 Flags; 544 UINT32 ClockDomain; 545 UINT8[4] Reserved2; 546 } 547 /// GICC Affinity Structure Definition 548 struct EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE 549 { 550 align(1): 551 UINT8 Type; 552 UINT8 Length; 553 UINT32 ProximityDomain; 554 UINT32 AcpiProcessorUid; 555 UINT32 Flags; 556 UINT32 ClockDomain; 557 } 558 /// GICC Flags. All other bits are reserved and must be 0. 559 enum EFI_ACPI_6_0_GICC_ENABLED = (1 << 0); 560 /// System Locality Distance Information Table (SLIT). 561 /// The rest of the table is a matrix. 562 struct EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER 563 { 564 align(1): 565 EFI_ACPI_DESCRIPTION_HEADER Header; 566 UINT64 NumberOfSystemLocalities; 567 } 568 /// SLIT Version (as defined in ACPI 6.0 spec.) 569 enum EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION = 0x01; 570 /// Corrected Platform Error Polling Table (CPEP) 571 struct EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER 572 { 573 align(1): 574 EFI_ACPI_DESCRIPTION_HEADER Header; 575 UINT8[8] Reserved; 576 } 577 /// CPEP Version (as defined in ACPI 6.0 spec.) 578 enum EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION = 0x01; 579 enum EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC = 0x00; 580 /// Corrected Platform Error Polling Processor Structure Definition 581 struct EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE 582 { 583 align(1): 584 UINT8 Type; 585 UINT8 Length; 586 UINT8 ProcessorId; 587 UINT8 ProcessorEid; 588 UINT32 PollingInterval; 589 } 590 /// Maximum System Characteristics Table (MSCT) 591 struct EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER 592 { 593 align(1): 594 EFI_ACPI_DESCRIPTION_HEADER Header; 595 UINT32 OffsetProxDomInfo; 596 UINT32 MaximumNumberOfProximityDomains; 597 UINT32 MaximumNumberOfClockDomains; 598 UINT64 MaximumPhysicalAddress; 599 } 600 /// MSCT Version (as defined in ACPI 6.0 spec.) 601 enum EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION = 0x01; 602 /// Maximum Proximity Domain Information Structure Definition 603 struct EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE 604 { 605 align(1): 606 UINT8 Revision; 607 UINT8 Length; 608 UINT32 ProximityDomainRangeLow; 609 UINT32 ProximityDomainRangeHigh; 610 UINT32 MaximumProcessorCapacity; 611 UINT64 MaximumMemoryCapacity; 612 } 613 /// ACPI RAS Feature Table definition. 614 struct EFI_ACPI_6_0_RAS_FEATURE_TABLE 615 { 616 align(1): 617 EFI_ACPI_DESCRIPTION_HEADER Header; 618 UINT8[12] PlatformCommunicationChannelIdentifier; 619 } 620 /// RASF Version (as defined in ACPI 6.0 spec.) 621 enum EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION = 0x01; 622 /// ACPI RASF Platform Communication Channel Shared Memory Region definition. 623 struct EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION 624 { 625 align(1): 626 UINT32 Signature; 627 UINT16 Command; 628 UINT16 Status; 629 UINT16 Version; 630 UINT8[16] RASCapabilities; 631 UINT8[16] SetRASCapabilities; 632 UINT16 NumberOfRASFParameterBlocks; 633 UINT32 SetRASCapabilitiesStatus; 634 } 635 /// ACPI RASF PCC command code 636 enum EFI_ACPI_6_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND = 0x01; 637 /// ACPI RASF Platform RAS Capabilities 638 enum EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED = 0x01; 639 enum EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE = 0x02; 640 /// ACPI RASF Parameter Block structure for PATROL_SCRUB 641 struct EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE 642 { 643 align(1): 644 UINT16 Type; 645 UINT16 Version; 646 UINT16 Length; 647 UINT16 PatrolScrubCommand; 648 UINT64[2] RequestedAddressRange; 649 UINT64[2] ActualAddressRange; 650 UINT16 Flags; 651 UINT8 RequestedSpeed; 652 } 653 /// ACPI RASF Patrol Scrub command 654 enum EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS = 0x01; 655 enum EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER = 0x02; 656 enum EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER = 0x03; 657 /// Memory Power State Table definition. 658 struct EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE 659 { 660 align(1): 661 EFI_ACPI_DESCRIPTION_HEADER Header; 662 UINT8 PlatformCommunicationChannelIdentifier; 663 UINT8[3] Reserved; 664 // Memory Power Node Structure 665 // Memory Power State Characteristics 666 } 667 /// MPST Version (as defined in ACPI 6.0 spec.) 668 enum EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION = 0x01; 669 /// MPST Platform Communication Channel Shared Memory Region definition. 670 struct EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION 671 { 672 align(1): 673 UINT32 Signature; 674 UINT16 Command; 675 UINT16 Status; 676 UINT32 MemoryPowerCommandRegister; 677 UINT32 MemoryPowerStatusRegister; 678 UINT32 PowerStateId; 679 UINT32 MemoryPowerNodeId; 680 UINT64 MemoryEnergyConsumed; 681 UINT64 ExpectedAveragePowerComsuned; 682 } 683 /// ACPI MPST PCC command code 684 enum EFI_ACPI_6_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND = 0x03; 685 /// ACPI MPST Memory Power command 686 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE = 0x01; 687 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE = 0x02; 688 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED = 0x03; 689 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED = 0x04; 690 /// MPST Memory Power Node Table 691 struct EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE 692 { 693 align(1): 694 UINT8 PowerStateValue; 695 UINT8 PowerStateInformationIndex; 696 } 697 698 struct EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE 699 { 700 align(1): 701 UINT8 Flag; 702 UINT8 Reserved; 703 UINT16 MemoryPowerNodeId; 704 UINT32 Length; 705 UINT64 AddressBase; 706 UINT64 AddressLength; 707 UINT32 NumberOfPowerStates; 708 UINT32 NumberOfPhysicalComponents; 709 //EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; 710 //UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; 711 } 712 713 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE = 0x01; 714 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED = 0x02; 715 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE = 0x04; 716 struct EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE 717 { 718 align(1): 719 UINT16 MemoryPowerNodeCount; 720 UINT8[2] Reserved; 721 } 722 /// MPST Memory Power State Characteristics Table 723 struct EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE 724 { 725 align(1): 726 UINT8 PowerStateStructureID; 727 UINT8 Flag; 728 UINT16 Reserved; 729 UINT32 AveragePowerConsumedInMPS0; 730 UINT32 RelativePowerSavingToMPS0; 731 UINT64 ExitLatencyToMPS0; 732 } 733 734 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED = 0x01; 735 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY = 0x02; 736 enum EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT = 0x04; 737 struct EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE 738 { 739 align(1): 740 UINT16 MemoryPowerStateCharacteristicsCount; 741 UINT8[2] Reserved; 742 } 743 /// Memory Topology Table definition. 744 struct EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE 745 { 746 align(1): 747 EFI_ACPI_DESCRIPTION_HEADER Header; 748 UINT32 Reserved; 749 } 750 /// PMTT Version (as defined in ACPI 6.0 spec.) 751 enum EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION = 0x01; 752 /// Common Memory Aggregator Device Structure. 753 struct EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE 754 { 755 align(1): 756 UINT8 Type; 757 UINT8 Reserved; 758 UINT16 Length; 759 UINT16 Flags; 760 UINT16 Reserved1; 761 } 762 /// Memory Aggregator Device Type 763 enum EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET = 0x1; 764 enum EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER = 0x2; 765 enum EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM = 0x3; 766 /// Socket Memory Aggregator Device Structure. 767 struct EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE 768 { 769 align(1): 770 EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 771 UINT16 SocketIdentifier; 772 UINT16 Reserved; 773 //EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; 774 } 775 /// MemoryController Memory Aggregator Device Structure. 776 struct EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE 777 { 778 align(1): 779 EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 780 UINT32 ReadLatency; 781 UINT32 WriteLatency; 782 UINT32 ReadBandwidth; 783 UINT32 WriteBandwidth; 784 UINT16 OptimalAccessUnit; 785 UINT16 OptimalAccessAlignment; 786 UINT16 Reserved; 787 UINT16 NumberOfProximityDomains; 788 //UINT32 ProximityDomain[NumberOfProximityDomains]; 789 //EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; 790 } 791 /// DIMM Memory Aggregator Device Structure. 792 struct EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE 793 { 794 align(1): 795 EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 796 UINT16 PhysicalComponentIdentifier; 797 UINT16 Reserved; 798 UINT32 SizeOfDimm; 799 UINT32 SmbiosHandle; 800 } 801 /// Boot Graphics Resource Table definition. 802 struct EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE 803 { 804 align(1): 805 EFI_ACPI_DESCRIPTION_HEADER Header; 806 /// 807 /// 2-bytes (16 bit) version ID. This value must be 1. 808 /// 809 UINT16 Version; 810 /// 811 /// 1-byte status field indicating current status about the table. 812 /// Bits[7:1] = Reserved (must be zero) 813 /// Bit [0] = Valid. A one indicates the boot image graphic is valid. 814 /// 815 UINT8 Status; 816 /// 817 /// 1-byte enumerated type field indicating format of the image. 818 /// 0 = Bitmap 819 /// 1 - 255 Reserved (for future use) 820 /// 821 UINT8 ImageType; 822 /// 823 /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy 824 /// of the image bitmap. 825 /// 826 UINT64 ImageAddress; 827 /// 828 /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. 829 /// (X, Y) display offset of the top left corner of the boot image. 830 /// The top left corner of the display is at offset (0, 0). 831 /// 832 UINT32 ImageOffsetX; 833 /// 834 /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. 835 /// (X, Y) display offset of the top left corner of the boot image. 836 /// The top left corner of the display is at offset (0, 0). 837 /// 838 UINT32 ImageOffsetY; 839 } 840 /// BGRT Revision 841 enum EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION = 1; 842 /// BGRT Version 843 enum EFI_ACPI_6_0_BGRT_VERSION = 0x01; 844 /// BGRT Status 845 enum EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED = 0x00; 846 enum EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED = 0x01; 847 /// BGRT Image Type 848 enum EFI_ACPI_6_0_BGRT_IMAGE_TYPE_BMP = 0x00; 849 /// FPDT Version (as defined in ACPI 6.0 spec.) 850 enum EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION = 0x01; 851 /// FPDT Performance Record Types 852 enum EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER = 0x0000; 853 enum EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER = 0x0001; 854 /// FPDT Performance Record Revision 855 enum EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER = 0x01; 856 enum EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER = 0x01; 857 /// FPDT Runtime Performance Record Types 858 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME = 0x0000; 859 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND = 0x0001; 860 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT = 0x0002; 861 /// FPDT Runtime Performance Record Revision 862 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME = 0x01; 863 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND = 0x01; 864 enum EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT = 0x02; 865 /// FPDT Performance Record header 866 struct EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER 867 { 868 align(1): 869 UINT16 Type; 870 UINT8 Length; 871 UINT8 Revision; 872 } 873 /// FPDT Performance Table header 874 struct EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER 875 { 876 align(1): 877 UINT32 Signature; 878 UINT32 Length; 879 } 880 /// FPDT Firmware Basic Boot Performance Pointer Record Structure 881 struct EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD 882 { 883 align(1): 884 EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 885 UINT32 Reserved; 886 /// 887 /// 64-bit processor-relative physical address of the Basic Boot Performance Table. 888 /// 889 UINT64 BootPerformanceTablePointer; 890 } 891 /// FPDT S3 Performance Table Pointer Record Structure 892 struct EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD 893 { 894 align(1): 895 EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 896 UINT32 Reserved; 897 /// 898 /// 64-bit processor-relative physical address of the S3 Performance Table. 899 /// 900 UINT64 S3PerformanceTablePointer; 901 } 902 /// FPDT Firmware Basic Boot Performance Record Structure 903 struct EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD 904 { 905 align(1): 906 EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 907 UINT32 Reserved; 908 /// 909 /// Timer value logged at the beginning of firmware image execution. 910 /// This may not always be zero or near zero. 911 /// 912 UINT64 ResetEnd; 913 /// 914 /// Timer value logged just prior to loading the OS boot loader into memory. 915 /// For non-UEFI compatible boots, this field must be zero. 916 /// 917 UINT64 OsLoaderLoadImageStart; 918 /// 919 /// Timer value logged just prior to launching the previously loaded OS boot loader image. 920 /// For non-UEFI compatible boots, the timer value logged will be just prior 921 /// to the INT 19h handler invocation. 922 /// 923 UINT64 OsLoaderStartImageStart; 924 /// 925 /// Timer value logged at the point when the OS loader calls the 926 /// ExitBootServices function for UEFI compatible firmware. 927 /// For non-UEFI compatible boots, this field must be zero. 928 /// 929 UINT64 ExitBootServicesEntry; 930 /// 931 /// Timer value logged at the point just prior towhen the OS loader gaining 932 /// control back from calls the ExitBootServices function for UEFI compatible firmware. 933 /// For non-UEFI compatible boots, this field must be zero. 934 /// 935 UINT64 ExitBootServicesExit; 936 } 937 /// FPDT Firmware Basic Boot Performance Table signature 938 enum EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE = SIGNATURE_32('F', 'B', 'P', 939 'T'); 940 struct EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE 941 { 942 align(1): 943 EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; 944 // 945 // one or more Performance Records. 946 // 947 } 948 /// FPDT "S3PT" S3 Performance Table 949 enum EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE = SIGNATURE_32('S', '3', 'P', 950 'T'); 951 struct EFI_ACPI_6_0_FPDT_FIRMWARE_S3_BOOT_TABLE 952 { 953 align(1): 954 EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; 955 // 956 // one or more Performance Records. 957 // 958 } 959 /// FPDT Basic S3 Resume Performance Record 960 struct EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD 961 { 962 align(1): 963 EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 964 /// 965 /// A count of the number of S3 resume cycles since the last full boot sequence. 966 /// 967 UINT32 ResumeCount; 968 /// 969 /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the 970 /// OS waking vector. Only the most recent resume cycle's time is retained. 971 /// 972 UINT64 FullResume; 973 /// 974 /// Average timer value of all resume cycles logged since the last full boot 975 /// sequence, including the most recent resume. Note that the entire log of 976 /// timer values does not need to be retained in order to calculate this average. 977 /// 978 UINT64 AverageResume; 979 } 980 /// FPDT Basic S3 Suspend Performance Record 981 struct EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD 982 { 983 align(1): 984 EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 985 /// 986 /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. 987 /// Only the most recent suspend cycle's timer value is retained. 988 /// 989 UINT64 SuspendStart; 990 /// 991 /// Timer value recorded at the final firmware write to SLP_TYP (or other 992 /// mechanism) used to trigger hardware entry to S3. 993 /// Only the most recent suspend cycle's timer value is retained. 994 /// 995 UINT64 SuspendEnd; 996 } 997 /// Firmware Performance Record Table definition. 998 struct EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE 999 { 1000 align(1): 1001 EFI_ACPI_DESCRIPTION_HEADER Header; 1002 } 1003 /// Generic Timer Description Table definition. 1004 struct EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE 1005 { 1006 align(1): 1007 EFI_ACPI_DESCRIPTION_HEADER Header; 1008 UINT64 CntControlBasePhysicalAddress; 1009 UINT32 Reserved; 1010 UINT32 SecurePL1TimerGSIV; 1011 UINT32 SecurePL1TimerFlags; 1012 UINT32 NonSecurePL1TimerGSIV; 1013 UINT32 NonSecurePL1TimerFlags; 1014 UINT32 VirtualTimerGSIV; 1015 UINT32 VirtualTimerFlags; 1016 UINT32 NonSecurePL2TimerGSIV; 1017 UINT32 NonSecurePL2TimerFlags; 1018 UINT64 CntReadBasePhysicalAddress; 1019 UINT32 PlatformTimerCount; 1020 UINT32 PlatformTimerOffset; 1021 } 1022 /// GTDT Version (as defined in ACPI 6.0 spec.) 1023 enum EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION = 0x02; 1024 /// Timer Flags. All other bits are reserved and must be 0. 1025 enum EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE = BIT0; 1026 enum EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY = BIT1; 1027 enum EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY = BIT2; 1028 /// Platform Timer Type 1029 enum EFI_ACPI_6_0_GTDT_GT_BLOCK = 0; 1030 enum EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG = 1; 1031 /// GT Block Structure 1032 struct EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE 1033 { 1034 align(1): 1035 UINT8 Type; 1036 UINT16 Length; 1037 UINT8 Reserved; 1038 UINT64 CntCtlBase; 1039 UINT32 GTBlockTimerCount; 1040 UINT32 GTBlockTimerOffset; 1041 } 1042 /// GT Block Timer Structure 1043 struct EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE 1044 { 1045 align(1): 1046 UINT8 GTFrameNumber; 1047 UINT8[3] Reserved; 1048 UINT64 CntBaseX; 1049 UINT64 CntEL0BaseX; 1050 UINT32 GTxPhysicalTimerGSIV; 1051 UINT32 GTxPhysicalTimerFlags; 1052 UINT32 GTxVirtualTimerGSIV; 1053 UINT32 GTxVirtualTimerFlags; 1054 UINT32 GTxCommonFlags; 1055 } 1056 /// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. 1057 enum EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE = BIT0; 1058 enum EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY = BIT1; 1059 /// Common Flags Flags. All other bits are reserved and must be 0. 1060 enum EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER = BIT0; 1061 enum EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY = BIT1; 1062 /// SBSA Generic Watchdog Structure 1063 struct EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE 1064 { 1065 align(1): 1066 UINT8 Type; 1067 UINT16 Length; 1068 UINT8 Reserved; 1069 UINT64 RefreshFramePhysicalAddress; 1070 UINT64 WatchdogControlFramePhysicalAddress; 1071 UINT32 WatchdogTimerGSIV; 1072 UINT32 WatchdogTimerFlags; 1073 } 1074 /// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0. 1075 enum EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE = BIT0; 1076 enum EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY = BIT1; 1077 enum EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER = BIT2; 1078 struct EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE 1079 { 1080 align(1): 1081 EFI_ACPI_DESCRIPTION_HEADER Header; 1082 UINT32 Reserved; 1083 } 1084 1085 enum EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION = 0x1; 1086 enum EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE = 0; 1087 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE_TYPE = 1; 1088 enum EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE_TYPE = 2; 1089 enum EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE = 3; 1090 enum EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE = 4; 1091 enum EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE = 5; 1092 enum EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE = 6; 1093 struct EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER 1094 { 1095 align(1): 1096 UINT16 Type; 1097 UINT16 Length; 1098 } 1099 1100 enum EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT = BIT0; 1101 enum EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID = BIT1; 1102 enum EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION = GUID(0x7305944F, 0xFDDA, 1103 0x44E3, 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0); 1104 enum EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION = GUID( 1105 0x66F0D379, 0xB4F3, 0x4074, 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB); 1106 1107 enum EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION = GUID(0x92F701F6, 0x13B4, 1108 0x405D, 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C); 1109 1110 enum EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION = GUID(0x91AF0530, 1111 0x5D86, 0x470E, 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49); 1112 1113 enum EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE = GUID( 1114 0x77AB535A, 0x45FC, 0x624B, 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E); 1115 1116 enum EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE = GUID( 1117 0x3D5ABD30, 0x4175, 0x87CE, 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB); 1118 1119 enum EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT = GUID( 1120 0x5CEA02C9, 0x4D07, 0x69D3, 0x26, 0x9F, 0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9); 1121 enum EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT = GUID( 1122 0x08018188, 0x42CD, 0xBB48, 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D); 1123 1124 struct EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE 1125 { 1126 align(1): 1127 UINT16 Type; 1128 UINT16 Length; 1129 UINT16 SPARangeStructureIndex; 1130 UINT16 Flags; 1131 UINT32 Reserved_8; 1132 UINT32 ProximityDomain; 1133 GUID AddressRangeTypeGUID; 1134 UINT64 SystemPhysicalAddressRangeBase; 1135 UINT64 SystemPhysicalAddressRangeLength; 1136 UINT64 AddressRangeMemoryMappingAttribute; 1137 } 1138 1139 struct EFI_ACPI_6_0_NFIT_DEVICE_HANDLE 1140 { 1141 align(1): 1142 mixin(bitfields!(UINT32, "DIMMNumber", 4, UINT32, "MemoryChannelNumber", 1143 4, UINT32, "MemoryControllerID", 4, UINT32, "SocketID", 4, UINT32, 1144 "NodeControllerID", 12, UINT32, "Reserved_28", 4)); 1145 } 1146 1147 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL = BIT0; 1148 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL = BIT1; 1149 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL = BIT2; 1150 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF = BIT3; 1151 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF = BIT4; 1152 enum EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS = BIT5; 1153 struct EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE 1154 { 1155 align(1): 1156 UINT16 Type; 1157 UINT16 Length; 1158 EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1159 UINT16 MemoryDevicePhysicalID; 1160 UINT16 MemoryDeviceRegionID; 1161 UINT16 SPARangeStructureIndex; 1162 UINT16 NVDIMMControlRegionStructureIndex; 1163 UINT64 MemoryDeviceRegionSize; 1164 UINT64 RegionOffset; 1165 UINT64 MemoryDevicePhysicalAddressRegionBase; 1166 UINT16 InterleaveStructureIndex; 1167 UINT16 InterleaveWays; 1168 UINT16 MemoryDeviceStateFlags; 1169 UINT16 Reserved_46; 1170 } 1171 1172 struct EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE 1173 { 1174 align(1): 1175 UINT16 Type; 1176 UINT16 Length; 1177 UINT16 InterleaveStructureIndex; 1178 UINT16 Reserved_6; 1179 UINT32 NumberOfLines; 1180 UINT32 LineSize; 1181 //UINT32 LineOffset[NumberOfLines]; 1182 } 1183 1184 struct EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE 1185 { 1186 align(1): 1187 UINT16 Type; 1188 UINT16 Length; 1189 UINT32 Reserved_4; 1190 //UINT8 Data[]; 1191 } 1192 1193 enum EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED = BIT0; 1194 struct EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE 1195 { 1196 align(1): 1197 UINT16 Type; 1198 UINT16 Length; 1199 UINT16 NVDIMMControlRegionStructureIndex; 1200 UINT16 VendorID; 1201 UINT16 DeviceID; 1202 UINT16 RevisionID; 1203 UINT16 SubsystemVendorID; 1204 UINT16 SubsystemDeviceID; 1205 UINT16 SubsystemRevisionID; 1206 UINT8[6] Reserved_18; 1207 UINT32 SerialNumber; 1208 UINT16 RegionFormatInterfaceCode; 1209 UINT16 NumberOfBlockControlWindows; 1210 UINT64 SizeOfBlockControlWindow; 1211 UINT64 CommandRegisterOffsetInBlockControlWindow; 1212 UINT64 SizeOfCommandRegisterInBlockControlWindows; 1213 UINT64 StatusRegisterOffsetInBlockControlWindow; 1214 UINT64 SizeOfStatusRegisterInBlockControlWindows; 1215 UINT16 NVDIMMControlRegionFlag; 1216 UINT8[6] Reserved_74; 1217 } 1218 1219 struct EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE 1220 { 1221 align(1): 1222 UINT16 Type; 1223 UINT16 Length; 1224 UINT16 NVDIMMControlRegionStructureIndex; 1225 UINT16 NumberOfBlockDataWindows; 1226 UINT64 BlockDataWindowStartOffset; 1227 UINT64 SizeOfBlockDataWindow; 1228 UINT64 BlockAccessibleMemoryCapacity; 1229 UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory; 1230 } 1231 1232 struct EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE 1233 { 1234 align(1): 1235 UINT16 Type; 1236 UINT16 Length; 1237 EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1238 UINT16 NumberOfFlushHintAddresses; 1239 UINT8[6] Reserved_10; 1240 //UINT64 FlushHintAddress[NumberOfFlushHintAddresses]; 1241 } 1242 /// Boot Error Record Table (BERT) 1243 struct EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER 1244 { 1245 align(1): 1246 EFI_ACPI_DESCRIPTION_HEADER Header; 1247 UINT32 BootErrorRegionLength; 1248 UINT64 BootErrorRegion; 1249 } 1250 /// BERT Version (as defined in ACPI 6.0 spec.) 1251 enum EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION = 0x01; 1252 /// Boot Error Region Block Status Definition 1253 struct EFI_ACPI_6_0_ERROR_BLOCK_STATUS 1254 { 1255 align(1): 1256 mixin(bitfields!(UINT32, "UncorrectableErrorValid", 1, UINT32, 1257 "CorrectableErrorValid", 1, UINT32, "MultipleUncorrectableErrors", 1, 1258 UINT32, "MultipleCorrectableErrors", 1, UINT32, "ErrorDataEntryCount", 1259 10, UINT32, "Reserved", 18)); 1260 } 1261 /// Boot Error Region Definition 1262 struct EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE 1263 { 1264 align(1): 1265 EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; 1266 UINT32 RawDataOffset; 1267 UINT32 RawDataLength; 1268 UINT32 DataLength; 1269 UINT32 ErrorSeverity; 1270 } 1271 1272 enum EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE = 0x00; 1273 enum EFI_ACPI_6_0_ERROR_SEVERITY_FATAL = 0x01; 1274 enum EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED = 0x02; 1275 enum EFI_ACPI_6_0_ERROR_SEVERITY_NONE = 0x03; 1276 /// Generic Error Data Entry Definition 1277 struct EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE 1278 { 1279 align(1): 1280 UINT8[16] SectionType; 1281 UINT32 ErrorSeverity; 1282 UINT16 Revision; 1283 UINT8 ValidationBits; 1284 UINT8 Flags; 1285 UINT32 ErrorDataLength; 1286 UINT8[16] FruId; 1287 UINT8[20] FruText; 1288 } 1289 /// Generic Error Data Entry Version (as defined in ACPI 6.0 spec.) 1290 enum EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_REVISION = 0x0201; 1291 /// HEST - Hardware Error Source Table 1292 struct EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER 1293 { 1294 align(1): 1295 EFI_ACPI_DESCRIPTION_HEADER Header; 1296 UINT32 ErrorSourceCount; 1297 } 1298 /// HEST Version (as defined in ACPI 6.0 spec.) 1299 enum EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION = 0x01; 1300 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION = 0x00; 1301 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK = 0x01; 1302 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR = 0x02; 1303 enum EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER = 0x06; 1304 enum EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER = 0x07; 1305 enum EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER = 0x08; 1306 enum EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR = 0x09; 1307 enum EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST = (1 << 0); 1308 enum EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL = (1 << 1); 1309 /// IA-32 Architecture Machine Check Exception Structure Definition 1310 struct EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE 1311 { 1312 align(1): 1313 UINT16 Type; 1314 UINT16 SourceId; 1315 UINT8[2] Reserved0; 1316 UINT8 Flags; 1317 UINT8 Enabled; 1318 UINT32 NumberOfRecordsToPreAllocate; 1319 UINT32 MaxSectionsPerRecord; 1320 UINT64 GlobalCapabilityInitData; 1321 UINT64 GlobalControlInitData; 1322 UINT8 NumberOfHardwareBanks; 1323 UINT8[7] Reserved1; 1324 } 1325 /// IA-32 Architecture Machine Check Bank Structure Definition 1326 struct EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE 1327 { 1328 align(1): 1329 UINT8 BankNumber; 1330 UINT8 ClearStatusOnInitialization; 1331 UINT8 StatusDataFormat; 1332 UINT8 Reserved0; 1333 UINT32 ControlRegisterMsrAddress; 1334 UINT64 ControlInitData; 1335 UINT32 StatusRegisterMsrAddress; 1336 UINT32 AddressRegisterMsrAddress; 1337 UINT32 MiscRegisterMsrAddress; 1338 } 1339 /// IA-32 Architecture Machine Check Bank Structure MCA data format 1340 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 = 0x00; 1341 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 = 0x01; 1342 enum EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 = 0x02; 1343 enum EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED = 0x00; 1344 enum EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT = 0x01; 1345 enum EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT = 0x02; 1346 enum EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI = 0x03; 1347 enum EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI = 0x04; 1348 /// Hardware Error Notification Configuration Write Enable Structure Definition 1349 struct EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE 1350 { 1351 align(1): 1352 mixin(bitfields!(UINT16, "Type", 1, UINT16, "PollInterval", 1, UINT16, 1353 "SwitchToPollingThresholdValue", 1, UINT16, 1354 "SwitchToPollingThresholdWindow", 1, UINT16, "ErrorThresholdValue", 1, 1355 UINT16, "ErrorThresholdWindow", 1, UINT16, "Reserved", 10)); 1356 } 1357 /// Hardware Error Notification Structure Definition 1358 struct EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE 1359 { 1360 align(1): 1361 UINT8 Type; 1362 UINT8 Length; 1363 EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 1364 UINT32 PollInterval; 1365 UINT32 Vector; 1366 UINT32 SwitchToPollingThresholdValue; 1367 UINT32 SwitchToPollingThresholdWindow; 1368 UINT32 ErrorThresholdValue; 1369 UINT32 ErrorThresholdWindow; 1370 } 1371 /// IA-32 Architecture Corrected Machine Check Structure Definition 1372 struct EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE 1373 { 1374 align(1): 1375 UINT16 Type; 1376 UINT16 SourceId; 1377 UINT8[2] Reserved0; 1378 UINT8 Flags; 1379 UINT8 Enabled; 1380 UINT32 NumberOfRecordsToPreAllocate; 1381 UINT32 MaxSectionsPerRecord; 1382 EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1383 UINT8 NumberOfHardwareBanks; 1384 UINT8[3] Reserved1; 1385 } 1386 /// IA-32 Architecture NMI Error Structure Definition 1387 struct EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE 1388 { 1389 align(1): 1390 UINT16 Type; 1391 UINT16 SourceId; 1392 UINT8[2] Reserved0; 1393 UINT32 NumberOfRecordsToPreAllocate; 1394 UINT32 MaxSectionsPerRecord; 1395 UINT32 MaxRawDataLength; 1396 } 1397 /// PCI Express Root Port AER Structure Definition 1398 struct EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE 1399 { 1400 align(1): 1401 UINT16 Type; 1402 UINT16 SourceId; 1403 UINT8[2] Reserved0; 1404 UINT8 Flags; 1405 UINT8 Enabled; 1406 UINT32 NumberOfRecordsToPreAllocate; 1407 UINT32 MaxSectionsPerRecord; 1408 UINT32 Bus; 1409 UINT16 Device; 1410 UINT16 Function; 1411 UINT16 DeviceControl; 1412 UINT8[2] Reserved1; 1413 UINT32 UncorrectableErrorMask; 1414 UINT32 UncorrectableErrorSeverity; 1415 UINT32 CorrectableErrorMask; 1416 UINT32 AdvancedErrorCapabilitiesAndControl; 1417 UINT32 RootErrorCommand; 1418 } 1419 /// PCI Express Device AER Structure Definition 1420 struct EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE 1421 { 1422 align(1): 1423 UINT16 Type; 1424 UINT16 SourceId; 1425 UINT8[2] Reserved0; 1426 UINT8 Flags; 1427 UINT8 Enabled; 1428 UINT32 NumberOfRecordsToPreAllocate; 1429 UINT32 MaxSectionsPerRecord; 1430 UINT32 Bus; 1431 UINT16 Device; 1432 UINT16 Function; 1433 UINT16 DeviceControl; 1434 UINT8[2] Reserved1; 1435 UINT32 UncorrectableErrorMask; 1436 UINT32 UncorrectableErrorSeverity; 1437 UINT32 CorrectableErrorMask; 1438 UINT32 AdvancedErrorCapabilitiesAndControl; 1439 } 1440 /// PCI Express Bridge AER Structure Definition 1441 struct EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE 1442 { 1443 align(1): 1444 UINT16 Type; 1445 UINT16 SourceId; 1446 UINT8[2] Reserved0; 1447 UINT8 Flags; 1448 UINT8 Enabled; 1449 UINT32 NumberOfRecordsToPreAllocate; 1450 UINT32 MaxSectionsPerRecord; 1451 UINT32 Bus; 1452 UINT16 Device; 1453 UINT16 Function; 1454 UINT16 DeviceControl; 1455 UINT8[2] Reserved1; 1456 UINT32 UncorrectableErrorMask; 1457 UINT32 UncorrectableErrorSeverity; 1458 UINT32 CorrectableErrorMask; 1459 UINT32 AdvancedErrorCapabilitiesAndControl; 1460 UINT32 SecondaryUncorrectableErrorMask; 1461 UINT32 SecondaryUncorrectableErrorSeverity; 1462 UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 1463 } 1464 /// Generic Hardware Error Source Structure Definition 1465 struct EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE 1466 { 1467 align(1): 1468 UINT16 Type; 1469 UINT16 SourceId; 1470 UINT16 RelatedSourceId; 1471 UINT8 Flags; 1472 UINT8 Enabled; 1473 UINT32 NumberOfRecordsToPreAllocate; 1474 UINT32 MaxSectionsPerRecord; 1475 UINT32 MaxRawDataLength; 1476 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 1477 EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1478 UINT32 ErrorStatusBlockLength; 1479 } 1480 /// Generic Error Status Definition 1481 struct EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE 1482 { 1483 align(1): 1484 EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; 1485 UINT32 RawDataOffset; 1486 UINT32 RawDataLength; 1487 UINT32 DataLength; 1488 UINT32 ErrorSeverity; 1489 } 1490 /// ERST - Error Record Serialization Table 1491 struct EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER 1492 { 1493 align(1): 1494 EFI_ACPI_DESCRIPTION_HEADER Header; 1495 UINT32 SerializationHeaderSize; 1496 UINT8[4] Reserved0; 1497 UINT32 InstructionEntryCount; 1498 } 1499 /// ERST Version (as defined in ACPI 6.0 spec.) 1500 enum EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION = 0x01; 1501 /// ERST Serialization Actions 1502 enum EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION = 0x00; 1503 enum EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION = 0x01; 1504 enum EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION = 0x02; 1505 enum EFI_ACPI_6_0_ERST_END_OPERATION = 0x03; 1506 enum EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET = 0x04; 1507 enum EFI_ACPI_6_0_ERST_EXECUTE_OPERATION = 0x05; 1508 enum EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS = 0x06; 1509 enum EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS = 0x07; 1510 enum EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER = 0x08; 1511 enum EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER = 0x09; 1512 enum EFI_ACPI_6_0_ERST_GET_RECORD_COUNT = 0x0A; 1513 enum EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION = 0x0B; 1514 enum EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE = 0x0D; 1515 enum EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH = 0x0E; 1516 enum EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES = 0x0F; 1517 /// ERST Action Command Status 1518 enum EFI_ACPI_6_0_ERST_STATUS_SUCCESS = 0x00; 1519 enum EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE = 0x01; 1520 enum EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE = 0x02; 1521 enum EFI_ACPI_6_0_ERST_STATUS_FAILED = 0x03; 1522 enum EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY = 0x04; 1523 enum EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND = 0x05; 1524 /// ERST Serialization Instructions 1525 enum EFI_ACPI_6_0_ERST_READ_REGISTER = 0x00; 1526 enum EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE = 0x01; 1527 enum EFI_ACPI_6_0_ERST_WRITE_REGISTER = 0x02; 1528 enum EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE = 0x03; 1529 enum EFI_ACPI_6_0_ERST_NOOP = 0x04; 1530 enum EFI_ACPI_6_0_ERST_LOAD_VAR1 = 0x05; 1531 enum EFI_ACPI_6_0_ERST_LOAD_VAR2 = 0x06; 1532 enum EFI_ACPI_6_0_ERST_STORE_VAR1 = 0x07; 1533 enum EFI_ACPI_6_0_ERST_ADD = 0x08; 1534 enum EFI_ACPI_6_0_ERST_SUBTRACT = 0x09; 1535 enum EFI_ACPI_6_0_ERST_ADD_VALUE = 0x0A; 1536 enum EFI_ACPI_6_0_ERST_SUBTRACT_VALUE = 0x0B; 1537 enum EFI_ACPI_6_0_ERST_STALL = 0x0C; 1538 enum EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE = 0x0D; 1539 enum EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE = 0x0E; 1540 enum EFI_ACPI_6_0_ERST_GOTO = 0x0F; 1541 enum EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE = 0x10; 1542 enum EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE = 0x11; 1543 enum EFI_ACPI_6_0_ERST_MOVE_DATA = 0x12; 1544 /// ERST Instruction Flags 1545 enum EFI_ACPI_6_0_ERST_PRESERVE_REGISTER = 0x01; 1546 /// ERST Serialization Instruction Entry 1547 struct EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY 1548 { 1549 align(1): 1550 UINT8 SerializationAction; 1551 UINT8 Instruction; 1552 UINT8 Flags; 1553 UINT8 Reserved0; 1554 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1555 UINT64 Value; 1556 UINT64 Mask; 1557 } 1558 /// EINJ - Error Injection Table 1559 struct EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER 1560 { 1561 align(1): 1562 EFI_ACPI_DESCRIPTION_HEADER Header; 1563 UINT32 InjectionHeaderSize; 1564 UINT8 InjectionFlags; 1565 UINT8[3] Reserved0; 1566 UINT32 InjectionEntryCount; 1567 } 1568 /// EINJ Version (as defined in ACPI 6.0 spec.) 1569 enum EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION = 0x01; 1570 /// EINJ Error Injection Actions 1571 enum EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION = 0x00; 1572 enum EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE = 0x01; 1573 enum EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE = 0x02; 1574 enum EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE = 0x03; 1575 enum EFI_ACPI_6_0_EINJ_END_OPERATION = 0x04; 1576 enum EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION = 0x05; 1577 enum EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS = 0x06; 1578 enum EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS = 0x07; 1579 enum EFI_ACPI_6_0_EINJ_TRIGGER_ERROR = 0xFF; 1580 /// EINJ Action Command Status 1581 enum EFI_ACPI_6_0_EINJ_STATUS_SUCCESS = 0x00; 1582 enum EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE = 0x01; 1583 enum EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS = 0x02; 1584 /// EINJ Error Type Definition 1585 enum EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE = (1 << 0); 1586 enum EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL = (1 << 1); 1587 enum EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL = (1 << 2); 1588 enum EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE = (1 << 3); 1589 enum EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL = (1 << 4); 1590 enum EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL = (1 << 5); 1591 enum EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE = (1 << 6); 1592 enum EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL = (1 << 7); 1593 enum EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL = (1 << 8); 1594 enum EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE = (1 << 9); 1595 enum EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL = (1 << 10); 1596 enum EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL = (1 << 11); 1597 /// EINJ Injection Instructions 1598 enum EFI_ACPI_6_0_EINJ_READ_REGISTER = 0x00; 1599 enum EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE = 0x01; 1600 enum EFI_ACPI_6_0_EINJ_WRITE_REGISTER = 0x02; 1601 enum EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE = 0x03; 1602 enum EFI_ACPI_6_0_EINJ_NOOP = 0x04; 1603 /// EINJ Instruction Flags 1604 enum EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER = 0x01; 1605 /// EINJ Injection Instruction Entry 1606 struct EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY 1607 { 1608 align(1): 1609 UINT8 InjectionAction; 1610 UINT8 Instruction; 1611 UINT8 Flags; 1612 UINT8 Reserved0; 1613 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1614 UINT64 Value; 1615 UINT64 Mask; 1616 } 1617 /// EINJ Trigger Action Table 1618 struct EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE 1619 { 1620 align(1): 1621 UINT32 HeaderSize; 1622 UINT32 Revision; 1623 UINT32 TableSize; 1624 UINT32 EntryCount; 1625 } 1626 /// Platform Communications Channel Table (PCCT) 1627 struct EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER 1628 { 1629 align(1): 1630 EFI_ACPI_DESCRIPTION_HEADER Header; 1631 UINT32 Flags; 1632 UINT64 Reserved; 1633 } 1634 /// PCCT Version (as defined in ACPI 6.0 spec.) 1635 enum EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION = 0x01; 1636 /// PCCT Global Flags 1637 enum EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL = BIT0; 1638 enum EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC = 0x00; 1639 /// PCC Subspace Structure Header 1640 struct EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER 1641 { 1642 align(1): 1643 UINT8 Type; 1644 UINT8 Length; 1645 } 1646 /// Generic Communications Subspace Structure 1647 struct EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC 1648 { 1649 align(1): 1650 UINT8 Type; 1651 UINT8 Length; 1652 UINT8[6] Reserved; 1653 UINT64 BaseAddress; 1654 UINT64 AddressLength; 1655 EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 1656 UINT64 DoorbellPreserve; 1657 UINT64 DoorbellWrite; 1658 UINT32 NominalLatency; 1659 UINT32 MaximumPeriodicAccessRate; 1660 UINT16 MinimumRequestTurnaroundTime; 1661 } 1662 /// Generic Communications Channel Shared Memory Region 1663 struct EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND 1664 { 1665 align(1): 1666 UINT8 Command; 1667 mixin(bitfields!(UINT8, "Reserved", 7, UINT8, "GenerateSci", 1)); 1668 } 1669 1670 struct EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS 1671 { 1672 align(1): 1673 mixin(bitfields!(UINT8, "CommandComplete", 1, UINT8, "SciDoorbell", 1, 1674 UINT8, "Error", 1, UINT8, "PlatformNotification", 1, UINT8, "Reserved", 4)); 1675 UINT8 Reserved1; 1676 } 1677 1678 struct EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER 1679 { 1680 align(1): 1681 UINT32 Signature; 1682 EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; 1683 EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; 1684 } 1685 /// "RSD PTR " Root System Description Pointer 1686 enum EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE = SIGNATURE_64('R', 1687 'S', 'D', ' ', 'P', 'T', 'R', ' '); 1688 /// "APIC" Multiple APIC Description Table 1689 enum EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('A', 'P', 1690 'I', 'C'); 1691 /// "BERT" Boot Error Record Table 1692 enum EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE = SIGNATURE_32('B', 'E', 'R', 'T'); 1693 /// "BGRT" Boot Graphics Resource Table 1694 enum EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE = SIGNATURE_32('B', 'G', 'R', 1695 'T'); 1696 /// "CPEP" Corrected Platform Error Polling Table 1697 enum EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE = SIGNATURE_32( 1698 'C', 'P', 'E', 'P'); 1699 /// "DSDT" Differentiated System Description Table 1700 enum EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32( 1701 'D', 'S', 'D', 'T'); 1702 /// "ECDT" Embedded Controller Boot Resources Table 1703 enum EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE = SIGNATURE_32( 1704 'E', 'C', 'D', 'T'); 1705 /// "EINJ" Error Injection Table 1706 enum EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE = SIGNATURE_32('E', 'I', 'N', 'J'); 1707 /// "ERST" Error Record Serialization Table 1708 enum EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE = SIGNATURE_32('E', 'R', 1709 'S', 'T'); 1710 /// "FACP" Fixed ACPI Description Table 1711 enum EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('F', 'A', 'C', 1712 'P'); 1713 /// "FACS" Firmware ACPI Control Structure 1714 enum EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE = SIGNATURE_32('F', 'A', 1715 'C', 'S'); 1716 /// "FPDT" Firmware Performance Data Table 1717 enum EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE = SIGNATURE_32('F', 'P', 1718 'D', 'T'); 1719 /// "GTDT" Generic Timer Description Table 1720 enum EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('G', 'T', 1721 'D', 'T'); 1722 /// "HEST" Hardware Error Source Table 1723 enum EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE = SIGNATURE_32('H', 'E', 'S', 1724 'T'); 1725 /// "MPST" Memory Power State Table 1726 enum EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_SIGNATURE = SIGNATURE_32('M', 'P', 'S', 1727 'T'); 1728 /// "MSCT" Maximum System Characteristics Table 1729 enum EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE = SIGNATURE_32('M', 1730 'S', 'C', 'T'); 1731 /// "NFIT" NVDIMM Firmware Interface Table 1732 enum EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE = SIGNATURE_32( 1733 'N', 'F', 'I', 'T'); 1734 /// "PMTT" Platform Memory Topology Table 1735 enum EFI_ACPI_6_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE = SIGNATURE_32('P', 'M', 1736 'T', 'T'); 1737 /// "PSDT" Persistent System Description Table 1738 enum EFI_ACPI_6_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('P', 1739 'S', 'D', 'T'); 1740 /// "RASF" ACPI RAS Feature Table 1741 enum EFI_ACPI_6_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE = SIGNATURE_32('R', 'A', 'S', 'F'); 1742 /// "RSDT" Root System Description Table 1743 enum EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('R', 'S', 1744 'D', 'T'); 1745 /// "SBST" Smart Battery Specification Table 1746 enum EFI_ACPI_6_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE = SIGNATURE_32('S', 'B', 1747 'S', 'T'); 1748 /// "SLIT" System Locality Information Table 1749 enum EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE = SIGNATURE_32('S', 'L', 1750 'I', 'T'); 1751 /// "SRAT" System Resource Affinity Table 1752 enum EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE = SIGNATURE_32('S', 'R', 1753 'A', 'T'); 1754 /// "SSDT" Secondary System Description Table 1755 enum EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('S', 1756 'S', 'D', 'T'); 1757 /// "XSDT" Extended System Description Table 1758 enum EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('X', 'S', 1759 'D', 'T'); 1760 /// "BOOT" MS Simple Boot Spec 1761 enum EFI_ACPI_6_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE = SIGNATURE_32('B', 'O', 'O', 'T'); 1762 /// "CSRT" MS Core System Resource Table 1763 enum EFI_ACPI_6_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE = SIGNATURE_32('C', 'S', 'R', 1764 'T'); 1765 /// "DBG2" MS Debug Port 2 Spec 1766 enum EFI_ACPI_6_0_DEBUG_PORT_2_TABLE_SIGNATURE = SIGNATURE_32('D', 'B', 'G', '2'); 1767 /// "DBGP" MS Debug Port Spec 1768 enum EFI_ACPI_6_0_DEBUG_PORT_TABLE_SIGNATURE = SIGNATURE_32('D', 'B', 'G', 'P'); 1769 /// "DMAR" DMA Remapping Table 1770 enum EFI_ACPI_6_0_DMA_REMAPPING_TABLE_SIGNATURE = SIGNATURE_32('D', 'M', 'A', 'R'); 1771 /// "DRTM" Dynamic Root of Trust for Measurement Table 1772 enum EFI_ACPI_6_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE = SIGNATURE_32( 1773 'D', 'R', 'T', 'M'); 1774 /// "ETDT" Event Timer Description Table 1775 enum EFI_ACPI_6_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32('E', 'T', 1776 'D', 'T'); 1777 /// "HPET" IA-PC High Precision Event Timer Table 1778 enum EFI_ACPI_6_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE = SIGNATURE_32('H', 'P', 1779 'E', 'T'); 1780 /// "iBFT" iSCSI Boot Firmware Table 1781 enum EFI_ACPI_6_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE = SIGNATURE_32('i', 'B', 'F', 1782 'T'); 1783 /// "IORT" Interrupt Source Override 1784 enum EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_SIGNATURE = SIGNATURE_32('I', 'O', 'R', 1785 'T'); 1786 /// "IVRS" I/O Virtualization Reporting Structure 1787 enum EFI_ACPI_6_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE = SIGNATURE_32('I', 1788 'V', 'R', 'S'); 1789 /// "LPIT" Low Power Idle Table 1790 enum EFI_ACPI_6_0_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE = SIGNATURE_32('L', 'P', 1791 'I', 'T'); 1792 /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 1793 enum EFI_ACPI_6_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE = SIGNATURE_32( 1794 'M', 'C', 'F', 'G'); 1795 /// "MCHI" Management Controller Host Interface Table 1796 enum EFI_ACPI_6_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE = SIGNATURE_32( 1797 'M', 'C', 'H', 'I'); 1798 /// "MSDM" MS Data Management Table 1799 enum EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE = SIGNATURE_32('M', 'S', 'D', 'M'); 1800 /// "SLIC" MS Software Licensing Table Specification 1801 enum EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE = SIGNATURE_32('S', 'L', 'I', 1802 'C'); 1803 /// "SPCR" Serial Port Concole Redirection Table 1804 enum EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE = SIGNATURE_32('S', 1805 'P', 'C', 'R'); 1806 /// "SPMI" Server Platform Management Interface Table 1807 enum EFI_ACPI_6_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE = SIGNATURE_32( 1808 'S', 'P', 'M', 'I'); 1809 /// "STAO" _STA Override Table 1810 enum EFI_ACPI_6_0_STA_OVERRIDE_TABLE_SIGNATURE = SIGNATURE_32('S', 'T', 'A', 'O'); 1811 /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 1812 enum EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE = SIGNATURE_32( 1813 'T', 'C', 'P', 'A'); 1814 /// "TPM2" Trusted Computing Platform 1 Table 1815 enum EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE = SIGNATURE_32('T', 1816 'P', 'M', '2'); 1817 /// "UEFI" UEFI ACPI Data Table 1818 enum EFI_ACPI_6_0_UEFI_ACPI_DATA_TABLE_SIGNATURE = SIGNATURE_32('U', 'E', 'F', 'I'); 1819 /// "WAET" Windows ACPI Emulated Devices Table 1820 enum EFI_ACPI_6_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE = SIGNATURE_32('W', 1821 'A', 'E', 'T'); 1822 /// "WDAT" Watchdog Action Table 1823 enum EFI_ACPI_6_0_WATCHDOG_ACTION_TABLE_SIGNATURE = SIGNATURE_32('W', 'D', 'A', 'T'); 1824 /// "WDRT" Watchdog Resource Table 1825 enum EFI_ACPI_6_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE = SIGNATURE_32('W', 'D', 'R', 'T'); 1826 /// "WPBT" MS Platform Binary Table 1827 enum EFI_ACPI_6_0_PLATFORM_BINARY_TABLE_SIGNATURE = SIGNATURE_32('W', 'P', 'B', 'T'); 1828 /// "XENV" Xen Project Table 1829 enum EFI_ACPI_6_0_XEN_PROJECT_TABLE_SIGNATURE = SIGNATURE_32('X', 'E', 'N', 'V');