iPXE
Acpi30.h
Go to the documentation of this file.
00001 /** @file
00002   ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
00003 
00004   Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
00005   This program and the accompanying materials
00006   are licensed and made available under the terms and conditions of the BSD License
00007   which accompanies this distribution.  The full text of the license may be found at
00008   http://opensource.org/licenses/bsd-license.php
00009 
00010   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
00011   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
00012 **/
00013 
00014 #ifndef _ACPI_3_0_H_
00015 #define _ACPI_3_0_H_
00016 
00017 FILE_LICENCE ( BSD3 );
00018 
00019 #include <ipxe/efi/IndustryStandard/Acpi20.h>
00020 
00021 //
00022 // Define for Desriptor
00023 //
00024 #define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME    0x0B
00025 
00026 #define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR    0x8B
00027 
00028 //
00029 // Ensure proper structure formats
00030 //
00031 #pragma pack(1)
00032 
00033 ///
00034 /// Extended Address Space Descriptor
00035 ///
00036 typedef PACKED struct {
00037   ACPI_LARGE_RESOURCE_HEADER    Header;
00038   UINT8                         ResType;
00039   UINT8                         GenFlag;
00040   UINT8                         SpecificFlag;
00041   UINT8                         RevisionId;
00042   UINT8                         Reserved;
00043   UINT64                        AddrSpaceGranularity;
00044   UINT64                        AddrRangeMin;
00045   UINT64                        AddrRangeMax;
00046   UINT64                        AddrTranslationOffset;
00047   UINT64                        AddrLen;
00048   UINT64                        TypeSpecificAttribute;
00049 } EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR;
00050 
00051 #pragma pack()
00052 
00053 //
00054 // Memory Type Specific Flags
00055 //
00056 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC  0x0000000000000001
00057 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC  0x0000000000000002
00058 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT  0x0000000000000004
00059 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB  0x0000000000000008
00060 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
00061 #define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV  0x0000000000008000
00062 
00063 //
00064 // Ensure proper structure formats
00065 //
00066 #pragma pack(1)
00067 
00068 ///
00069 /// ACPI 3.0 Generic Address Space definition
00070 ///
00071 typedef struct {
00072   UINT8   AddressSpaceId;
00073   UINT8   RegisterBitWidth;
00074   UINT8   RegisterBitOffset;
00075   UINT8   AccessSize;
00076   UINT64  Address;
00077 } EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;
00078 
00079 //
00080 // Generic Address Space Address IDs
00081 //
00082 #define EFI_ACPI_3_0_SYSTEM_MEMORY              0
00083 #define EFI_ACPI_3_0_SYSTEM_IO                  1
00084 #define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE    2
00085 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER        3
00086 #define EFI_ACPI_3_0_SMBUS                      4
00087 #define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE  0x7F
00088 
00089 //
00090 // Generic Address Space Access Sizes
00091 //
00092 #define EFI_ACPI_3_0_UNDEFINED  0
00093 #define EFI_ACPI_3_0_BYTE       1
00094 #define EFI_ACPI_3_0_WORD       2
00095 #define EFI_ACPI_3_0_DWORD      3
00096 #define EFI_ACPI_3_0_QWORD      4
00097 
00098 //
00099 // ACPI 3.0 table structures
00100 //
00101 
00102 ///
00103 /// Root System Description Pointer Structure
00104 ///
00105 typedef struct {
00106   UINT64  Signature;
00107   UINT8   Checksum;
00108   UINT8   OemId[6];
00109   UINT8   Revision;
00110   UINT32  RsdtAddress;
00111   UINT32  Length;
00112   UINT64  XsdtAddress;
00113   UINT8   ExtendedChecksum;
00114   UINT8   Reserved[3];
00115 } EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
00116 
00117 ///
00118 /// RSD_PTR Revision (as defined in ACPI 3.0b spec.)
00119 ///
00120 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 3.0b) says current value is 2
00121 
00122 ///
00123 /// Common table header, this prefaces all ACPI tables, including FACS, but
00124 /// excluding the RSD PTR structure
00125 ///
00126 typedef struct {
00127   UINT32  Signature;
00128   UINT32  Length;
00129 } EFI_ACPI_3_0_COMMON_HEADER;
00130 
00131 //
00132 // Root System Description Table
00133 // No definition needed as it is a common description table header, the same with
00134 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
00135 //
00136 
00137 ///
00138 /// RSDT Revision (as defined in ACPI 3.0 spec.)
00139 ///
00140 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
00141 
00142 //
00143 // Extended System Description Table
00144 // No definition needed as it is a common description table header, the same with
00145 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
00146 //
00147 
00148 ///
00149 /// XSDT Revision (as defined in ACPI 3.0 spec.)
00150 ///
00151 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
00152 
00153 ///
00154 /// Fixed ACPI Description Table Structure (FADT)
00155 ///
00156 typedef struct {
00157   EFI_ACPI_DESCRIPTION_HEADER             Header;
00158   UINT32                                  FirmwareCtrl;
00159   UINT32                                  Dsdt;
00160   UINT8                                   Reserved0;
00161   UINT8                                   PreferredPmProfile;
00162   UINT16                                  SciInt;
00163   UINT32                                  SmiCmd;
00164   UINT8                                   AcpiEnable;
00165   UINT8                                   AcpiDisable;
00166   UINT8                                   S4BiosReq;
00167   UINT8                                   PstateCnt;
00168   UINT32                                  Pm1aEvtBlk;
00169   UINT32                                  Pm1bEvtBlk;
00170   UINT32                                  Pm1aCntBlk;
00171   UINT32                                  Pm1bCntBlk;
00172   UINT32                                  Pm2CntBlk;
00173   UINT32                                  PmTmrBlk;
00174   UINT32                                  Gpe0Blk;
00175   UINT32                                  Gpe1Blk;
00176   UINT8                                   Pm1EvtLen;
00177   UINT8                                   Pm1CntLen;
00178   UINT8                                   Pm2CntLen;
00179   UINT8                                   PmTmrLen;
00180   UINT8                                   Gpe0BlkLen;
00181   UINT8                                   Gpe1BlkLen;
00182   UINT8                                   Gpe1Base;
00183   UINT8                                   CstCnt;
00184   UINT16                                  PLvl2Lat;
00185   UINT16                                  PLvl3Lat;
00186   UINT16                                  FlushSize;
00187   UINT16                                  FlushStride;
00188   UINT8                                   DutyOffset;
00189   UINT8                                   DutyWidth;
00190   UINT8                                   DayAlrm;
00191   UINT8                                   MonAlrm;
00192   UINT8                                   Century;
00193   UINT16                                  IaPcBootArch;
00194   UINT8                                   Reserved1;
00195   UINT32                                  Flags;
00196   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
00197   UINT8                                   ResetValue;
00198   UINT8                                   Reserved2[3];
00199   UINT64                                  XFirmwareCtrl;
00200   UINT64                                  XDsdt;
00201   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
00202   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
00203   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
00204   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
00205   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
00206   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
00207   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
00208   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
00209 } EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;
00210 
00211 ///
00212 /// FADT Version (as defined in ACPI 3.0 spec.)
00213 ///
00214 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x04
00215 
00216 //
00217 // Fixed ACPI Description Table Preferred Power Management Profile
00218 //
00219 #define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED         0
00220 #define EFI_ACPI_3_0_PM_PROFILE_DESKTOP             1
00221 #define EFI_ACPI_3_0_PM_PROFILE_MOBILE              2
00222 #define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION         3
00223 #define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER   4
00224 #define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER         5
00225 #define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC        6
00226 #define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER  7
00227 
00228 //
00229 // Fixed ACPI Description Table Boot Architecture Flags
00230 // All other bits are reserved and must be set to 0.
00231 //
00232 #define EFI_ACPI_3_0_LEGACY_DEVICES              BIT0
00233 #define EFI_ACPI_3_0_8042                        BIT1
00234 #define EFI_ACPI_3_0_VGA_NOT_PRESENT             BIT2
00235 #define EFI_ACPI_3_0_MSI_NOT_SUPPORTED           BIT3
00236 #define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS          BIT4
00237 
00238 //
00239 // Fixed ACPI Description Table Fixed Feature Flags
00240 // All other bits are reserved and must be set to 0.
00241 //
00242 #define EFI_ACPI_3_0_WBINVD                                 BIT0
00243 #define EFI_ACPI_3_0_WBINVD_FLUSH                           BIT1
00244 #define EFI_ACPI_3_0_PROC_C1                                BIT2
00245 #define EFI_ACPI_3_0_P_LVL2_UP                              BIT3
00246 #define EFI_ACPI_3_0_PWR_BUTTON                             BIT4
00247 #define EFI_ACPI_3_0_SLP_BUTTON                             BIT5
00248 #define EFI_ACPI_3_0_FIX_RTC                                BIT6
00249 #define EFI_ACPI_3_0_RTC_S4                                 BIT7
00250 #define EFI_ACPI_3_0_TMR_VAL_EXT                            BIT8
00251 #define EFI_ACPI_3_0_DCK_CAP                                BIT9
00252 #define EFI_ACPI_3_0_RESET_REG_SUP                          BIT10
00253 #define EFI_ACPI_3_0_SEALED_CASE                            BIT11
00254 #define EFI_ACPI_3_0_HEADLESS                               BIT12
00255 #define EFI_ACPI_3_0_CPU_SW_SLP                             BIT13
00256 #define EFI_ACPI_3_0_PCI_EXP_WAK                            BIT14
00257 #define EFI_ACPI_3_0_USE_PLATFORM_CLOCK                     BIT15
00258 #define EFI_ACPI_3_0_S4_RTC_STS_VALID                       BIT16
00259 #define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE                BIT17
00260 #define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL               BIT18
00261 #define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
00262 
00263 ///
00264 /// Firmware ACPI Control Structure
00265 ///
00266 typedef struct {
00267   UINT32  Signature;
00268   UINT32  Length;
00269   UINT32  HardwareSignature;
00270   UINT32  FirmwareWakingVector;
00271   UINT32  GlobalLock;
00272   UINT32  Flags;
00273   UINT64  XFirmwareWakingVector;
00274   UINT8   Version;
00275   UINT8   Reserved[31];
00276 } EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
00277 
00278 ///
00279 /// FACS Version (as defined in ACPI 3.0 spec.)
00280 ///
00281 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x01
00282 
00283 ///
00284 /// Firmware Control Structure Feature Flags
00285 /// All other bits are reserved and must be set to 0.
00286 ///
00287 #define EFI_ACPI_3_0_S4BIOS_F       BIT0
00288 
00289 //
00290 // Differentiated System Description Table,
00291 // Secondary System Description Table
00292 // and Persistent System Description Table,
00293 // no definition needed as they are common description table header, the same with
00294 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
00295 //
00296 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
00297 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
00298 
00299 ///
00300 /// Multiple APIC Description Table header definition.  The rest of the table
00301 /// must be defined in a platform specific manner.
00302 ///
00303 typedef struct {
00304   EFI_ACPI_DESCRIPTION_HEADER Header;
00305   UINT32                      LocalApicAddress;
00306   UINT32                      Flags;
00307 } EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
00308 
00309 ///
00310 /// MADT Revision (as defined in ACPI 3.0 spec.)
00311 ///
00312 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
00313 
00314 ///
00315 /// Multiple APIC Flags
00316 /// All other bits are reserved and must be set to 0.
00317 ///
00318 #define EFI_ACPI_3_0_PCAT_COMPAT         BIT0
00319 
00320 //
00321 // Multiple APIC Description Table APIC structure types
00322 // All other values between 0x09 an 0xFF are reserved and
00323 // will be ignored by OSPM.
00324 //
00325 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC           0x00
00326 #define EFI_ACPI_3_0_IO_APIC                        0x01
00327 #define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE      0x02
00328 #define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE  0x03
00329 #define EFI_ACPI_3_0_LOCAL_APIC_NMI                 0x04
00330 #define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
00331 #define EFI_ACPI_3_0_IO_SAPIC                       0x06
00332 #define EFI_ACPI_3_0_LOCAL_SAPIC                    0x07
00333 #define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES     0x08
00334 
00335 //
00336 // APIC Structure Definitions
00337 //
00338 
00339 ///
00340 /// Processor Local APIC Structure Definition
00341 ///
00342 typedef struct {
00343   UINT8   Type;
00344   UINT8   Length;
00345   UINT8   AcpiProcessorId;
00346   UINT8   ApicId;
00347   UINT32  Flags;
00348 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
00349 
00350 ///
00351 /// Local APIC Flags.  All other bits are reserved and must be 0.
00352 ///
00353 #define EFI_ACPI_3_0_LOCAL_APIC_ENABLED        BIT0
00354 
00355 ///
00356 /// IO APIC Structure
00357 ///
00358 typedef struct {
00359   UINT8   Type;
00360   UINT8   Length;
00361   UINT8   IoApicId;
00362   UINT8   Reserved;
00363   UINT32  IoApicAddress;
00364   UINT32  GlobalSystemInterruptBase;
00365 } EFI_ACPI_3_0_IO_APIC_STRUCTURE;
00366 
00367 ///
00368 /// Interrupt Source Override Structure
00369 ///
00370 typedef struct {
00371   UINT8   Type;
00372   UINT8   Length;
00373   UINT8   Bus;
00374   UINT8   Source;
00375   UINT32  GlobalSystemInterrupt;
00376   UINT16  Flags;
00377 } EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
00378 
00379 ///
00380 /// Platform Interrupt Sources Structure Definition
00381 ///
00382 typedef struct {
00383   UINT8   Type;
00384   UINT8   Length;
00385   UINT16  Flags;
00386   UINT8   InterruptType;
00387   UINT8   ProcessorId;
00388   UINT8   ProcessorEid;
00389   UINT8   IoSapicVector;
00390   UINT32  GlobalSystemInterrupt;
00391   UINT32  PlatformInterruptSourceFlags;
00392   UINT8   CpeiProcessorOverride;
00393   UINT8   Reserved[31];
00394 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
00395 
00396 //
00397 // MPS INTI flags.
00398 // All other bits are reserved and must be set to 0.
00399 //
00400 #define EFI_ACPI_3_0_POLARITY      (3 << 0)
00401 #define EFI_ACPI_3_0_TRIGGER_MODE  (3 << 2)
00402 
00403 ///
00404 /// Non-Maskable Interrupt Source Structure
00405 ///
00406 typedef struct {
00407   UINT8   Type;
00408   UINT8   Length;
00409   UINT16  Flags;
00410   UINT32  GlobalSystemInterrupt;
00411 } EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
00412 
00413 ///
00414 /// Local APIC NMI Structure
00415 ///
00416 typedef struct {
00417   UINT8   Type;
00418   UINT8   Length;
00419   UINT8   AcpiProcessorId;
00420   UINT16  Flags;
00421   UINT8   LocalApicLint;
00422 } EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;
00423 
00424 ///
00425 /// Local APIC Address Override Structure
00426 ///
00427 typedef struct {
00428   UINT8   Type;
00429   UINT8   Length;
00430   UINT16  Reserved;
00431   UINT64  LocalApicAddress;
00432 } EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
00433 
00434 ///
00435 /// IO SAPIC Structure
00436 ///
00437 typedef struct {
00438   UINT8   Type;
00439   UINT8   Length;
00440   UINT8   IoApicId;
00441   UINT8   Reserved;
00442   UINT32  GlobalSystemInterruptBase;
00443   UINT64  IoSapicAddress;
00444 } EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;
00445 
00446 ///
00447 /// Local SAPIC Structure
00448 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
00449 ///
00450 typedef struct {
00451   UINT8   Type;
00452   UINT8   Length;
00453   UINT8   AcpiProcessorId;
00454   UINT8   LocalSapicId;
00455   UINT8   LocalSapicEid;
00456   UINT8   Reserved[3];
00457   UINT32  Flags;
00458   UINT32  ACPIProcessorUIDValue;
00459 } EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
00460 
00461 ///
00462 /// Platform Interrupt Sources Structure
00463 ///
00464 typedef struct {
00465   UINT8   Type;
00466   UINT8   Length;
00467   UINT16  Flags;
00468   UINT8   InterruptType;
00469   UINT8   ProcessorId;
00470   UINT8   ProcessorEid;
00471   UINT8   IoSapicVector;
00472   UINT32  GlobalSystemInterrupt;
00473   UINT32  PlatformInterruptSourceFlags;
00474 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
00475 
00476 ///
00477 /// Platform Interrupt Source Flags.
00478 /// All other bits are reserved and must be set to 0.
00479 ///
00480 #define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE          BIT0
00481 
00482 ///
00483 /// Smart Battery Description Table (SBST)
00484 ///
00485 typedef struct {
00486   EFI_ACPI_DESCRIPTION_HEADER Header;
00487   UINT32                      WarningEnergyLevel;
00488   UINT32                      LowEnergyLevel;
00489   UINT32                      CriticalEnergyLevel;
00490 } EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;
00491 
00492 ///
00493 /// SBST Version (as defined in ACPI 3.0 spec.)
00494 ///
00495 #define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
00496 
00497 ///
00498 /// Embedded Controller Boot Resources Table (ECDT)
00499 /// The table is followed by a null terminated ASCII string that contains
00500 /// a fully qualified reference to the name space object.
00501 ///
00502 typedef struct {
00503   EFI_ACPI_DESCRIPTION_HEADER             Header;
00504   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
00505   EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcData;
00506   UINT32                                  Uid;
00507   UINT8                                   GpeBit;
00508 } EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
00509 
00510 ///
00511 /// ECDT Version (as defined in ACPI 3.0 spec.)
00512 ///
00513 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
00514 
00515 ///
00516 /// System Resource Affinity Table (SRAT.  The rest of the table
00517 /// must be defined in a platform specific manner.
00518 ///
00519 typedef struct {
00520   EFI_ACPI_DESCRIPTION_HEADER Header;
00521   UINT32                      Reserved1;  ///< Must be set to 1
00522   UINT64                      Reserved2;
00523 } EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
00524 
00525 ///
00526 /// SRAT Version (as defined in ACPI 3.0 spec.)
00527 ///
00528 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x02
00529 
00530 //
00531 // SRAT structure types.
00532 // All other values between 0x02 an 0xFF are reserved and
00533 // will be ignored by OSPM.
00534 //
00535 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
00536 #define EFI_ACPI_3_0_MEMORY_AFFINITY                      0x01
00537 
00538 ///
00539 /// Processor Local APIC/SAPIC Affinity Structure Definition
00540 ///
00541 typedef struct {
00542   UINT8   Type;
00543   UINT8   Length;
00544   UINT8   ProximityDomain7To0;
00545   UINT8   ApicId;
00546   UINT32  Flags;
00547   UINT8   LocalSapicEid;
00548   UINT8   ProximityDomain31To8[3];
00549   UINT8   Reserved[4];
00550 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
00551 
00552 ///
00553 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
00554 ///
00555 #define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
00556 
00557 ///
00558 /// Memory Affinity Structure Definition
00559 ///
00560 typedef struct {
00561   UINT8   Type;
00562   UINT8   Length;
00563   UINT32  ProximityDomain;
00564   UINT16  Reserved1;
00565   UINT32  AddressBaseLow;
00566   UINT32  AddressBaseHigh;
00567   UINT32  LengthLow;
00568   UINT32  LengthHigh;
00569   UINT32  Reserved2;
00570   UINT32  Flags;
00571   UINT64  Reserved3;
00572 } EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;
00573 
00574 //
00575 // Memory Flags.  All other bits are reserved and must be 0.
00576 //
00577 #define EFI_ACPI_3_0_MEMORY_ENABLED       (1 << 0)
00578 #define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
00579 #define EFI_ACPI_3_0_MEMORY_NONVOLATILE   (1 << 2)
00580 
00581 ///
00582 /// System Locality Distance Information Table (SLIT).
00583 /// The rest of the table is a matrix.
00584 ///
00585 typedef struct {
00586   EFI_ACPI_DESCRIPTION_HEADER Header;
00587   UINT64                      NumberOfSystemLocalities;
00588 } EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
00589 
00590 ///
00591 /// SLIT Version (as defined in ACPI 3.0 spec.)
00592 ///
00593 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
00594 
00595 //
00596 // Known table signatures
00597 //
00598 
00599 ///
00600 /// "RSD PTR " Root System Description Pointer
00601 ///
00602 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
00603 
00604 ///
00605 /// "APIC" Multiple APIC Description Table
00606 ///
00607 #define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
00608 
00609 ///
00610 /// "DSDT" Differentiated System Description Table
00611 ///
00612 #define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
00613 
00614 ///
00615 /// "ECDT" Embedded Controller Boot Resources Table
00616 ///
00617 #define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
00618 
00619 ///
00620 /// "FACP" Fixed ACPI Description Table
00621 ///
00622 #define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
00623 
00624 ///
00625 /// "FACS" Firmware ACPI Control Structure
00626 ///
00627 #define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
00628 
00629 ///
00630 /// "PSDT" Persistent System Description Table
00631 ///
00632 #define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
00633 
00634 ///
00635 /// "RSDT" Root System Description Table
00636 ///
00637 #define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
00638 
00639 ///
00640 /// "SBST" Smart Battery Specification Table
00641 ///
00642 #define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
00643 
00644 ///
00645 /// "SLIT" System Locality Information Table
00646 ///
00647 #define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
00648 
00649 ///
00650 /// "SRAT" System Resource Affinity Table
00651 ///
00652 #define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
00653 
00654 ///
00655 /// "SSDT" Secondary System Description Table
00656 ///
00657 #define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
00658 
00659 ///
00660 /// "XSDT" Extended System Description Table
00661 ///
00662 #define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
00663 
00664 ///
00665 /// "BOOT" MS Simple Boot Spec
00666 ///
00667 #define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
00668 
00669 ///
00670 /// "CPEP" Corrected Platform Error Polling Table
00671 ///
00672 #define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
00673 
00674 ///
00675 /// "DBGP" MS Debug Port Spec
00676 ///
00677 #define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
00678 
00679 ///
00680 /// "ETDT" Event Timer Description Table
00681 ///
00682 #define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
00683 
00684 ///
00685 /// "HPET" IA-PC High Precision Event Timer Table
00686 ///
00687 #define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
00688 
00689 ///
00690 /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
00691 ///
00692 #define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
00693 
00694 ///
00695 /// "SPCR" Serial Port Concole Redirection Table
00696 ///
00697 #define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
00698 
00699 ///
00700 /// "SPMI" Server Platform Management Interface Table
00701 ///
00702 #define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
00703 
00704 ///
00705 /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
00706 ///
00707 #define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
00708 
00709 ///
00710 /// "WDRT" Watchdog Resource Table
00711 ///
00712 #define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
00713 
00714 ///
00715 /// "WDAT" Watchdog Action Table
00716 ///
00717 #define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
00718 
00719 ///
00720 /// "WSPT" Windows Specific Properties Table
00721 ///
00722 #define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE  SIGNATURE_32('W', 'S', 'P', 'T')
00723 
00724 ///
00725 /// "iBFT" iSCSI Boot Firmware Table
00726 ///
00727 #define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
00728 
00729 #pragma pack()
00730 
00731 #endif