]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/Acpi50.h
Added PlatformNotification to ACPI 5.0 PCCT structure.
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi50.h
1 /** @file
2 ACPI 5.0 definitions from the ACPI Specification Revision 5.0a November 13, 2013.
3
4 Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>
5 Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this 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 #ifndef _ACPI_5_0_H_
16 #define _ACPI_5_0_H_
17
18 #include <IndustryStandard/Acpi40.h>
19
20 //
21 // Define for Desriptor
22 //
23 #define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME 0x0A
24 #define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME 0x0C
25 #define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME 0x0E
26
27 #define ACPI_FIXED_DMA_DESCRIPTOR 0x55
28 #define ACPI_GPIO_CONNECTION_DESCRIPTOR 0x8C
29 #define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR 0x8E
30
31 #pragma pack(1)
32
33 ///
34 /// Generic DMA Descriptor.
35 ///
36 typedef PACKED struct {
37 ACPI_SMALL_RESOURCE_HEADER Header;
38 UINT16 DmaRequestLine;
39 UINT16 DmaChannel;
40 UINT8 DmaTransferWidth;
41 } EFI_ACPI_FIXED_DMA_DESCRIPTOR;
42
43 ///
44 /// GPIO Connection Descriptor
45 ///
46 typedef PACKED struct {
47 ACPI_LARGE_RESOURCE_HEADER Header;
48 UINT8 RevisionId;
49 UINT8 ConnectionType;
50 UINT16 GeneralFlags;
51 UINT16 InterruptFlags;
52 UINT8 PinConfiguration;
53 UINT16 OutputDriveStrength;
54 UINT16 DebounceTimeout;
55 UINT16 PinTableOffset;
56 UINT8 ResourceSourceIndex;
57 UINT16 ResourceSourceNameOffset;
58 UINT16 VendorDataOffset;
59 UINT16 VendorDataLength;
60 } EFI_ACPI_GPIO_CONNECTION_DESCRIPTOR;
61
62 #define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT 0x0
63 #define EFI_ACPI_GPIO_CONNECTION_TYPE_IO 0x1
64
65 ///
66 /// Serial Bus Resource Descriptor (Generic)
67 ///
68 typedef PACKED struct {
69 ACPI_LARGE_RESOURCE_HEADER Header;
70 UINT8 RevisionId;
71 UINT8 ResourceSourceIndex;
72 UINT8 SerialBusType;
73 UINT8 GeneralFlags;
74 UINT16 TypeSpecificFlags;
75 UINT8 TypeSpecificRevisionId;
76 UINT16 TypeDataLength;
77 // Type specific data
78 } EFI_ACPI_SERIAL_BUS_RESOURCE_DESCRIPTOR;
79
80 #define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_I2C 0x1
81 #define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_SPI 0x2
82 #define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_UART 0x3
83
84 ///
85 /// Serial Bus Resource Descriptor (I2C)
86 ///
87 typedef PACKED struct {
88 ACPI_LARGE_RESOURCE_HEADER Header;
89 UINT8 RevisionId;
90 UINT8 ResourceSourceIndex;
91 UINT8 SerialBusType;
92 UINT8 GeneralFlags;
93 UINT16 TypeSpecificFlags;
94 UINT8 TypeSpecificRevisionId;
95 UINT16 TypeDataLength;
96 UINT32 ConnectionSpeed;
97 UINT16 SlaveAddress;
98 } EFI_ACPI_SERIAL_BUS_RESOURCE_I2C_DESCRIPTOR;
99
100 ///
101 /// Serial Bus Resource Descriptor (SPI)
102 ///
103 typedef PACKED struct {
104 ACPI_LARGE_RESOURCE_HEADER Header;
105 UINT8 RevisionId;
106 UINT8 ResourceSourceIndex;
107 UINT8 SerialBusType;
108 UINT8 GeneralFlags;
109 UINT16 TypeSpecificFlags;
110 UINT8 TypeSpecificRevisionId;
111 UINT16 TypeDataLength;
112 UINT32 ConnectionSpeed;
113 UINT8 DataBitLength;
114 UINT8 Phase;
115 UINT8 Polarity;
116 UINT16 DeviceSelection;
117 } EFI_ACPI_SERIAL_BUS_RESOURCE_SPI_DESCRIPTOR;
118
119 ///
120 /// Serial Bus Resource Descriptor (UART)
121 ///
122 typedef PACKED struct {
123 ACPI_LARGE_RESOURCE_HEADER Header;
124 UINT8 RevisionId;
125 UINT8 ResourceSourceIndex;
126 UINT8 SerialBusType;
127 UINT8 GeneralFlags;
128 UINT16 TypeSpecificFlags;
129 UINT8 TypeSpecificRevisionId;
130 UINT16 TypeDataLength;
131 UINT32 DefaultBaudRate;
132 UINT16 RxFIFO;
133 UINT16 TxFIFO;
134 UINT8 Parity;
135 UINT8 SerialLinesEnabled;
136 } EFI_ACPI_SERIAL_BUS_RESOURCE_UART_DESCRIPTOR;
137
138 #pragma pack()
139
140 //
141 // Ensure proper structure formats
142 //
143 #pragma pack(1)
144
145 ///
146 /// ACPI 5.0 Generic Address Space definition
147 ///
148 typedef struct {
149 UINT8 AddressSpaceId;
150 UINT8 RegisterBitWidth;
151 UINT8 RegisterBitOffset;
152 UINT8 AccessSize;
153 UINT64 Address;
154 } EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE;
155
156 //
157 // Generic Address Space Address IDs
158 //
159 #define EFI_ACPI_5_0_SYSTEM_MEMORY 0
160 #define EFI_ACPI_5_0_SYSTEM_IO 1
161 #define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE 2
162 #define EFI_ACPI_5_0_EMBEDDED_CONTROLLER 3
163 #define EFI_ACPI_5_0_SMBUS 4
164 #define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A
165 #define EFI_ACPI_5_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
166
167 //
168 // Generic Address Space Access Sizes
169 //
170 #define EFI_ACPI_5_0_UNDEFINED 0
171 #define EFI_ACPI_5_0_BYTE 1
172 #define EFI_ACPI_5_0_WORD 2
173 #define EFI_ACPI_5_0_DWORD 3
174 #define EFI_ACPI_5_0_QWORD 4
175
176 //
177 // ACPI 5.0 table structures
178 //
179
180 ///
181 /// Root System Description Pointer Structure
182 ///
183 typedef struct {
184 UINT64 Signature;
185 UINT8 Checksum;
186 UINT8 OemId[6];
187 UINT8 Revision;
188 UINT32 RsdtAddress;
189 UINT32 Length;
190 UINT64 XsdtAddress;
191 UINT8 ExtendedChecksum;
192 UINT8 Reserved[3];
193 } EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
194
195 ///
196 /// RSD_PTR Revision (as defined in ACPI 5.0 spec.)
197 ///
198 #define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.0) says current value is 2
199
200 ///
201 /// Common table header, this prefaces all ACPI tables, including FACS, but
202 /// excluding the RSD PTR structure
203 ///
204 typedef struct {
205 UINT32 Signature;
206 UINT32 Length;
207 } EFI_ACPI_5_0_COMMON_HEADER;
208
209 //
210 // Root System Description Table
211 // No definition needed as it is a common description table header, the same with
212 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
213 //
214
215 ///
216 /// RSDT Revision (as defined in ACPI 5.0 spec.)
217 ///
218 #define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
219
220 //
221 // Extended System Description Table
222 // No definition needed as it is a common description table header, the same with
223 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
224 //
225
226 ///
227 /// XSDT Revision (as defined in ACPI 5.0 spec.)
228 ///
229 #define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
230
231 ///
232 /// Fixed ACPI Description Table Structure (FADT)
233 ///
234 typedef struct {
235 EFI_ACPI_DESCRIPTION_HEADER Header;
236 UINT32 FirmwareCtrl;
237 UINT32 Dsdt;
238 UINT8 Reserved0;
239 UINT8 PreferredPmProfile;
240 UINT16 SciInt;
241 UINT32 SmiCmd;
242 UINT8 AcpiEnable;
243 UINT8 AcpiDisable;
244 UINT8 S4BiosReq;
245 UINT8 PstateCnt;
246 UINT32 Pm1aEvtBlk;
247 UINT32 Pm1bEvtBlk;
248 UINT32 Pm1aCntBlk;
249 UINT32 Pm1bCntBlk;
250 UINT32 Pm2CntBlk;
251 UINT32 PmTmrBlk;
252 UINT32 Gpe0Blk;
253 UINT32 Gpe1Blk;
254 UINT8 Pm1EvtLen;
255 UINT8 Pm1CntLen;
256 UINT8 Pm2CntLen;
257 UINT8 PmTmrLen;
258 UINT8 Gpe0BlkLen;
259 UINT8 Gpe1BlkLen;
260 UINT8 Gpe1Base;
261 UINT8 CstCnt;
262 UINT16 PLvl2Lat;
263 UINT16 PLvl3Lat;
264 UINT16 FlushSize;
265 UINT16 FlushStride;
266 UINT8 DutyOffset;
267 UINT8 DutyWidth;
268 UINT8 DayAlrm;
269 UINT8 MonAlrm;
270 UINT8 Century;
271 UINT16 IaPcBootArch;
272 UINT8 Reserved1;
273 UINT32 Flags;
274 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
275 UINT8 ResetValue;
276 UINT8 Reserved2[3];
277 UINT64 XFirmwareCtrl;
278 UINT64 XDsdt;
279 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
280 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
281 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
282 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
283 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
284 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
285 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
286 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
287 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
288 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
289 } EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE;
290
291 ///
292 /// FADT Version (as defined in ACPI 5.0 spec.)
293 ///
294 #define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05
295
296 //
297 // Fixed ACPI Description Table Preferred Power Management Profile
298 //
299 #define EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED 0
300 #define EFI_ACPI_5_0_PM_PROFILE_DESKTOP 1
301 #define EFI_ACPI_5_0_PM_PROFILE_MOBILE 2
302 #define EFI_ACPI_5_0_PM_PROFILE_WORKSTATION 3
303 #define EFI_ACPI_5_0_PM_PROFILE_ENTERPRISE_SERVER 4
304 #define EFI_ACPI_5_0_PM_PROFILE_SOHO_SERVER 5
305 #define EFI_ACPI_5_0_PM_PROFILE_APPLIANCE_PC 6
306 #define EFI_ACPI_5_0_PM_PROFILE_PERFORMANCE_SERVER 7
307 #define EFI_ACPI_5_0_PM_PROFILE_TABLET 8
308
309 //
310 // Fixed ACPI Description Table Boot Architecture Flags
311 // All other bits are reserved and must be set to 0.
312 //
313 #define EFI_ACPI_5_0_LEGACY_DEVICES BIT0
314 #define EFI_ACPI_5_0_8042 BIT1
315 #define EFI_ACPI_5_0_VGA_NOT_PRESENT BIT2
316 #define EFI_ACPI_5_0_MSI_NOT_SUPPORTED BIT3
317 #define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS BIT4
318 #define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT BIT5
319
320 //
321 // Fixed ACPI Description Table Fixed Feature Flags
322 // All other bits are reserved and must be set to 0.
323 //
324 #define EFI_ACPI_5_0_WBINVD BIT0
325 #define EFI_ACPI_5_0_WBINVD_FLUSH BIT1
326 #define EFI_ACPI_5_0_PROC_C1 BIT2
327 #define EFI_ACPI_5_0_P_LVL2_UP BIT3
328 #define EFI_ACPI_5_0_PWR_BUTTON BIT4
329 #define EFI_ACPI_5_0_SLP_BUTTON BIT5
330 #define EFI_ACPI_5_0_FIX_RTC BIT6
331 #define EFI_ACPI_5_0_RTC_S4 BIT7
332 #define EFI_ACPI_5_0_TMR_VAL_EXT BIT8
333 #define EFI_ACPI_5_0_DCK_CAP BIT9
334 #define EFI_ACPI_5_0_RESET_REG_SUP BIT10
335 #define EFI_ACPI_5_0_SEALED_CASE BIT11
336 #define EFI_ACPI_5_0_HEADLESS BIT12
337 #define EFI_ACPI_5_0_CPU_SW_SLP BIT13
338 #define EFI_ACPI_5_0_PCI_EXP_WAK BIT14
339 #define EFI_ACPI_5_0_USE_PLATFORM_CLOCK BIT15
340 #define EFI_ACPI_5_0_S4_RTC_STS_VALID BIT16
341 #define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE BIT17
342 #define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL BIT18
343 #define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
344 #define EFI_ACPI_5_0_HW_REDUCED_ACPI BIT20
345 #define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE BIT21
346
347 ///
348 /// Firmware ACPI Control Structure
349 ///
350 typedef struct {
351 UINT32 Signature;
352 UINT32 Length;
353 UINT32 HardwareSignature;
354 UINT32 FirmwareWakingVector;
355 UINT32 GlobalLock;
356 UINT32 Flags;
357 UINT64 XFirmwareWakingVector;
358 UINT8 Version;
359 UINT8 Reserved0[3];
360 UINT32 OspmFlags;
361 UINT8 Reserved1[24];
362 } EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
363
364 ///
365 /// FACS Version (as defined in ACPI 5.0 spec.)
366 ///
367 #define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
368
369 ///
370 /// Firmware Control Structure Feature Flags
371 /// All other bits are reserved and must be set to 0.
372 ///
373 #define EFI_ACPI_5_0_S4BIOS_F BIT0
374 #define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F BIT1
375
376 ///
377 /// OSPM Enabled Firmware Control Structure Flags
378 /// All other bits are reserved and must be set to 0.
379 ///
380 #define EFI_ACPI_5_0_OSPM_64BIT_WAKE_F BIT0
381
382 //
383 // Differentiated System Description Table,
384 // Secondary System Description Table
385 // and Persistent System Description Table,
386 // no definition needed as they are common description table header, the same with
387 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
388 //
389 #define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
390 #define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
391
392 ///
393 /// Multiple APIC Description Table header definition. The rest of the table
394 /// must be defined in a platform specific manner.
395 ///
396 typedef struct {
397 EFI_ACPI_DESCRIPTION_HEADER Header;
398 UINT32 LocalApicAddress;
399 UINT32 Flags;
400 } EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
401
402 ///
403 /// MADT Revision (as defined in ACPI 5.0 spec.)
404 ///
405 #define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
406
407 ///
408 /// Multiple APIC Flags
409 /// All other bits are reserved and must be set to 0.
410 ///
411 #define EFI_ACPI_5_0_PCAT_COMPAT BIT0
412
413 //
414 // Multiple APIC Description Table APIC structure types
415 // All other values between 0x0D and 0x7F are reserved and
416 // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
417 //
418 #define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC 0x00
419 #define EFI_ACPI_5_0_IO_APIC 0x01
420 #define EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE 0x02
421 #define EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
422 #define EFI_ACPI_5_0_LOCAL_APIC_NMI 0x04
423 #define EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
424 #define EFI_ACPI_5_0_IO_SAPIC 0x06
425 #define EFI_ACPI_5_0_LOCAL_SAPIC 0x07
426 #define EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES 0x08
427 #define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC 0x09
428 #define EFI_ACPI_5_0_LOCAL_X2APIC_NMI 0x0A
429 #define EFI_ACPI_5_0_GIC 0x0B
430 #define EFI_ACPI_5_0_GICD 0x0C
431
432 //
433 // APIC Structure Definitions
434 //
435
436 ///
437 /// Processor Local APIC Structure Definition
438 ///
439 typedef struct {
440 UINT8 Type;
441 UINT8 Length;
442 UINT8 AcpiProcessorId;
443 UINT8 ApicId;
444 UINT32 Flags;
445 } EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
446
447 ///
448 /// Local APIC Flags. All other bits are reserved and must be 0.
449 ///
450 #define EFI_ACPI_5_0_LOCAL_APIC_ENABLED BIT0
451
452 ///
453 /// IO APIC Structure
454 ///
455 typedef struct {
456 UINT8 Type;
457 UINT8 Length;
458 UINT8 IoApicId;
459 UINT8 Reserved;
460 UINT32 IoApicAddress;
461 UINT32 GlobalSystemInterruptBase;
462 } EFI_ACPI_5_0_IO_APIC_STRUCTURE;
463
464 ///
465 /// Interrupt Source Override Structure
466 ///
467 typedef struct {
468 UINT8 Type;
469 UINT8 Length;
470 UINT8 Bus;
471 UINT8 Source;
472 UINT32 GlobalSystemInterrupt;
473 UINT16 Flags;
474 } EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
475
476 ///
477 /// Platform Interrupt Sources Structure Definition
478 ///
479 typedef struct {
480 UINT8 Type;
481 UINT8 Length;
482 UINT16 Flags;
483 UINT8 InterruptType;
484 UINT8 ProcessorId;
485 UINT8 ProcessorEid;
486 UINT8 IoSapicVector;
487 UINT32 GlobalSystemInterrupt;
488 UINT32 PlatformInterruptSourceFlags;
489 UINT8 CpeiProcessorOverride;
490 UINT8 Reserved[31];
491 } EFI_ACPI_5_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
492
493 //
494 // MPS INTI flags.
495 // All other bits are reserved and must be set to 0.
496 //
497 #define EFI_ACPI_5_0_POLARITY (3 << 0)
498 #define EFI_ACPI_5_0_TRIGGER_MODE (3 << 2)
499
500 ///
501 /// Non-Maskable Interrupt Source Structure
502 ///
503 typedef struct {
504 UINT8 Type;
505 UINT8 Length;
506 UINT16 Flags;
507 UINT32 GlobalSystemInterrupt;
508 } EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
509
510 ///
511 /// Local APIC NMI Structure
512 ///
513 typedef struct {
514 UINT8 Type;
515 UINT8 Length;
516 UINT8 AcpiProcessorId;
517 UINT16 Flags;
518 UINT8 LocalApicLint;
519 } EFI_ACPI_5_0_LOCAL_APIC_NMI_STRUCTURE;
520
521 ///
522 /// Local APIC Address Override Structure
523 ///
524 typedef struct {
525 UINT8 Type;
526 UINT8 Length;
527 UINT16 Reserved;
528 UINT64 LocalApicAddress;
529 } EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
530
531 ///
532 /// IO SAPIC Structure
533 ///
534 typedef struct {
535 UINT8 Type;
536 UINT8 Length;
537 UINT8 IoApicId;
538 UINT8 Reserved;
539 UINT32 GlobalSystemInterruptBase;
540 UINT64 IoSapicAddress;
541 } EFI_ACPI_5_0_IO_SAPIC_STRUCTURE;
542
543 ///
544 /// Local SAPIC Structure
545 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
546 ///
547 typedef struct {
548 UINT8 Type;
549 UINT8 Length;
550 UINT8 AcpiProcessorId;
551 UINT8 LocalSapicId;
552 UINT8 LocalSapicEid;
553 UINT8 Reserved[3];
554 UINT32 Flags;
555 UINT32 ACPIProcessorUIDValue;
556 } EFI_ACPI_5_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
557
558 ///
559 /// Platform Interrupt Sources Structure
560 ///
561 typedef struct {
562 UINT8 Type;
563 UINT8 Length;
564 UINT16 Flags;
565 UINT8 InterruptType;
566 UINT8 ProcessorId;
567 UINT8 ProcessorEid;
568 UINT8 IoSapicVector;
569 UINT32 GlobalSystemInterrupt;
570 UINT32 PlatformInterruptSourceFlags;
571 } EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
572
573 ///
574 /// Platform Interrupt Source Flags.
575 /// All other bits are reserved and must be set to 0.
576 ///
577 #define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE BIT0
578
579 ///
580 /// Processor Local x2APIC Structure Definition
581 ///
582 typedef struct {
583 UINT8 Type;
584 UINT8 Length;
585 UINT8 Reserved[2];
586 UINT32 X2ApicId;
587 UINT32 Flags;
588 UINT32 AcpiProcessorUid;
589 } EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
590
591 ///
592 /// Local x2APIC NMI Structure
593 ///
594 typedef struct {
595 UINT8 Type;
596 UINT8 Length;
597 UINT16 Flags;
598 UINT32 AcpiProcessorUid;
599 UINT8 LocalX2ApicLint;
600 UINT8 Reserved[3];
601 } EFI_ACPI_5_0_LOCAL_X2APIC_NMI_STRUCTURE;
602
603 ///
604 /// GIC Structure
605 ///
606 typedef struct {
607 UINT8 Type;
608 UINT8 Length;
609 UINT16 Reserved;
610 UINT32 GicId;
611 UINT32 AcpiProcessorUid;
612 UINT32 Flags;
613 UINT32 ParkingProtocolVersion;
614 UINT32 PerformanceInterruptGsiv;
615 UINT64 ParkedAddress;
616 UINT64 PhysicalBaseAddress;
617 } EFI_ACPI_5_0_GIC_STRUCTURE;
618
619 ///
620 /// GIC Flags. All other bits are reserved and must be 0.
621 ///
622 #define EFI_ACPI_5_0_GIC_ENABLED BIT0
623 #define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL BIT1
624
625 ///
626 /// GIC Distributor Structure
627 ///
628 typedef struct {
629 UINT8 Type;
630 UINT8 Length;
631 UINT16 Reserved1;
632 UINT32 GicId;
633 UINT64 PhysicalBaseAddress;
634 UINT32 SystemVectorBase;
635 UINT32 Reserved2;
636 } EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE;
637
638 ///
639 /// Smart Battery Description Table (SBST)
640 ///
641 typedef struct {
642 EFI_ACPI_DESCRIPTION_HEADER Header;
643 UINT32 WarningEnergyLevel;
644 UINT32 LowEnergyLevel;
645 UINT32 CriticalEnergyLevel;
646 } EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE;
647
648 ///
649 /// SBST Version (as defined in ACPI 5.0 spec.)
650 ///
651 #define EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
652
653 ///
654 /// Embedded Controller Boot Resources Table (ECDT)
655 /// The table is followed by a null terminated ASCII string that contains
656 /// a fully qualified reference to the name space object.
657 ///
658 typedef struct {
659 EFI_ACPI_DESCRIPTION_HEADER Header;
660 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcControl;
661 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcData;
662 UINT32 Uid;
663 UINT8 GpeBit;
664 } EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
665
666 ///
667 /// ECDT Version (as defined in ACPI 5.0 spec.)
668 ///
669 #define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
670
671 ///
672 /// System Resource Affinity Table (SRAT). The rest of the table
673 /// must be defined in a platform specific manner.
674 ///
675 typedef struct {
676 EFI_ACPI_DESCRIPTION_HEADER Header;
677 UINT32 Reserved1; ///< Must be set to 1
678 UINT64 Reserved2;
679 } EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
680
681 ///
682 /// SRAT Version (as defined in ACPI 5.0 spec.)
683 ///
684 #define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
685
686 //
687 // SRAT structure types.
688 // All other values between 0x03 an 0xFF are reserved and
689 // will be ignored by OSPM.
690 //
691 #define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
692 #define EFI_ACPI_5_0_MEMORY_AFFINITY 0x01
693 #define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
694
695 ///
696 /// Processor Local APIC/SAPIC Affinity Structure Definition
697 ///
698 typedef struct {
699 UINT8 Type;
700 UINT8 Length;
701 UINT8 ProximityDomain7To0;
702 UINT8 ApicId;
703 UINT32 Flags;
704 UINT8 LocalSapicEid;
705 UINT8 ProximityDomain31To8[3];
706 UINT32 ClockDomain;
707 } EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
708
709 ///
710 /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
711 ///
712 #define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
713
714 ///
715 /// Memory Affinity Structure Definition
716 ///
717 typedef struct {
718 UINT8 Type;
719 UINT8 Length;
720 UINT32 ProximityDomain;
721 UINT16 Reserved1;
722 UINT32 AddressBaseLow;
723 UINT32 AddressBaseHigh;
724 UINT32 LengthLow;
725 UINT32 LengthHigh;
726 UINT32 Reserved2;
727 UINT32 Flags;
728 UINT64 Reserved3;
729 } EFI_ACPI_5_0_MEMORY_AFFINITY_STRUCTURE;
730
731 //
732 // Memory Flags. All other bits are reserved and must be 0.
733 //
734 #define EFI_ACPI_5_0_MEMORY_ENABLED (1 << 0)
735 #define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE (1 << 1)
736 #define EFI_ACPI_5_0_MEMORY_NONVOLATILE (1 << 2)
737
738 ///
739 /// Processor Local x2APIC Affinity Structure Definition
740 ///
741 typedef struct {
742 UINT8 Type;
743 UINT8 Length;
744 UINT8 Reserved1[2];
745 UINT32 ProximityDomain;
746 UINT32 X2ApicId;
747 UINT32 Flags;
748 UINT32 ClockDomain;
749 UINT8 Reserved2[4];
750 } EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
751
752 ///
753 /// System Locality Distance Information Table (SLIT).
754 /// The rest of the table is a matrix.
755 ///
756 typedef struct {
757 EFI_ACPI_DESCRIPTION_HEADER Header;
758 UINT64 NumberOfSystemLocalities;
759 } EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
760
761 ///
762 /// SLIT Version (as defined in ACPI 5.0 spec.)
763 ///
764 #define EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
765
766 ///
767 /// Corrected Platform Error Polling Table (CPEP)
768 ///
769 typedef struct {
770 EFI_ACPI_DESCRIPTION_HEADER Header;
771 UINT8 Reserved[8];
772 } EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
773
774 ///
775 /// CPEP Version (as defined in ACPI 5.0 spec.)
776 ///
777 #define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
778
779 //
780 // CPEP processor structure types.
781 //
782 #define EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC 0x00
783
784 ///
785 /// Corrected Platform Error Polling Processor Structure Definition
786 ///
787 typedef struct {
788 UINT8 Type;
789 UINT8 Length;
790 UINT8 ProcessorId;
791 UINT8 ProcessorEid;
792 UINT32 PollingInterval;
793 } EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
794
795 ///
796 /// Maximum System Characteristics Table (MSCT)
797 ///
798 typedef struct {
799 EFI_ACPI_DESCRIPTION_HEADER Header;
800 UINT32 OffsetProxDomInfo;
801 UINT32 MaximumNumberOfProximityDomains;
802 UINT32 MaximumNumberOfClockDomains;
803 UINT64 MaximumPhysicalAddress;
804 } EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
805
806 ///
807 /// MSCT Version (as defined in ACPI 5.0 spec.)
808 ///
809 #define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
810
811 ///
812 /// Maximum Proximity Domain Information Structure Definition
813 ///
814 typedef struct {
815 UINT8 Revision;
816 UINT8 Length;
817 UINT32 ProximityDomainRangeLow;
818 UINT32 ProximityDomainRangeHigh;
819 UINT32 MaximumProcessorCapacity;
820 UINT64 MaximumMemoryCapacity;
821 } EFI_ACPI_5_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
822
823 ///
824 /// ACPI RAS Feature Table definition.
825 ///
826 typedef struct {
827 EFI_ACPI_DESCRIPTION_HEADER Header;
828 UINT8 PlatformCommunicationChannelIdentifier[12];
829 } EFI_ACPI_5_0_RAS_FEATURE_TABLE;
830
831 ///
832 /// RASF Version (as defined in ACPI 5.0 spec.)
833 ///
834 #define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION 0x01
835
836 ///
837 /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
838 ///
839 typedef struct {
840 UINT32 Signature;
841 UINT16 Command;
842 UINT16 Status;
843 UINT16 Version;
844 UINT8 RASCapabilities[16];
845 UINT8 SetRASCapabilities[16];
846 UINT16 NumberOfRASFParameterBlocks;
847 UINT32 SetRASCapabilitiesStatus;
848 } EFI_ACPI_5_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
849
850 ///
851 /// ACPI RASF PCC command code
852 ///
853 #define EFI_ACPI_5_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
854
855 ///
856 /// ACPI RASF Platform RAS Capabilities
857 ///
858 #define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01
859 #define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02
860
861 ///
862 /// ACPI RASF Parameter Block structure for PATROL_SCRUB
863 ///
864 typedef struct {
865 UINT16 Type;
866 UINT16 Version;
867 UINT16 Length;
868 UINT16 PatrolScrubCommand;
869 UINT64 RequestedAddressRange[2];
870 UINT64 ActualAddressRange[2];
871 UINT16 Flags;
872 UINT8 RequestedSpeed;
873 } EFI_ACPI_5_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
874
875 ///
876 /// ACPI RASF Patrol Scrub command
877 ///
878 #define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
879 #define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
880 #define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
881
882 ///
883 /// Memory Power State Table definition.
884 ///
885 typedef struct {
886 EFI_ACPI_DESCRIPTION_HEADER Header;
887 UINT8 PlatformCommunicationChannelIdentifier;
888 UINT8 Reserved[3];
889 // Memory Power Node Structure
890 // Memory Power State Characteristics
891 } EFI_ACPI_5_0_MEMORY_POWER_STATUS_TABLE;
892
893 ///
894 /// MPST Version (as defined in ACPI 5.0 spec.)
895 ///
896 #define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
897
898 ///
899 /// MPST Platform Communication Channel Shared Memory Region definition.
900 ///
901 typedef struct {
902 UINT32 Signature;
903 UINT16 Command;
904 UINT16 Status;
905 UINT32 MemoryPowerCommandRegister;
906 UINT32 MemoryPowerStatusRegister;
907 UINT32 PowerStateId;
908 UINT32 MemoryPowerNodeId;
909 UINT64 MemoryEnergyConsumed;
910 UINT64 ExpectedAveragePowerComsuned;
911 } EFI_ACPI_5_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
912
913 ///
914 /// ACPI MPST PCC command code
915 ///
916 #define EFI_ACPI_5_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
917
918 ///
919 /// ACPI MPST Memory Power command
920 ///
921 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
922 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
923 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
924 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
925
926 ///
927 /// MPST Memory Power Node Table
928 ///
929 typedef struct {
930 UINT8 PowerStateValue;
931 UINT8 PowerStateInformationIndex;
932 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE;
933
934 typedef struct {
935 UINT8 Flag;
936 UINT8 Reserved;
937 UINT16 MemoryPowerNodeId;
938 UINT32 Length;
939 UINT64 AddressBase;
940 UINT64 AddressLength;
941 UINT32 NumberOfPowerStates;
942 UINT32 NumberOfPhysicalComponents;
943 //EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
944 //UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
945 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE;
946
947 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
948 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
949 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
950
951 typedef struct {
952 UINT16 MemoryPowerNodeCount;
953 UINT8 Reserved[2];
954 } EFI_ACPI_5_0_MPST_MEMORY_POWER_NODE_TABLE;
955
956 ///
957 /// MPST Memory Power State Characteristics Table
958 ///
959 typedef struct {
960 UINT8 PowerStateStructureID;
961 UINT8 Flag;
962 UINT16 Reserved;
963 UINT32 AveragePowerConsumedInMPS0;
964 UINT32 RelativePowerSavingToMPS0;
965 UINT64 ExitLatencyToMPS0;
966 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
967
968 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
969 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
970 #define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
971
972 typedef struct {
973 UINT16 MemoryPowerStateCharacteristicsCount;
974 UINT8 Reserved[2];
975 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
976
977 ///
978 /// Memory Topology Table definition.
979 ///
980 typedef struct {
981 EFI_ACPI_DESCRIPTION_HEADER Header;
982 UINT32 Reserved;
983 } EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE;
984
985 ///
986 /// PMTT Version (as defined in ACPI 5.0 spec.)
987 ///
988 #define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
989
990 ///
991 /// Common Memory Aggregator Device Structure.
992 ///
993 typedef struct {
994 UINT8 Type;
995 UINT8 Reserved;
996 UINT16 Length;
997 UINT16 Flags;
998 UINT16 Reserved1;
999 } EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
1000
1001 ///
1002 /// Memory Aggregator Device Type
1003 ///
1004 #define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1
1005 #define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
1006 #define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3
1007
1008 ///
1009 /// Socket Memory Aggregator Device Structure.
1010 ///
1011 typedef struct {
1012 EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
1013 UINT16 SocketIdentifier;
1014 UINT16 Reserved;
1015 //EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];
1016 } EFI_ACPI_5_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
1017
1018 ///
1019 /// MemoryController Memory Aggregator Device Structure.
1020 ///
1021 typedef struct {
1022 EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
1023 UINT32 ReadLatency;
1024 UINT32 WriteLatency;
1025 UINT32 ReadBandwidth;
1026 UINT32 WriteBandwidth;
1027 UINT16 OptimalAccessUnit;
1028 UINT16 OptimalAccessAlignment;
1029 UINT16 Reserved;
1030 UINT16 NumberOfProximityDomains;
1031 //UINT32 ProximityDomain[NumberOfProximityDomains];
1032 //EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];
1033 } EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
1034
1035 ///
1036 /// DIMM Memory Aggregator Device Structure.
1037 ///
1038 typedef struct {
1039 EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
1040 UINT16 PhysicalComponentIdentifier;
1041 UINT16 Reserved;
1042 UINT32 SizeOfDimm;
1043 UINT32 SmbiosHandle;
1044 } EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
1045
1046 ///
1047 /// Boot Graphics Resource Table definition.
1048 ///
1049 typedef struct {
1050 EFI_ACPI_DESCRIPTION_HEADER Header;
1051 ///
1052 /// 2-bytes (16 bit) version ID. This value must be 1.
1053 ///
1054 UINT16 Version;
1055 ///
1056 /// 1-byte status field indicating current status about the table.
1057 /// Bits[7:1] = Reserved (must be zero)
1058 /// Bit [0] = Valid. A one indicates the boot image graphic is valid.
1059 ///
1060 UINT8 Status;
1061 ///
1062 /// 1-byte enumerated type field indicating format of the image.
1063 /// 0 = Bitmap
1064 /// 1 - 255 Reserved (for future use)
1065 ///
1066 UINT8 ImageType;
1067 ///
1068 /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
1069 /// of the image bitmap.
1070 ///
1071 UINT64 ImageAddress;
1072 ///
1073 /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
1074 /// (X, Y) display offset of the top left corner of the boot image.
1075 /// The top left corner of the display is at offset (0, 0).
1076 ///
1077 UINT32 ImageOffsetX;
1078 ///
1079 /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
1080 /// (X, Y) display offset of the top left corner of the boot image.
1081 /// The top left corner of the display is at offset (0, 0).
1082 ///
1083 UINT32 ImageOffsetY;
1084 } EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE;
1085
1086 ///
1087 /// BGRT Revision
1088 ///
1089 #define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
1090
1091 ///
1092 /// BGRT Version
1093 ///
1094 #define EFI_ACPI_5_0_BGRT_VERSION 0x01
1095
1096 ///
1097 /// BGRT Status
1098 ///
1099 #define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED 0x00
1100 #define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED 0x01
1101 #define EFI_ACPI_5_0_BGRT_STATUS_INVALID EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED
1102 #define EFI_ACPI_5_0_BGRT_STATUS_VALID EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED
1103
1104 ///
1105 /// BGRT Image Type
1106 ///
1107 #define EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP 0x00
1108
1109 ///
1110 /// FPDT Version (as defined in ACPI 5.0 spec.)
1111 ///
1112 #define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
1113
1114 ///
1115 /// FPDT Performance Record Types
1116 ///
1117 #define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
1118 #define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
1119
1120 ///
1121 /// FPDT Performance Record Revision
1122 ///
1123 #define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
1124 #define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
1125
1126 ///
1127 /// FPDT Runtime Performance Record Types
1128 ///
1129 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
1130 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
1131 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
1132
1133 ///
1134 /// FPDT Runtime Performance Record Revision
1135 ///
1136 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
1137 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
1138 #define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
1139
1140 ///
1141 /// FPDT Performance Record header
1142 ///
1143 typedef struct {
1144 UINT16 Type;
1145 UINT8 Length;
1146 UINT8 Revision;
1147 } EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER;
1148
1149 ///
1150 /// FPDT Performance Table header
1151 ///
1152 typedef struct {
1153 UINT32 Signature;
1154 UINT32 Length;
1155 } EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER;
1156
1157 ///
1158 /// FPDT Firmware Basic Boot Performance Pointer Record Structure
1159 ///
1160 typedef struct {
1161 EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
1162 UINT32 Reserved;
1163 ///
1164 /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
1165 ///
1166 UINT64 BootPerformanceTablePointer;
1167 } EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
1168
1169 ///
1170 /// FPDT S3 Performance Table Pointer Record Structure
1171 ///
1172 typedef struct {
1173 EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
1174 UINT32 Reserved;
1175 ///
1176 /// 64-bit processor-relative physical address of the S3 Performance Table.
1177 ///
1178 UINT64 S3PerformanceTablePointer;
1179 } EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
1180
1181 ///
1182 /// FPDT Firmware Basic Boot Performance Record Structure
1183 ///
1184 typedef struct {
1185 EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
1186 UINT32 Reserved;
1187 ///
1188 /// Timer value logged at the beginning of firmware image execution.
1189 /// This may not always be zero or near zero.
1190 ///
1191 UINT64 ResetEnd;
1192 ///
1193 /// Timer value logged just prior to loading the OS boot loader into memory.
1194 /// For non-UEFI compatible boots, this field must be zero.
1195 ///
1196 UINT64 OsLoaderLoadImageStart;
1197 ///
1198 /// Timer value logged just prior to launching the previously loaded OS boot loader image.
1199 /// For non-UEFI compatible boots, the timer value logged will be just prior
1200 /// to the INT 19h handler invocation.
1201 ///
1202 UINT64 OsLoaderStartImageStart;
1203 ///
1204 /// Timer value logged at the point when the OS loader calls the
1205 /// ExitBootServices function for UEFI compatible firmware.
1206 /// For non-UEFI compatible boots, this field must be zero.
1207 ///
1208 UINT64 ExitBootServicesEntry;
1209 ///
1210 /// Timer value logged at the point just prior towhen the OS loader gaining
1211 /// control back from calls the ExitBootServices function for UEFI compatible firmware.
1212 /// For non-UEFI compatible boots, this field must be zero.
1213 ///
1214 UINT64 ExitBootServicesExit;
1215 } EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
1216
1217 ///
1218 /// FPDT Firmware Basic Boot Performance Table signature
1219 ///
1220 #define EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
1221
1222 //
1223 // FPDT Firmware Basic Boot Performance Table
1224 //
1225 typedef struct {
1226 EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
1227 //
1228 // one or more Performance Records.
1229 //
1230 } EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
1231
1232 ///
1233 /// FPDT "S3PT" S3 Performance Table
1234 ///
1235 #define EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
1236
1237 //
1238 // FPDT Firmware S3 Boot Performance Table
1239 //
1240 typedef struct {
1241 EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
1242 //
1243 // one or more Performance Records.
1244 //
1245 } EFI_ACPI_5_0_FPDT_FIRMWARE_S3_BOOT_TABLE;
1246
1247 ///
1248 /// FPDT Basic S3 Resume Performance Record
1249 ///
1250 typedef struct {
1251 EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
1252 ///
1253 /// A count of the number of S3 resume cycles since the last full boot sequence.
1254 ///
1255 UINT32 ResumeCount;
1256 ///
1257 /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
1258 /// OS waking vector. Only the most recent resume cycle's time is retained.
1259 ///
1260 UINT64 FullResume;
1261 ///
1262 /// Average timer value of all resume cycles logged since the last full boot
1263 /// sequence, including the most recent resume. Note that the entire log of
1264 /// timer values does not need to be retained in order to calculate this average.
1265 ///
1266 UINT64 AverageResume;
1267 } EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD;
1268
1269 ///
1270 /// FPDT Basic S3 Suspend Performance Record
1271 ///
1272 typedef struct {
1273 EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
1274 ///
1275 /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
1276 /// Only the most recent suspend cycle's timer value is retained.
1277 ///
1278 UINT64 SuspendStart;
1279 ///
1280 /// Timer value recorded at the final firmware write to SLP_TYP (or other
1281 /// mechanism) used to trigger hardware entry to S3.
1282 /// Only the most recent suspend cycle's timer value is retained.
1283 ///
1284 UINT64 SuspendEnd;
1285 } EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD;
1286
1287 ///
1288 /// Firmware Performance Record Table definition.
1289 ///
1290 typedef struct {
1291 EFI_ACPI_DESCRIPTION_HEADER Header;
1292 } EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
1293
1294 ///
1295 /// Generic Timer Description Table definition.
1296 ///
1297 typedef struct {
1298 EFI_ACPI_DESCRIPTION_HEADER Header;
1299 UINT64 PhysicalAddress;
1300 UINT32 GlobalFlags;
1301 UINT32 SecurePL1TimerGSIV;
1302 UINT32 SecurePL1TimerFlags;
1303 UINT32 NonSecurePL1TimerGSIV;
1304 UINT32 NonSecurePL1TimerFlags;
1305 UINT32 VirtualTimerGSIV;
1306 UINT32 VirtualTimerFlags;
1307 UINT32 NonSecurePL2TimerGSIV;
1308 UINT32 NonSecurePL2TimerFlags;
1309 } EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE;
1310
1311 ///
1312 /// GTDT Version (as defined in ACPI 5.0 spec.)
1313 ///
1314 #define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x01
1315
1316 ///
1317 /// Global Flags. All other bits are reserved and must be 0.
1318 ///
1319 #define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT BIT0
1320 #define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE BIT1
1321
1322 ///
1323 /// Timer Flags. All other bits are reserved and must be 0.
1324 ///
1325 #define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
1326 #define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1327
1328 ///
1329 /// Boot Error Record Table (BERT)
1330 ///
1331 typedef struct {
1332 EFI_ACPI_DESCRIPTION_HEADER Header;
1333 UINT32 BootErrorRegionLength;
1334 UINT64 BootErrorRegion;
1335 } EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_HEADER;
1336
1337 ///
1338 /// BERT Version (as defined in ACPI 5.0 spec.)
1339 ///
1340 #define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
1341
1342 ///
1343 /// Boot Error Region Block Status Definition
1344 ///
1345 typedef struct {
1346 UINT32 UncorrectableErrorValid:1;
1347 UINT32 CorrectableErrorValid:1;
1348 UINT32 MultipleUncorrectableErrors:1;
1349 UINT32 MultipleCorrectableErrors:1;
1350 UINT32 ErrorDataEntryCount:10;
1351 UINT32 Reserved:18;
1352 } EFI_ACPI_5_0_ERROR_BLOCK_STATUS;
1353
1354 ///
1355 /// Boot Error Region Definition
1356 ///
1357 typedef struct {
1358 EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;
1359 UINT32 RawDataOffset;
1360 UINT32 RawDataLength;
1361 UINT32 DataLength;
1362 UINT32 ErrorSeverity;
1363 } EFI_ACPI_5_0_BOOT_ERROR_REGION_STRUCTURE;
1364
1365 //
1366 // Boot Error Severity types
1367 //
1368 #define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTABLE 0x00
1369 #define EFI_ACPI_5_0_ERROR_SEVERITY_FATAL 0x01
1370 #define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTED 0x02
1371 #define EFI_ACPI_5_0_ERROR_SEVERITY_NONE 0x03
1372
1373 ///
1374 /// Generic Error Data Entry Definition
1375 ///
1376 typedef struct {
1377 UINT8 SectionType[16];
1378 UINT32 ErrorSeverity;
1379 UINT16 Revision;
1380 UINT8 ValidationBits;
1381 UINT8 Flags;
1382 UINT32 ErrorDataLength;
1383 UINT8 FruId[16];
1384 UINT8 FruText[20];
1385 } EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
1386
1387 ///
1388 /// Generic Error Data Entry Version (as defined in ACPI 5.0 spec.)
1389 ///
1390 #define EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201
1391
1392 ///
1393 /// HEST - Hardware Error Source Table
1394 ///
1395 typedef struct {
1396 EFI_ACPI_DESCRIPTION_HEADER Header;
1397 UINT32 ErrorSourceCount;
1398 } EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
1399
1400 ///
1401 /// HEST Version (as defined in ACPI 5.0 spec.)
1402 ///
1403 #define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
1404
1405 //
1406 // Error Source structure types.
1407 //
1408 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
1409 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
1410 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR 0x02
1411 #define EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER 0x06
1412 #define EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER 0x07
1413 #define EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER 0x08
1414 #define EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR 0x09
1415
1416 //
1417 // Error Source structure flags.
1418 //
1419 #define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
1420 #define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
1421
1422 ///
1423 /// IA-32 Architecture Machine Check Exception Structure Definition
1424 ///
1425 typedef struct {
1426 UINT16 Type;
1427 UINT16 SourceId;
1428 UINT8 Reserved0[2];
1429 UINT8 Flags;
1430 UINT8 Enabled;
1431 UINT32 NumberOfRecordsToPreAllocate;
1432 UINT32 MaxSectionsPerRecord;
1433 UINT64 GlobalCapabilityInitData;
1434 UINT64 GlobalControlInitData;
1435 UINT8 NumberOfHardwareBanks;
1436 UINT8 Reserved1[7];
1437 } EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
1438
1439 ///
1440 /// IA-32 Architecture Machine Check Bank Structure Definition
1441 ///
1442 typedef struct {
1443 UINT8 BankNumber;
1444 UINT8 ClearStatusOnInitialization;
1445 UINT8 StatusDataFormat;
1446 UINT8 Reserved0;
1447 UINT32 ControlRegisterMsrAddress;
1448 UINT64 ControlInitData;
1449 UINT32 StatusRegisterMsrAddress;
1450 UINT32 AddressRegisterMsrAddress;
1451 UINT32 MiscRegisterMsrAddress;
1452 } EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
1453
1454 ///
1455 /// IA-32 Architecture Machine Check Bank Structure MCA data format
1456 ///
1457 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
1458 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
1459 #define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
1460
1461 //
1462 // Hardware Error Notification types. All other values are reserved
1463 //
1464 #define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
1465 #define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
1466 #define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
1467 #define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
1468 #define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
1469
1470 ///
1471 /// Hardware Error Notification Configuration Write Enable Structure Definition
1472 ///
1473 typedef struct {
1474 UINT16 Type:1;
1475 UINT16 PollInterval:1;
1476 UINT16 SwitchToPollingThresholdValue:1;
1477 UINT16 SwitchToPollingThresholdWindow:1;
1478 UINT16 ErrorThresholdValue:1;
1479 UINT16 ErrorThresholdWindow:1;
1480 UINT16 Reserved:10;
1481 } EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
1482
1483 ///
1484 /// Hardware Error Notification Structure Definition
1485 ///
1486 typedef struct {
1487 UINT8 Type;
1488 UINT8 Length;
1489 EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
1490 UINT32 PollInterval;
1491 UINT32 Vector;
1492 UINT32 SwitchToPollingThresholdValue;
1493 UINT32 SwitchToPollingThresholdWindow;
1494 UINT32 ErrorThresholdValue;
1495 UINT32 ErrorThresholdWindow;
1496 } EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
1497
1498 ///
1499 /// IA-32 Architecture Corrected Machine Check Structure Definition
1500 ///
1501 typedef struct {
1502 UINT16 Type;
1503 UINT16 SourceId;
1504 UINT8 Reserved0[2];
1505 UINT8 Flags;
1506 UINT8 Enabled;
1507 UINT32 NumberOfRecordsToPreAllocate;
1508 UINT32 MaxSectionsPerRecord;
1509 EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
1510 UINT8 NumberOfHardwareBanks;
1511 UINT8 Reserved1[3];
1512 } EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
1513
1514 ///
1515 /// IA-32 Architecture NMI Error Structure Definition
1516 ///
1517 typedef struct {
1518 UINT16 Type;
1519 UINT16 SourceId;
1520 UINT8 Reserved0[2];
1521 UINT32 NumberOfRecordsToPreAllocate;
1522 UINT32 MaxSectionsPerRecord;
1523 UINT32 MaxRawDataLength;
1524 } EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
1525
1526 ///
1527 /// PCI Express Root Port AER Structure Definition
1528 ///
1529 typedef struct {
1530 UINT16 Type;
1531 UINT16 SourceId;
1532 UINT8 Reserved0[2];
1533 UINT8 Flags;
1534 UINT8 Enabled;
1535 UINT32 NumberOfRecordsToPreAllocate;
1536 UINT32 MaxSectionsPerRecord;
1537 UINT32 Bus;
1538 UINT16 Device;
1539 UINT16 Function;
1540 UINT16 DeviceControl;
1541 UINT8 Reserved1[2];
1542 UINT32 UncorrectableErrorMask;
1543 UINT32 UncorrectableErrorSeverity;
1544 UINT32 CorrectableErrorMask;
1545 UINT32 AdvancedErrorCapabilitiesAndControl;
1546 UINT32 RootErrorCommand;
1547 } EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
1548
1549 ///
1550 /// PCI Express Device AER Structure Definition
1551 ///
1552 typedef struct {
1553 UINT16 Type;
1554 UINT16 SourceId;
1555 UINT8 Reserved0[2];
1556 UINT8 Flags;
1557 UINT8 Enabled;
1558 UINT32 NumberOfRecordsToPreAllocate;
1559 UINT32 MaxSectionsPerRecord;
1560 UINT32 Bus;
1561 UINT16 Device;
1562 UINT16 Function;
1563 UINT16 DeviceControl;
1564 UINT8 Reserved1[2];
1565 UINT32 UncorrectableErrorMask;
1566 UINT32 UncorrectableErrorSeverity;
1567 UINT32 CorrectableErrorMask;
1568 UINT32 AdvancedErrorCapabilitiesAndControl;
1569 } EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
1570
1571 ///
1572 /// PCI Express Bridge AER Structure Definition
1573 ///
1574 typedef struct {
1575 UINT16 Type;
1576 UINT16 SourceId;
1577 UINT8 Reserved0[2];
1578 UINT8 Flags;
1579 UINT8 Enabled;
1580 UINT32 NumberOfRecordsToPreAllocate;
1581 UINT32 MaxSectionsPerRecord;
1582 UINT32 Bus;
1583 UINT16 Device;
1584 UINT16 Function;
1585 UINT16 DeviceControl;
1586 UINT8 Reserved1[2];
1587 UINT32 UncorrectableErrorMask;
1588 UINT32 UncorrectableErrorSeverity;
1589 UINT32 CorrectableErrorMask;
1590 UINT32 AdvancedErrorCapabilitiesAndControl;
1591 UINT32 SecondaryUncorrectableErrorMask;
1592 UINT32 SecondaryUncorrectableErrorSeverity;
1593 UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
1594 } EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
1595
1596 ///
1597 /// Generic Hardware Error Source Structure Definition
1598 ///
1599 typedef struct {
1600 UINT16 Type;
1601 UINT16 SourceId;
1602 UINT16 RelatedSourceId;
1603 UINT8 Flags;
1604 UINT8 Enabled;
1605 UINT32 NumberOfRecordsToPreAllocate;
1606 UINT32 MaxSectionsPerRecord;
1607 UINT32 MaxRawDataLength;
1608 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
1609 EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
1610 UINT32 ErrorStatusBlockLength;
1611 } EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
1612
1613 ///
1614 /// Generic Error Status Definition
1615 ///
1616 typedef struct {
1617 EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;
1618 UINT32 RawDataOffset;
1619 UINT32 RawDataLength;
1620 UINT32 DataLength;
1621 UINT32 ErrorSeverity;
1622 } EFI_ACPI_5_0_GENERIC_ERROR_STATUS_STRUCTURE;
1623
1624 ///
1625 /// ERST - Error Record Serialization Table
1626 ///
1627 typedef struct {
1628 EFI_ACPI_DESCRIPTION_HEADER Header;
1629 UINT32 SerializationHeaderSize;
1630 UINT8 Reserved0[4];
1631 UINT32 InstructionEntryCount;
1632 } EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
1633
1634 ///
1635 /// ERST Version (as defined in ACPI 5.0 spec.)
1636 ///
1637 #define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
1638
1639 ///
1640 /// ERST Serialization Actions
1641 ///
1642 #define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION 0x00
1643 #define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION 0x01
1644 #define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION 0x02
1645 #define EFI_ACPI_5_0_ERST_END_OPERATION 0x03
1646 #define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET 0x04
1647 #define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION 0x05
1648 #define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS 0x06
1649 #define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS 0x07
1650 #define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER 0x08
1651 #define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER 0x09
1652 #define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT 0x0A
1653 #define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
1654 #define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
1655 #define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
1656 #define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
1657
1658 ///
1659 /// ERST Action Command Status
1660 ///
1661 #define EFI_ACPI_5_0_ERST_STATUS_SUCCESS 0x00
1662 #define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
1663 #define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
1664 #define EFI_ACPI_5_0_ERST_STATUS_FAILED 0x03
1665 #define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04
1666 #define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND 0x05
1667
1668 ///
1669 /// ERST Serialization Instructions
1670 ///
1671 #define EFI_ACPI_5_0_ERST_READ_REGISTER 0x00
1672 #define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE 0x01
1673 #define EFI_ACPI_5_0_ERST_WRITE_REGISTER 0x02
1674 #define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE 0x03
1675 #define EFI_ACPI_5_0_ERST_NOOP 0x04
1676 #define EFI_ACPI_5_0_ERST_LOAD_VAR1 0x05
1677 #define EFI_ACPI_5_0_ERST_LOAD_VAR2 0x06
1678 #define EFI_ACPI_5_0_ERST_STORE_VAR1 0x07
1679 #define EFI_ACPI_5_0_ERST_ADD 0x08
1680 #define EFI_ACPI_5_0_ERST_SUBTRACT 0x09
1681 #define EFI_ACPI_5_0_ERST_ADD_VALUE 0x0A
1682 #define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE 0x0B
1683 #define EFI_ACPI_5_0_ERST_STALL 0x0C
1684 #define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE 0x0D
1685 #define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
1686 #define EFI_ACPI_5_0_ERST_GOTO 0x0F
1687 #define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE 0x10
1688 #define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE 0x11
1689 #define EFI_ACPI_5_0_ERST_MOVE_DATA 0x12
1690
1691 ///
1692 /// ERST Instruction Flags
1693 ///
1694 #define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER 0x01
1695
1696 ///
1697 /// ERST Serialization Instruction Entry
1698 ///
1699 typedef struct {
1700 UINT8 SerializationAction;
1701 UINT8 Instruction;
1702 UINT8 Flags;
1703 UINT8 Reserved0;
1704 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
1705 UINT64 Value;
1706 UINT64 Mask;
1707 } EFI_ACPI_5_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
1708
1709 ///
1710 /// EINJ - Error Injection Table
1711 ///
1712 typedef struct {
1713 EFI_ACPI_DESCRIPTION_HEADER Header;
1714 UINT32 InjectionHeaderSize;
1715 UINT8 InjectionFlags;
1716 UINT8 Reserved0[3];
1717 UINT32 InjectionEntryCount;
1718 } EFI_ACPI_5_0_ERROR_INJECTION_TABLE_HEADER;
1719
1720 ///
1721 /// EINJ Version (as defined in ACPI 5.0 spec.)
1722 ///
1723 #define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION 0x01
1724
1725 ///
1726 /// EINJ Error Injection Actions
1727 ///
1728 #define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION 0x00
1729 #define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
1730 #define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE 0x02
1731 #define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE 0x03
1732 #define EFI_ACPI_5_0_EINJ_END_OPERATION 0x04
1733 #define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION 0x05
1734 #define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS 0x06
1735 #define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS 0x07
1736 #define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR 0xFF
1737
1738 ///
1739 /// EINJ Action Command Status
1740 ///
1741 #define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS 0x00
1742 #define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01
1743 #define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS 0x02
1744
1745 ///
1746 /// EINJ Error Type Definition
1747 ///
1748 #define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
1749 #define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
1750 #define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
1751 #define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
1752 #define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
1753 #define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
1754 #define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
1755 #define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
1756 #define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
1757 #define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
1758 #define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
1759 #define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
1760
1761 ///
1762 /// EINJ Injection Instructions
1763 ///
1764 #define EFI_ACPI_5_0_EINJ_READ_REGISTER 0x00
1765 #define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE 0x01
1766 #define EFI_ACPI_5_0_EINJ_WRITE_REGISTER 0x02
1767 #define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE 0x03
1768 #define EFI_ACPI_5_0_EINJ_NOOP 0x04
1769
1770 ///
1771 /// EINJ Instruction Flags
1772 ///
1773 #define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER 0x01
1774
1775 ///
1776 /// EINJ Injection Instruction Entry
1777 ///
1778 typedef struct {
1779 UINT8 InjectionAction;
1780 UINT8 Instruction;
1781 UINT8 Flags;
1782 UINT8 Reserved0;
1783 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
1784 UINT64 Value;
1785 UINT64 Mask;
1786 } EFI_ACPI_5_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
1787
1788 ///
1789 /// EINJ Trigger Action Table
1790 ///
1791 typedef struct {
1792 UINT32 HeaderSize;
1793 UINT32 Revision;
1794 UINT32 TableSize;
1795 UINT32 EntryCount;
1796 } EFI_ACPI_5_0_EINJ_TRIGGER_ACTION_TABLE;
1797
1798 ///
1799 /// Platform Communications Channel Table (PCCT)
1800 ///
1801 typedef struct {
1802 EFI_ACPI_DESCRIPTION_HEADER Header;
1803 UINT32 Flags;
1804 UINT64 Reserved;
1805 } EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
1806
1807 ///
1808 /// PCCT Version (as defined in ACPI 5.0 spec.)
1809 ///
1810 #define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
1811
1812 ///
1813 /// PCCT Global Flags
1814 ///
1815 #define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL BIT0
1816
1817 //
1818 // PCCT Subspace type
1819 //
1820 #define EFI_ACPI_5_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00
1821
1822 ///
1823 /// PCC Subspace Structure Header
1824 ///
1825 typedef struct {
1826 UINT8 Type;
1827 UINT8 Length;
1828 } EFI_ACPI_5_0_PCCT_SUBSPACE_HEADER;
1829
1830 ///
1831 /// Generic Communications Subspace Structure
1832 ///
1833 typedef struct {
1834 UINT8 Type;
1835 UINT8 Length;
1836 UINT8 Reserved[6];
1837 UINT64 BaseAddress;
1838 UINT64 AddressLength;
1839 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
1840 UINT64 DoorbellPreserve;
1841 UINT64 DoorbellWrite;
1842 UINT32 NominalLatency;
1843 UINT32 MaximumPeriodicAccessRate;
1844 UINT16 MinimumRequestTurnaroundTime;
1845 } EFI_ACPI_5_0_PCCT_SUBSPACE_GENERIC;
1846
1847 ///
1848 /// Generic Communications Channel Shared Memory Region
1849 ///
1850
1851 typedef struct {
1852 UINT8 Command;
1853 UINT8 Reserved:7;
1854 UINT8 GenerateSci:1;
1855 } EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
1856
1857 typedef struct {
1858 UINT8 CommandComplete:1;
1859 UINT8 SciDoorbell:1;
1860 UINT8 Error:1;
1861 UINT8 PlatformNotification:1;
1862 UINT8 Reserved:4;
1863 UINT8 Reserved1;
1864 } EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
1865
1866 typedef struct {
1867 UINT32 Signature;
1868 EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;
1869 EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;
1870 } EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
1871
1872 //
1873 // Known table signatures
1874 //
1875
1876 ///
1877 /// "RSD PTR " Root System Description Pointer
1878 ///
1879 #define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
1880
1881 ///
1882 /// "APIC" Multiple APIC Description Table
1883 ///
1884 #define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
1885
1886 ///
1887 /// "BERT" Boot Error Record Table
1888 ///
1889 #define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
1890
1891 ///
1892 /// "BGRT" Boot Graphics Resource Table
1893 ///
1894 #define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
1895
1896 ///
1897 /// "CPEP" Corrected Platform Error Polling Table
1898 ///
1899 #define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
1900
1901 ///
1902 /// "DSDT" Differentiated System Description Table
1903 ///
1904 #define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
1905
1906 ///
1907 /// "ECDT" Embedded Controller Boot Resources Table
1908 ///
1909 #define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
1910
1911 ///
1912 /// "EINJ" Error Injection Table
1913 ///
1914 #define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
1915
1916 ///
1917 /// "ERST" Error Record Serialization Table
1918 ///
1919 #define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
1920
1921 ///
1922 /// "FACP" Fixed ACPI Description Table
1923 ///
1924 #define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
1925
1926 ///
1927 /// "FACS" Firmware ACPI Control Structure
1928 ///
1929 #define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
1930
1931 ///
1932 /// "FPDT" Firmware Performance Data Table
1933 ///
1934 #define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
1935
1936 ///
1937 /// "GTDT" Generic Timer Description Table
1938 ///
1939 #define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
1940
1941 ///
1942 /// "HEST" Hardware Error Source Table
1943 ///
1944 #define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
1945
1946 ///
1947 /// "MPST" Memory Power State Table
1948 ///
1949 #define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
1950
1951 ///
1952 /// "MSCT" Maximum System Characteristics Table
1953 ///
1954 #define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
1955
1956 ///
1957 /// "PMTT" Platform Memory Topology Table
1958 ///
1959 #define EFI_ACPI_5_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
1960
1961 ///
1962 /// "PSDT" Persistent System Description Table
1963 ///
1964 #define EFI_ACPI_5_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
1965
1966 ///
1967 /// "RASF" ACPI RAS Feature Table
1968 ///
1969 #define EFI_ACPI_5_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
1970
1971 ///
1972 /// "RSDT" Root System Description Table
1973 ///
1974 #define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
1975
1976 ///
1977 /// "SBST" Smart Battery Specification Table
1978 ///
1979 #define EFI_ACPI_5_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
1980
1981 ///
1982 /// "SLIT" System Locality Information Table
1983 ///
1984 #define EFI_ACPI_5_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
1985
1986 ///
1987 /// "SRAT" System Resource Affinity Table
1988 ///
1989 #define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
1990
1991 ///
1992 /// "SSDT" Secondary System Description Table
1993 ///
1994 #define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
1995
1996 ///
1997 /// "XSDT" Extended System Description Table
1998 ///
1999 #define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
2000
2001 ///
2002 /// "BOOT" MS Simple Boot Spec
2003 ///
2004 #define EFI_ACPI_5_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
2005
2006 ///
2007 /// "CSRT" MS Core System Resource Table
2008 ///
2009 #define EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
2010
2011 ///
2012 /// "DBG2" MS Debug Port 2 Spec
2013 ///
2014 #define EFI_ACPI_5_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
2015
2016 ///
2017 /// "DBGP" MS Debug Port Spec
2018 ///
2019 #define EFI_ACPI_5_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
2020
2021 ///
2022 /// "DMAR" DMA Remapping Table
2023 ///
2024 #define EFI_ACPI_5_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
2025
2026 ///
2027 /// "DRTM" Dynamic Root of Trust for Measurement Table
2028 ///
2029 #define EFI_ACPI_5_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
2030
2031 ///
2032 /// "ETDT" Event Timer Description Table
2033 ///
2034 #define EFI_ACPI_5_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
2035
2036 ///
2037 /// "HPET" IA-PC High Precision Event Timer Table
2038 ///
2039 #define EFI_ACPI_5_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
2040
2041 ///
2042 /// "iBFT" iSCSI Boot Firmware Table
2043 ///
2044 #define EFI_ACPI_5_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
2045
2046 ///
2047 /// "IVRS" I/O Virtualization Reporting Structure
2048 ///
2049 #define EFI_ACPI_5_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
2050
2051 ///
2052 /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
2053 ///
2054 #define EFI_ACPI_5_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
2055
2056 ///
2057 /// "MCHI" Management Controller Host Interface Table
2058 ///
2059 #define EFI_ACPI_5_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
2060
2061 ///
2062 /// "MSDM" MS Data Management Table
2063 ///
2064 #define EFI_ACPI_5_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
2065
2066 ///
2067 /// "SLIC" MS Software Licensing Table Specification
2068 ///
2069 #define EFI_ACPI_5_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
2070
2071 ///
2072 /// "SPCR" Serial Port Concole Redirection Table
2073 ///
2074 #define EFI_ACPI_5_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
2075
2076 ///
2077 /// "SPMI" Server Platform Management Interface Table
2078 ///
2079 #define EFI_ACPI_5_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
2080
2081 ///
2082 /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
2083 ///
2084 #define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
2085
2086 ///
2087 /// "TPM2" Trusted Computing Platform 1 Table
2088 ///
2089 #define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
2090
2091 ///
2092 /// "UEFI" UEFI ACPI Data Table
2093 ///
2094 #define EFI_ACPI_5_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
2095
2096 ///
2097 /// "WAET" Windows ACPI Emulated Devices Table
2098 ///
2099 #define EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
2100 #define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE
2101
2102 ///
2103 /// "WDAT" Watchdog Action Table
2104 ///
2105 #define EFI_ACPI_5_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
2106
2107 ///
2108 /// "WDRT" Watchdog Resource Table
2109 ///
2110 #define EFI_ACPI_5_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
2111
2112 ///
2113 /// "WPBT" MS Platform Binary Table
2114 ///
2115 #define EFI_ACPI_5_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
2116
2117 #pragma pack()
2118
2119 #endif