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