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