1 /** @file 2 ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006 3 4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 5 SPDX-License-Identifier: BSD-2-Clause-Patent 6 **/ 7 8 #ifndef _ACPI_3_0_H_ 9 #define _ACPI_3_0_H_ 10 11 #include <IndustryStandard/Acpi20.h> 12 13 // 14 // Define for Descriptor 15 // 16 #define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0B 17 18 #define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR 0x8B 19 20 /// 21 /// C-state Coordination Types 22 /// See s8.4.2.2 _CSD (C-State Dependency) 23 /// 24 #define ACPI_AML_COORD_TYPE_SW_ALL 0xFC 25 #define ACPI_AML_COORD_TYPE_SW_ANY 0xFD 26 #define ACPI_AML_COORD_TYPE_HW_ALL 0xFE 27 28 /// 29 /// _PSD Revision for ACPI 3.0 30 // See s8.4.4.5 _PSD (P-State Dependency) 31 /// 32 #define EFI_ACPI_3_0_AML_PSD_REVISION 0 33 34 // 35 // Ensure proper structure formats 36 // 37 #pragma pack(1) 38 39 /// 40 /// Extended Address Space Descriptor 41 /// 42 typedef PACKED struct { 43 ACPI_LARGE_RESOURCE_HEADER Header; 44 UINT8 ResType; 45 UINT8 GenFlag; 46 UINT8 SpecificFlag; 47 UINT8 RevisionId; 48 UINT8 Reserved; 49 UINT64 AddrSpaceGranularity; 50 UINT64 AddrRangeMin; 51 UINT64 AddrRangeMax; 52 UINT64 AddrTranslationOffset; 53 UINT64 AddrLen; 54 UINT64 TypeSpecificAttribute; 55 } EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR; 56 57 #pragma pack() 58 59 // 60 // Memory Type Specific Flags 61 // 62 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC 0x0000000000000001 63 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC 0x0000000000000002 64 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT 0x0000000000000004 65 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB 0x0000000000000008 66 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010 67 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV 0x0000000000008000 68 69 // 70 // Ensure proper structure formats 71 // 72 #pragma pack(1) 73 74 /// 75 /// ACPI 3.0 Generic Address Space definition 76 /// 77 typedef struct { 78 UINT8 AddressSpaceId; 79 UINT8 RegisterBitWidth; 80 UINT8 RegisterBitOffset; 81 UINT8 AccessSize; 82 UINT64 Address; 83 } EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE; 84 85 // 86 // Generic Address Space Address IDs 87 // 88 #define EFI_ACPI_3_0_SYSTEM_MEMORY 0 89 #define EFI_ACPI_3_0_SYSTEM_IO 1 90 #define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE 2 91 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER 3 92 #define EFI_ACPI_3_0_SMBUS 4 93 #define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE 0x7F 94 95 // 96 // Generic Address Space Access Sizes 97 // 98 #define EFI_ACPI_3_0_UNDEFINED 0 99 #define EFI_ACPI_3_0_BYTE 1 100 #define EFI_ACPI_3_0_WORD 2 101 #define EFI_ACPI_3_0_DWORD 3 102 #define EFI_ACPI_3_0_QWORD 4 103 104 // 105 // ACPI 3.0 table structures 106 // 107 108 /// 109 /// Root System Description Pointer Structure 110 /// 111 typedef struct { 112 UINT64 Signature; 113 UINT8 Checksum; 114 UINT8 OemId[6]; 115 UINT8 Revision; 116 UINT32 RsdtAddress; 117 UINT32 Length; 118 UINT64 XsdtAddress; 119 UINT8 ExtendedChecksum; 120 UINT8 Reserved[3]; 121 } EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER; 122 123 /// 124 /// RSD_PTR Revision (as defined in ACPI 3.0b spec.) 125 /// 126 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 3.0b) says current value is 2 127 128 /// 129 /// Common table header, this prefaces all ACPI tables, including FACS, but 130 /// excluding the RSD PTR structure 131 /// 132 typedef struct { 133 UINT32 Signature; 134 UINT32 Length; 135 } EFI_ACPI_3_0_COMMON_HEADER; 136 137 // 138 // Root System Description Table 139 // No definition needed as it is a common description table header, the same with 140 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 141 // 142 143 /// 144 /// RSDT Revision (as defined in ACPI 3.0 spec.) 145 /// 146 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 147 148 // 149 // Extended System Description Table 150 // No definition needed as it is a common description table header, the same with 151 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. 152 // 153 154 /// 155 /// XSDT Revision (as defined in ACPI 3.0 spec.) 156 /// 157 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 158 159 /// 160 /// Fixed ACPI Description Table Structure (FADT) 161 /// 162 typedef struct { 163 EFI_ACPI_DESCRIPTION_HEADER Header; 164 UINT32 FirmwareCtrl; 165 UINT32 Dsdt; 166 UINT8 Reserved0; 167 UINT8 PreferredPmProfile; 168 UINT16 SciInt; 169 UINT32 SmiCmd; 170 UINT8 AcpiEnable; 171 UINT8 AcpiDisable; 172 UINT8 S4BiosReq; 173 UINT8 PstateCnt; 174 UINT32 Pm1aEvtBlk; 175 UINT32 Pm1bEvtBlk; 176 UINT32 Pm1aCntBlk; 177 UINT32 Pm1bCntBlk; 178 UINT32 Pm2CntBlk; 179 UINT32 PmTmrBlk; 180 UINT32 Gpe0Blk; 181 UINT32 Gpe1Blk; 182 UINT8 Pm1EvtLen; 183 UINT8 Pm1CntLen; 184 UINT8 Pm2CntLen; 185 UINT8 PmTmrLen; 186 UINT8 Gpe0BlkLen; 187 UINT8 Gpe1BlkLen; 188 UINT8 Gpe1Base; 189 UINT8 CstCnt; 190 UINT16 PLvl2Lat; 191 UINT16 PLvl3Lat; 192 UINT16 FlushSize; 193 UINT16 FlushStride; 194 UINT8 DutyOffset; 195 UINT8 DutyWidth; 196 UINT8 DayAlrm; 197 UINT8 MonAlrm; 198 UINT8 Century; 199 UINT16 IaPcBootArch; 200 UINT8 Reserved1; 201 UINT32 Flags; 202 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE ResetReg; 203 UINT8 ResetValue; 204 UINT8 Reserved2[3]; 205 UINT64 XFirmwareCtrl; 206 UINT64 XDsdt; 207 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 208 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 209 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 210 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 211 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 212 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 213 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 214 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 215 } EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE; 216 217 /// 218 /// FADT Version (as defined in ACPI 3.0 spec.) 219 /// 220 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04 221 222 // 223 // Fixed ACPI Description Table Preferred Power Management Profile 224 // 225 #define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED 0 226 #define EFI_ACPI_3_0_PM_PROFILE_DESKTOP 1 227 #define EFI_ACPI_3_0_PM_PROFILE_MOBILE 2 228 #define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION 3 229 #define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER 4 230 #define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER 5 231 #define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC 6 232 #define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER 7 233 234 // 235 // Fixed ACPI Description Table Boot Architecture Flags 236 // All other bits are reserved and must be set to 0. 237 // 238 #define EFI_ACPI_3_0_LEGACY_DEVICES BIT0 239 #define EFI_ACPI_3_0_8042 BIT1 240 #define EFI_ACPI_3_0_VGA_NOT_PRESENT BIT2 241 #define EFI_ACPI_3_0_MSI_NOT_SUPPORTED BIT3 242 #define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS BIT4 243 244 // 245 // Fixed ACPI Description Table Fixed Feature Flags 246 // All other bits are reserved and must be set to 0. 247 // 248 #define EFI_ACPI_3_0_WBINVD BIT0 249 #define EFI_ACPI_3_0_WBINVD_FLUSH BIT1 250 #define EFI_ACPI_3_0_PROC_C1 BIT2 251 #define EFI_ACPI_3_0_P_LVL2_UP BIT3 252 #define EFI_ACPI_3_0_PWR_BUTTON BIT4 253 #define EFI_ACPI_3_0_SLP_BUTTON BIT5 254 #define EFI_ACPI_3_0_FIX_RTC BIT6 255 #define EFI_ACPI_3_0_RTC_S4 BIT7 256 #define EFI_ACPI_3_0_TMR_VAL_EXT BIT8 257 #define EFI_ACPI_3_0_DCK_CAP BIT9 258 #define EFI_ACPI_3_0_RESET_REG_SUP BIT10 259 #define EFI_ACPI_3_0_SEALED_CASE BIT11 260 #define EFI_ACPI_3_0_HEADLESS BIT12 261 #define EFI_ACPI_3_0_CPU_SW_SLP BIT13 262 #define EFI_ACPI_3_0_PCI_EXP_WAK BIT14 263 #define EFI_ACPI_3_0_USE_PLATFORM_CLOCK BIT15 264 #define EFI_ACPI_3_0_S4_RTC_STS_VALID BIT16 265 #define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE BIT17 266 #define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL BIT18 267 #define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 268 269 /// 270 /// Firmware ACPI Control Structure 271 /// 272 typedef struct { 273 UINT32 Signature; 274 UINT32 Length; 275 UINT32 HardwareSignature; 276 UINT32 FirmwareWakingVector; 277 UINT32 GlobalLock; 278 UINT32 Flags; 279 UINT64 XFirmwareWakingVector; 280 UINT8 Version; 281 UINT8 Reserved[31]; 282 } EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; 283 284 /// 285 /// FACS Version (as defined in ACPI 3.0 spec.) 286 /// 287 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01 288 289 /// 290 /// Firmware Control Structure Feature Flags 291 /// All other bits are reserved and must be set to 0. 292 /// 293 #define EFI_ACPI_3_0_S4BIOS_F BIT0 294 295 // 296 // Differentiated System Description Table, 297 // Secondary System Description Table 298 // and Persistent System Description Table, 299 // no definition needed as they are common description table header, the same with 300 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. 301 // 302 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 303 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 304 305 /// 306 /// Multiple APIC Description Table header definition. The rest of the table 307 /// must be defined in a platform specific manner. 308 /// 309 typedef struct { 310 EFI_ACPI_DESCRIPTION_HEADER Header; 311 UINT32 LocalApicAddress; 312 UINT32 Flags; 313 } EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 314 315 /// 316 /// MADT Revision (as defined in ACPI 3.0 spec.) 317 /// 318 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02 319 320 /// 321 /// Multiple APIC Flags 322 /// All other bits are reserved and must be set to 0. 323 /// 324 #define EFI_ACPI_3_0_PCAT_COMPAT BIT0 325 326 // 327 // Multiple APIC Description Table APIC structure types 328 // All other values between 0x09 an 0xFF are reserved and 329 // will be ignored by OSPM. 330 // 331 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC 0x00 332 #define EFI_ACPI_3_0_IO_APIC 0x01 333 #define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE 0x02 334 #define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 335 #define EFI_ACPI_3_0_LOCAL_APIC_NMI 0x04 336 #define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 337 #define EFI_ACPI_3_0_IO_SAPIC 0x06 338 #define EFI_ACPI_3_0_LOCAL_SAPIC 0x07 339 #define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES 0x08 340 341 // 342 // APIC Structure Definitions 343 // 344 345 /// 346 /// Processor Local APIC Structure Definition 347 /// 348 typedef struct { 349 UINT8 Type; 350 UINT8 Length; 351 UINT8 AcpiProcessorId; 352 UINT8 ApicId; 353 UINT32 Flags; 354 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE; 355 356 /// 357 /// Local APIC Flags. All other bits are reserved and must be 0. 358 /// 359 #define EFI_ACPI_3_0_LOCAL_APIC_ENABLED BIT0 360 361 /// 362 /// IO APIC Structure 363 /// 364 typedef struct { 365 UINT8 Type; 366 UINT8 Length; 367 UINT8 IoApicId; 368 UINT8 Reserved; 369 UINT32 IoApicAddress; 370 UINT32 GlobalSystemInterruptBase; 371 } EFI_ACPI_3_0_IO_APIC_STRUCTURE; 372 373 /// 374 /// Interrupt Source Override Structure 375 /// 376 typedef struct { 377 UINT8 Type; 378 UINT8 Length; 379 UINT8 Bus; 380 UINT8 Source; 381 UINT32 GlobalSystemInterrupt; 382 UINT16 Flags; 383 } EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 384 385 /// 386 /// Platform Interrupt Sources Structure Definition 387 /// 388 typedef struct { 389 UINT8 Type; 390 UINT8 Length; 391 UINT16 Flags; 392 UINT8 InterruptType; 393 UINT8 ProcessorId; 394 UINT8 ProcessorEid; 395 UINT8 IoSapicVector; 396 UINT32 GlobalSystemInterrupt; 397 UINT32 PlatformInterruptSourceFlags; 398 UINT8 CpeiProcessorOverride; 399 UINT8 Reserved[31]; 400 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; 401 402 // 403 // MPS INTI flags. 404 // All other bits are reserved and must be set to 0. 405 // 406 #define EFI_ACPI_3_0_POLARITY (3 << 0) 407 #define EFI_ACPI_3_0_TRIGGER_MODE (3 << 2) 408 409 /// 410 /// Non-Maskable Interrupt Source Structure 411 /// 412 typedef struct { 413 UINT8 Type; 414 UINT8 Length; 415 UINT16 Flags; 416 UINT32 GlobalSystemInterrupt; 417 } EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 418 419 /// 420 /// Local APIC NMI Structure 421 /// 422 typedef struct { 423 UINT8 Type; 424 UINT8 Length; 425 UINT8 AcpiProcessorId; 426 UINT16 Flags; 427 UINT8 LocalApicLint; 428 } EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE; 429 430 /// 431 /// Local APIC Address Override Structure 432 /// 433 typedef struct { 434 UINT8 Type; 435 UINT8 Length; 436 UINT16 Reserved; 437 UINT64 LocalApicAddress; 438 } EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; 439 440 /// 441 /// IO SAPIC Structure 442 /// 443 typedef struct { 444 UINT8 Type; 445 UINT8 Length; 446 UINT8 IoApicId; 447 UINT8 Reserved; 448 UINT32 GlobalSystemInterruptBase; 449 UINT64 IoSapicAddress; 450 } EFI_ACPI_3_0_IO_SAPIC_STRUCTURE; 451 452 /// 453 /// Local SAPIC Structure 454 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 455 /// 456 typedef struct { 457 UINT8 Type; 458 UINT8 Length; 459 UINT8 AcpiProcessorId; 460 UINT8 LocalSapicId; 461 UINT8 LocalSapicEid; 462 UINT8 Reserved[3]; 463 UINT32 Flags; 464 UINT32 ACPIProcessorUIDValue; 465 } EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; 466 467 /// 468 /// Platform Interrupt Sources Structure 469 /// 470 typedef struct { 471 UINT8 Type; 472 UINT8 Length; 473 UINT16 Flags; 474 UINT8 InterruptType; 475 UINT8 ProcessorId; 476 UINT8 ProcessorEid; 477 UINT8 IoSapicVector; 478 UINT32 GlobalSystemInterrupt; 479 UINT32 PlatformInterruptSourceFlags; 480 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; 481 482 /// 483 /// Platform Interrupt Source Flags. 484 /// All other bits are reserved and must be set to 0. 485 /// 486 #define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE BIT0 487 488 /// 489 /// Smart Battery Description Table (SBST) 490 /// 491 typedef struct { 492 EFI_ACPI_DESCRIPTION_HEADER Header; 493 UINT32 WarningEnergyLevel; 494 UINT32 LowEnergyLevel; 495 UINT32 CriticalEnergyLevel; 496 } EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE; 497 498 /// 499 /// SBST Version (as defined in ACPI 3.0 spec.) 500 /// 501 #define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 502 503 /// 504 /// Embedded Controller Boot Resources Table (ECDT) 505 /// The table is followed by a null terminated ASCII string that contains 506 /// a fully qualified reference to the name space object. 507 /// 508 typedef struct { 509 EFI_ACPI_DESCRIPTION_HEADER Header; 510 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcControl; 511 EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcData; 512 UINT32 Uid; 513 UINT8 GpeBit; 514 } EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 515 516 /// 517 /// ECDT Version (as defined in ACPI 3.0 spec.) 518 /// 519 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 520 521 /// 522 /// System Resource Affinity Table (SRAT. The rest of the table 523 /// must be defined in a platform specific manner. 524 /// 525 typedef struct { 526 EFI_ACPI_DESCRIPTION_HEADER Header; 527 UINT32 Reserved1; ///< Must be set to 1 528 UINT64 Reserved2; 529 } EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 530 531 /// 532 /// SRAT Version (as defined in ACPI 3.0 spec.) 533 /// 534 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x02 535 536 // 537 // SRAT structure types. 538 // All other values between 0x02 an 0xFF are reserved and 539 // will be ignored by OSPM. 540 // 541 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 542 #define EFI_ACPI_3_0_MEMORY_AFFINITY 0x01 543 544 /// 545 /// Processor Local APIC/SAPIC Affinity Structure Definition 546 /// 547 typedef struct { 548 UINT8 Type; 549 UINT8 Length; 550 UINT8 ProximityDomain7To0; 551 UINT8 ApicId; 552 UINT32 Flags; 553 UINT8 LocalSapicEid; 554 UINT8 ProximityDomain31To8[3]; 555 UINT8 Reserved[4]; 556 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; 557 558 /// 559 /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 560 /// 561 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) 562 563 /// 564 /// Memory Affinity Structure Definition 565 /// 566 typedef struct { 567 UINT8 Type; 568 UINT8 Length; 569 UINT32 ProximityDomain; 570 UINT16 Reserved1; 571 UINT32 AddressBaseLow; 572 UINT32 AddressBaseHigh; 573 UINT32 LengthLow; 574 UINT32 LengthHigh; 575 UINT32 Reserved2; 576 UINT32 Flags; 577 UINT64 Reserved3; 578 } EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE; 579 580 // 581 // Memory Flags. All other bits are reserved and must be 0. 582 // 583 #define EFI_ACPI_3_0_MEMORY_ENABLED (1 << 0) 584 #define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1) 585 #define EFI_ACPI_3_0_MEMORY_NONVOLATILE (1 << 2) 586 587 /// 588 /// System Locality Distance Information Table (SLIT). 589 /// The rest of the table is a matrix. 590 /// 591 typedef struct { 592 EFI_ACPI_DESCRIPTION_HEADER Header; 593 UINT64 NumberOfSystemLocalities; 594 } EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 595 596 /// 597 /// SLIT Version (as defined in ACPI 3.0 spec.) 598 /// 599 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 600 601 // 602 // Known table signatures 603 // 604 605 /// 606 /// "RSD PTR " Root System Description Pointer 607 /// 608 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 609 610 /// 611 /// "APIC" Multiple APIC Description Table 612 /// 613 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 614 615 /// 616 /// "DSDT" Differentiated System Description Table 617 /// 618 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 619 620 /// 621 /// "ECDT" Embedded Controller Boot Resources Table 622 /// 623 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 624 625 /// 626 /// "FACP" Fixed ACPI Description Table 627 /// 628 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 629 630 /// 631 /// "FACS" Firmware ACPI Control Structure 632 /// 633 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 634 635 /// 636 /// "PSDT" Persistent System Description Table 637 /// 638 #define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 639 640 /// 641 /// "RSDT" Root System Description Table 642 /// 643 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 644 645 /// 646 /// "SBST" Smart Battery Specification Table 647 /// 648 #define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 649 650 /// 651 /// "SLIT" System Locality Information Table 652 /// 653 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 654 655 /// 656 /// "SRAT" System Resource Affinity Table 657 /// 658 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 659 660 /// 661 /// "SSDT" Secondary System Description Table 662 /// 663 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 664 665 /// 666 /// "XSDT" Extended System Description Table 667 /// 668 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 669 670 /// 671 /// "BOOT" MS Simple Boot Spec 672 /// 673 #define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 674 675 /// 676 /// "CPEP" Corrected Platform Error Polling Table 677 /// 678 #define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 679 680 /// 681 /// "DBGP" MS Debug Port Spec 682 /// 683 #define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 684 685 /// 686 /// "ETDT" Event Timer Description Table 687 /// 688 #define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 689 690 /// 691 /// "HPET" IA-PC High Precision Event Timer Table 692 /// 693 #define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 694 695 /// 696 /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 697 /// 698 #define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 699 700 /// 701 /// "SPCR" Serial Port Console Redirection Table 702 /// 703 #define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 704 705 /// 706 /// "SPMI" Server Platform Management Interface Table 707 /// 708 #define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 709 710 /// 711 /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 712 /// 713 #define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 714 715 /// 716 /// "WDRT" Watchdog Resource Table 717 /// 718 #define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 719 720 /// 721 /// "WDAT" Watchdog Action Table 722 /// 723 #define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 724 725 /// 726 /// "WSPT" Windows Specific Properties Table 727 /// 728 #define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'P', 'T') 729 730 /// 731 /// "iBFT" iSCSI Boot Firmware Table 732 /// 733 #define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 734 735 #pragma pack() 736 737 #endif 738