TianoCore EDK2 master
Loading...
Searching...
No Matches
Acpi65.h
Go to the documentation of this file.
1
11#ifndef ACPI_6_5_H_
12#define ACPI_6_5_H_
13
15
16//
17// Ensure proper structure formats
18//
19#pragma pack(1)
20
24#define EFI_ACPI_6_5_AML_PSD_REVISION 0
25
29#define EFI_ACPI_6_5_AML_CPC_REVISION 3
30
34typedef struct {
35 UINT8 AddressSpaceId;
36 UINT8 RegisterBitWidth;
37 UINT8 RegisterBitOffset;
38 UINT8 AccessSize;
39 UINT64 Address;
41
42//
43// Generic Address Space Address IDs
44//
45#define EFI_ACPI_6_5_SYSTEM_MEMORY 0x00
46#define EFI_ACPI_6_5_SYSTEM_IO 0x01
47#define EFI_ACPI_6_5_PCI_CONFIGURATION_SPACE 0x02
48#define EFI_ACPI_6_5_EMBEDDED_CONTROLLER 0x03
49#define EFI_ACPI_6_5_SMBUS 0x04
50#define EFI_ACPI_6_5_SYSTEM_CMOS 0x05
51#define EFI_ACPI_6_5_PCI_BAR_TARGET 0x06
52#define EFI_ACPI_6_5_IPMI 0x07
53#define EFI_ACPI_6_5_GENERAL_PURPOSE_IO 0x08
54#define EFI_ACPI_6_5_GENERIC_SERIAL_BUS 0x09
55#define EFI_ACPI_6_5_PLATFORM_COMMUNICATION_CHANNEL 0x0A
56#define EFI_ACPI_6_5_PLATFORM_RUNTIME_MECHANISM 0x0B
57#define EFI_ACPI_6_5_FUNCTIONAL_FIXED_HARDWARE 0x7F
58
59//
60// Generic Address Space Access Sizes
61//
62#define EFI_ACPI_6_5_UNDEFINED 0
63#define EFI_ACPI_6_5_BYTE 1
64#define EFI_ACPI_6_5_WORD 2
65#define EFI_ACPI_6_5_DWORD 3
66#define EFI_ACPI_6_5_QWORD 4
67
68//
69// ACPI 6.5 table structures
70//
71
75typedef struct {
76 UINT64 Signature;
77 UINT8 Checksum;
78 UINT8 OemId[6];
79 UINT8 Revision;
80 UINT32 RsdtAddress;
81 UINT32 Length;
82 UINT64 XsdtAddress;
83 UINT8 ExtendedChecksum;
84 UINT8 Reserved[3];
86
90#define EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
91
96typedef struct {
97 UINT32 Signature;
98 UINT32 Length;
100
101//
102// Root System Description Table
103// No definition needed as it is a common description table header, the same with
104// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
105//
106
110#define EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
111
112//
113// Extended System Description Table
114// No definition needed as it is a common description table header, the same with
115// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
116//
117
121#define EFI_ACPI_6_5_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
122
126typedef struct {
128 UINT32 FirmwareCtrl;
129 UINT32 Dsdt;
130 UINT8 Reserved0;
131 UINT8 PreferredPmProfile;
132 UINT16 SciInt;
133 UINT32 SmiCmd;
134 UINT8 AcpiEnable;
135 UINT8 AcpiDisable;
136 UINT8 S4BiosReq;
137 UINT8 PstateCnt;
138 UINT32 Pm1aEvtBlk;
139 UINT32 Pm1bEvtBlk;
140 UINT32 Pm1aCntBlk;
141 UINT32 Pm1bCntBlk;
142 UINT32 Pm2CntBlk;
143 UINT32 PmTmrBlk;
144 UINT32 Gpe0Blk;
145 UINT32 Gpe1Blk;
146 UINT8 Pm1EvtLen;
147 UINT8 Pm1CntLen;
148 UINT8 Pm2CntLen;
149 UINT8 PmTmrLen;
150 UINT8 Gpe0BlkLen;
151 UINT8 Gpe1BlkLen;
152 UINT8 Gpe1Base;
153 UINT8 CstCnt;
154 UINT16 PLvl2Lat;
155 UINT16 PLvl3Lat;
156 UINT16 FlushSize;
157 UINT16 FlushStride;
158 UINT8 DutyOffset;
159 UINT8 DutyWidth;
160 UINT8 DayAlrm;
161 UINT8 MonAlrm;
162 UINT8 Century;
163 UINT16 IaPcBootArch;
164 UINT8 Reserved1;
165 UINT32 Flags;
167 UINT8 ResetValue;
168 UINT16 ArmBootArch;
169 UINT8 MinorVersion;
170 UINT64 XFirmwareCtrl;
171 UINT64 XDsdt;
182 UINT64 HypervisorVendorIdentity;
184
188#define EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06
189#define EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x05
190
191//
192// Fixed ACPI Description Table Preferred Power Management Profile
193//
194#define EFI_ACPI_6_5_PM_PROFILE_UNSPECIFIED 0
195#define EFI_ACPI_6_5_PM_PROFILE_DESKTOP 1
196#define EFI_ACPI_6_5_PM_PROFILE_MOBILE 2
197#define EFI_ACPI_6_5_PM_PROFILE_WORKSTATION 3
198#define EFI_ACPI_6_5_PM_PROFILE_ENTERPRISE_SERVER 4
199#define EFI_ACPI_6_5_PM_PROFILE_SOHO_SERVER 5
200#define EFI_ACPI_6_5_PM_PROFILE_APPLIANCE_PC 6
201#define EFI_ACPI_6_5_PM_PROFILE_PERFORMANCE_SERVER 7
202#define EFI_ACPI_6_5_PM_PROFILE_TABLET 8
203
204//
205// Fixed ACPI Description Table Boot Architecture Flags
206// All other bits are reserved and must be set to 0.
207//
208#define EFI_ACPI_6_5_LEGACY_DEVICES BIT0
209#define EFI_ACPI_6_5_8042 BIT1
210#define EFI_ACPI_6_5_VGA_NOT_PRESENT BIT2
211#define EFI_ACPI_6_5_MSI_NOT_SUPPORTED BIT3
212#define EFI_ACPI_6_5_PCIE_ASPM_CONTROLS BIT4
213#define EFI_ACPI_6_5_CMOS_RTC_NOT_PRESENT BIT5
214
215//
216// Fixed ACPI Description Table Arm Boot Architecture Flags
217// All other bits are reserved and must be set to 0.
218//
219#define EFI_ACPI_6_5_ARM_PSCI_COMPLIANT BIT0
220#define EFI_ACPI_6_5_ARM_PSCI_USE_HVC BIT1
221
222//
223// Fixed ACPI Description Table Fixed Feature Flags
224// All other bits are reserved and must be set to 0.
225//
226#define EFI_ACPI_6_5_WBINVD BIT0
227#define EFI_ACPI_6_5_WBINVD_FLUSH BIT1
228#define EFI_ACPI_6_5_PROC_C1 BIT2
229#define EFI_ACPI_6_5_P_LVL2_UP BIT3
230#define EFI_ACPI_6_5_PWR_BUTTON BIT4
231#define EFI_ACPI_6_5_SLP_BUTTON BIT5
232#define EFI_ACPI_6_5_FIX_RTC BIT6
233#define EFI_ACPI_6_5_RTC_S4 BIT7
234#define EFI_ACPI_6_5_TMR_VAL_EXT BIT8
235#define EFI_ACPI_6_5_DCK_CAP BIT9
236#define EFI_ACPI_6_5_RESET_REG_SUP BIT10
237#define EFI_ACPI_6_5_SEALED_CASE BIT11
238#define EFI_ACPI_6_5_HEADLESS BIT12
239#define EFI_ACPI_6_5_CPU_SW_SLP BIT13
240#define EFI_ACPI_6_5_PCI_EXP_WAK BIT14
241#define EFI_ACPI_6_5_USE_PLATFORM_CLOCK BIT15
242#define EFI_ACPI_6_5_S4_RTC_STS_VALID BIT16
243#define EFI_ACPI_6_5_REMOTE_POWER_ON_CAPABLE BIT17
244#define EFI_ACPI_6_5_FORCE_APIC_CLUSTER_MODEL BIT18
245#define EFI_ACPI_6_5_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
246#define EFI_ACPI_6_5_HW_REDUCED_ACPI BIT20
247#define EFI_ACPI_6_5_LOW_POWER_S0_IDLE_CAPABLE BIT21
248
252typedef struct {
253 UINT32 Signature;
254 UINT32 Length;
255 UINT32 HardwareSignature;
256 UINT32 FirmwareWakingVector;
257 UINT32 GlobalLock;
258 UINT32 Flags;
259 UINT64 XFirmwareWakingVector;
260 UINT8 Version;
261 UINT8 Reserved0[3];
262 UINT32 OspmFlags;
263 UINT8 Reserved1[24];
265
269#define EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
270
275#define EFI_ACPI_6_5_S4BIOS_F BIT0
276#define EFI_ACPI_6_5_64BIT_WAKE_SUPPORTED_F BIT1
277
282#define EFI_ACPI_6_5_OSPM_64BIT_WAKE_F BIT0
283
284//
285// Differentiated System Description Table,
286// Secondary System Description Table
287// and Persistent System Description Table,
288// no definition needed as they are common description table header, the same with
289// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
290//
291#define EFI_ACPI_6_5_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
292#define EFI_ACPI_6_5_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
293
298typedef struct {
300 UINT32 LocalApicAddress;
301 UINT32 Flags;
303
307#define EFI_ACPI_6_5_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x06
308
313#define EFI_ACPI_6_5_PCAT_COMPAT BIT0
314
315//
316// Multiple APIC Description Table APIC structure types
317// All other values between 0x18 and 0x7F are reserved and
318// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
319//
320#define EFI_ACPI_6_5_PROCESSOR_LOCAL_APIC 0x00
321#define EFI_ACPI_6_5_IO_APIC 0x01
322#define EFI_ACPI_6_5_INTERRUPT_SOURCE_OVERRIDE 0x02
323#define EFI_ACPI_6_5_NON_MASKABLE_INTERRUPT_SOURCE 0x03
324#define EFI_ACPI_6_5_LOCAL_APIC_NMI 0x04
325#define EFI_ACPI_6_5_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
326#define EFI_ACPI_6_5_IO_SAPIC 0x06
327#define EFI_ACPI_6_5_LOCAL_SAPIC 0x07
328#define EFI_ACPI_6_5_PLATFORM_INTERRUPT_SOURCES 0x08
329#define EFI_ACPI_6_5_PROCESSOR_LOCAL_X2APIC 0x09
330#define EFI_ACPI_6_5_LOCAL_X2APIC_NMI 0x0A
331#define EFI_ACPI_6_5_GIC 0x0B
332#define EFI_ACPI_6_5_GICD 0x0C
333#define EFI_ACPI_6_5_GIC_MSI_FRAME 0x0D
334#define EFI_ACPI_6_5_GICR 0x0E
335#define EFI_ACPI_6_5_GIC_ITS 0x0F
336#define EFI_ACPI_6_5_MULTIPROCESSOR_WAKEUP 0x10
337#define EFI_ACPI_6_5_CORE_PIC 0x11
338#define EFI_ACPI_6_5_LIO_PIC 0x12
339#define EFI_ACPI_6_5_HT_PIC 0x13
340#define EFI_ACPI_6_5_EIO_PIC 0x14
341#define EFI_ACPI_6_5_MSI_PIC 0x15
342#define EFI_ACPI_6_5_BIO_PIC 0x16
343#define EFI_ACPI_6_5_LPC_PIC 0x17
344
345//
346// APIC Structure Definitions
347//
348
352typedef struct {
353 UINT8 Type;
354 UINT8 Length;
355 UINT8 AcpiProcessorUid;
356 UINT8 ApicId;
357 UINT32 Flags;
359
363#define EFI_ACPI_6_5_LOCAL_APIC_ENABLED BIT0
364#define EFI_ACPI_6_5_LOCAL_APIC_ONLINE_CAPABLE BIT1
365
369typedef struct {
370 UINT8 Type;
371 UINT8 Length;
372 UINT8 IoApicId;
373 UINT8 Reserved;
374 UINT32 IoApicAddress;
375 UINT32 GlobalSystemInterruptBase;
377
381typedef struct {
382 UINT8 Type;
383 UINT8 Length;
384 UINT8 Bus;
385 UINT8 Source;
386 UINT32 GlobalSystemInterrupt;
387 UINT16 Flags;
389
393typedef struct {
394 UINT8 Type;
395 UINT8 Length;
396 UINT16 Flags;
397 UINT8 InterruptType;
398 UINT8 ProcessorId;
399 UINT8 ProcessorEid;
400 UINT8 IoSapicVector;
401 UINT32 GlobalSystemInterrupt;
402 UINT32 PlatformInterruptSourceFlags;
403 UINT8 CpeiProcessorOverride;
404 UINT8 Reserved[31];
406
407//
408// MPS INTI flags.
409// All other bits are reserved and must be set to 0.
410//
411#define EFI_ACPI_6_5_POLARITY (3 << 0)
412#define EFI_ACPI_6_5_TRIGGER_MODE (3 << 2)
413
417typedef struct {
418 UINT8 Type;
419 UINT8 Length;
420 UINT16 Flags;
421 UINT32 GlobalSystemInterrupt;
423
427typedef struct {
428 UINT8 Type;
429 UINT8 Length;
430 UINT8 AcpiProcessorUid;
431 UINT16 Flags;
432 UINT8 LocalApicLint;
434
438typedef struct {
439 UINT8 Type;
440 UINT8 Length;
441 UINT16 Reserved;
442 UINT64 LocalApicAddress;
444
448typedef struct {
449 UINT8 Type;
450 UINT8 Length;
451 UINT8 IoApicId;
452 UINT8 Reserved;
453 UINT32 GlobalSystemInterruptBase;
454 UINT64 IoSapicAddress;
456
461typedef struct {
462 UINT8 Type;
463 UINT8 Length;
464 UINT8 AcpiProcessorId;
465 UINT8 LocalSapicId;
466 UINT8 LocalSapicEid;
467 UINT8 Reserved[3];
468 UINT32 Flags;
469 UINT32 ACPIProcessorUIDValue;
471
475typedef struct {
476 UINT8 Type;
477 UINT8 Length;
478 UINT16 Flags;
479 UINT8 InterruptType;
480 UINT8 ProcessorId;
481 UINT8 ProcessorEid;
482 UINT8 IoSapicVector;
483 UINT32 GlobalSystemInterrupt;
484 UINT32 PlatformInterruptSourceFlags;
486
491#define EFI_ACPI_6_5_CPEI_PROCESSOR_OVERRIDE BIT0
492
496typedef struct {
497 UINT8 Type;
498 UINT8 Length;
499 UINT8 Reserved[2];
500 UINT32 X2ApicId;
501 UINT32 Flags;
502 UINT32 AcpiProcessorUid;
504
508typedef struct {
509 UINT8 Type;
510 UINT8 Length;
511 UINT16 Flags;
512 UINT32 AcpiProcessorUid;
513 UINT8 LocalX2ApicLint;
514 UINT8 Reserved[3];
516
520typedef struct {
521 UINT8 Type;
522 UINT8 Length;
523 UINT16 Reserved;
524 UINT32 CPUInterfaceNumber;
525 UINT32 AcpiProcessorUid;
526 UINT32 Flags;
527 UINT32 ParkingProtocolVersion;
528 UINT32 PerformanceInterruptGsiv;
529 UINT64 ParkedAddress;
530 UINT64 PhysicalBaseAddress;
531 UINT64 GICV;
532 UINT64 GICH;
533 UINT32 VGICMaintenanceInterrupt;
534 UINT64 GICRBaseAddress;
535 UINT64 MPIDR;
536 UINT8 ProcessorPowerEfficiencyClass;
537 UINT8 Reserved2;
538 UINT16 SpeOverflowInterrupt;
539 UINT16 TrbeInterrupt;
541
545#define EFI_ACPI_6_5_GIC_ENABLED BIT0
546#define EFI_ACPI_6_5_PERFORMANCE_INTERRUPT_MODEL BIT1
547#define EFI_ACPI_6_5_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2
548#define EFI_ACPI_6_5_GIC_ONLINE_CAPABLE BIT3
549
553typedef struct {
554 UINT8 Type;
555 UINT8 Length;
556 UINT16 Reserved1;
557 UINT32 GicId;
558 UINT64 PhysicalBaseAddress;
559 UINT32 SystemVectorBase;
560 UINT8 GicVersion;
561 UINT8 Reserved2[3];
563
567#define EFI_ACPI_6_5_GIC_V1 0x01
568#define EFI_ACPI_6_5_GIC_V2 0x02
569#define EFI_ACPI_6_5_GIC_V3 0x03
570#define EFI_ACPI_6_5_GIC_V4 0x04
571
575typedef struct {
576 UINT8 Type;
577 UINT8 Length;
578 UINT16 Reserved1;
579 UINT32 GicMsiFrameId;
580 UINT64 PhysicalBaseAddress;
581 UINT32 Flags;
582 UINT16 SPICount;
583 UINT16 SPIBase;
585
589#define EFI_ACPI_6_5_SPI_COUNT_BASE_SELECT BIT0
590
594typedef struct {
595 UINT8 Type;
596 UINT8 Length;
597 UINT16 Reserved;
598 UINT64 DiscoveryRangeBaseAddress;
599 UINT32 DiscoveryRangeLength;
601
605typedef struct {
606 UINT8 Type;
607 UINT8 Length;
608 UINT16 Reserved;
609 UINT32 GicItsId;
610 UINT64 PhysicalBaseAddress;
611 UINT32 Reserved2;
613
617typedef struct {
618 UINT8 Type;
619 UINT8 Length;
620 UINT16 MailBoxVersion;
621 UINT32 Reserved;
622 UINT64 MailBoxAddress;
624
628typedef struct {
629 UINT16 Command;
630 UINT16 Reserved;
631 UINT32 AcpiId;
632 UINT64 WakeupVector;
633 UINT8 ReservedForOs[2032];
634 UINT8 ReservedForFirmware[2048];
636
637#define EFI_ACPI_6_5_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_NOOP 0x0000
638#define EFI_ACPI_6_5_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_WAKEUP 0x0001
639
643typedef struct {
644 UINT8 Type;
645 UINT8 Length;
646 UINT8 Version;
647 UINT32 ProcessorId;
648 UINT32 CoreId;
649 UINT32 Flags;
651
655typedef struct {
656 UINT8 Type;
657 UINT8 Length;
658 UINT8 Version;
659 UINT64 Address;
660 UINT16 Size;
661 UINT8 Cascade[2];
662 UINT32 CascadeMap[2];
664
668typedef struct {
669 UINT8 Type;
670 UINT8 Length;
671 UINT8 Version;
672 UINT64 Address;
673 UINT16 Size;
674 UINT8 Cascade[8];
676
680typedef struct {
681 UINT8 Type;
682 UINT8 Length;
683 UINT8 Version;
684 UINT8 Cascade;
685 UINT8 Node;
686 UINT64 NodeMap;
688
692typedef struct {
693 UINT8 Type;
694 UINT8 Length;
695 UINT8 Version;
696 UINT64 MsgAddress;
697 UINT32 Start;
698 UINT32 Count;
700
704typedef struct {
705 UINT8 Type;
706 UINT8 Length;
707 UINT8 Version;
708 UINT64 Address;
709 UINT16 Size;
710 UINT16 Id;
711 UINT16 GsiBase;
713
717typedef struct {
718 UINT8 Type;
719 UINT8 Length;
720 UINT8 Version;
721 UINT64 Address;
722 UINT16 Size;
723 UINT8 Cascade;
725
729typedef struct {
731 UINT32 WarningEnergyLevel;
732 UINT32 LowEnergyLevel;
733 UINT32 CriticalEnergyLevel;
735
739#define EFI_ACPI_6_5_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
740
746typedef struct {
750 UINT32 Uid;
751 UINT8 GpeBit;
753
757#define EFI_ACPI_6_5_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
758
763typedef struct {
765 UINT32 Reserved1;
766 UINT64 Reserved2;
768
772#define EFI_ACPI_6_5_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
773
774//
775// SRAT structure types.
776// All other values between 0x06 an 0xFF are reserved and
777// will be ignored by OSPM.
778//
779#define EFI_ACPI_6_5_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
780#define EFI_ACPI_6_5_MEMORY_AFFINITY 0x01
781#define EFI_ACPI_6_5_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
782#define EFI_ACPI_6_5_GICC_AFFINITY 0x03
783#define EFI_ACPI_6_5_GIC_ITS_AFFINITY 0x04
784#define EFI_ACPI_6_5_GENERIC_INITIATOR_AFFINITY 0x05
785
789typedef struct {
790 UINT8 Type;
791 UINT8 Length;
792 UINT8 ProximityDomain7To0;
793 UINT8 ApicId;
794 UINT32 Flags;
795 UINT8 LocalSapicEid;
796 UINT8 ProximityDomain31To8[3];
797 UINT32 ClockDomain;
799
803#define EFI_ACPI_6_5_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
804
808typedef struct {
809 UINT8 Type;
810 UINT8 Length;
811 UINT32 ProximityDomain;
812 UINT16 Reserved1;
813 UINT32 AddressBaseLow;
814 UINT32 AddressBaseHigh;
815 UINT32 LengthLow;
816 UINT32 LengthHigh;
817 UINT32 Reserved2;
818 UINT32 Flags;
819 UINT64 Reserved3;
821
822//
823// Memory Flags. All other bits are reserved and must be 0.
824//
825#define EFI_ACPI_6_5_MEMORY_ENABLED (1 << 0)
826#define EFI_ACPI_6_5_MEMORY_HOT_PLUGGABLE (1 << 1)
827#define EFI_ACPI_6_5_MEMORY_NONVOLATILE (1 << 2)
828
832typedef struct {
833 UINT8 Type;
834 UINT8 Length;
835 UINT8 Reserved1[2];
836 UINT32 ProximityDomain;
837 UINT32 X2ApicId;
838 UINT32 Flags;
839 UINT32 ClockDomain;
840 UINT8 Reserved2[4];
842
846typedef struct {
847 UINT8 Type;
848 UINT8 Length;
849 UINT32 ProximityDomain;
850 UINT32 AcpiProcessorUid;
851 UINT32 Flags;
852 UINT32 ClockDomain;
854
858#define EFI_ACPI_6_5_GICC_ENABLED (1 << 0)
859
863typedef struct {
864 UINT8 Type;
865 UINT8 Length;
866 UINT32 ProximityDomain;
867 UINT8 Reserved[2];
868 UINT32 ItsId;
870
871//
872// Generic Initiator Affinity Structure Device Handle Types
873// All other values between 0x02 an 0xFF are reserved and
874// will be ignored by OSPM.
875//
876#define EFI_ACPI_6_5_ACPI_DEVICE_HANDLE 0x00
877#define EFI_ACPI_6_5_PCI_DEVICE_HANDLE 0x01
878
882typedef struct {
883 UINT64 AcpiHid;
884 UINT32 AcpiUid;
885 UINT8 Reserved[4];
887
891typedef struct {
892 UINT16 PciSegment;
893 UINT16 PciBdfNumber;
894 UINT8 Reserved[12];
896
900typedef union {
904
908typedef struct {
909 UINT8 Type;
910 UINT8 Length;
911 UINT8 Reserved1;
912 UINT8 DeviceHandleType;
913 UINT32 ProximityDomain;
914 EFI_ACPI_6_5_DEVICE_HANDLE DeviceHandle;
915 UINT32 Flags;
916 UINT8 Reserved2[4];
918
923#define EFI_ACPI_6_5_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ENABLED BIT0
924#define EFI_ACPI_6_5_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ARCHITECTURAL_TRANSACTIONS BIT1
925
930typedef struct {
932 UINT64 NumberOfSystemLocalities;
934
938#define EFI_ACPI_6_5_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
939
943typedef struct {
945 UINT8 Reserved[8];
947
951#define EFI_ACPI_6_5_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
952
953//
954// CPEP processor structure types.
955//
956#define EFI_ACPI_6_5_CPEP_PROCESSOR_APIC_SAPIC 0x00
957
961typedef struct {
962 UINT8 Type;
963 UINT8 Length;
964 UINT8 ProcessorId;
965 UINT8 ProcessorEid;
966 UINT32 PollingInterval;
968
972typedef struct {
974 UINT32 OffsetProxDomInfo;
975 UINT32 MaximumNumberOfProximityDomains;
976 UINT32 MaximumNumberOfClockDomains;
977 UINT64 MaximumPhysicalAddress;
979
983#define EFI_ACPI_6_5_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
984
988typedef struct {
989 UINT8 Revision;
990 UINT8 Length;
991 UINT32 ProximityDomainRangeLow;
992 UINT32 ProximityDomainRangeHigh;
993 UINT32 MaximumProcessorCapacity;
994 UINT64 MaximumMemoryCapacity;
996
1000typedef struct {
1002 UINT8 PlatformCommunicationChannelIdentifier[12];
1004
1008#define EFI_ACPI_6_5_RAS_FEATURE_TABLE_REVISION 0x01
1009
1013typedef struct {
1014 UINT32 Signature;
1015 UINT16 Command;
1016 UINT16 Status;
1017 UINT16 Version;
1018 UINT8 RASCapabilities[16];
1019 UINT8 SetRASCapabilities[16];
1020 UINT16 NumberOfRASFParameterBlocks;
1021 UINT32 SetRASCapabilitiesStatus;
1023
1027#define EFI_ACPI_6_5_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
1028
1032#define EFI_ACPI_6_5_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED BIT0
1033#define EFI_ACPI_6_5_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED_AND_EXPOSED_TO_SOFTWARE BIT1
1034#define EFI_ACPI_6_5_RASF_PLATFORM_RAS_CAPABILITY_CPU_CACHE_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT2
1035#define EFI_ACPI_6_5_RASF_PLATFORM_RAS_CAPABILITY_MEMORY_CONTROLLER_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT3
1036#define EFI_ACPI_6_5_RASF_PLATFORM_RAS_CAPABILITY_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_HARDWARE_MIRRORING BIT4
1037
1041typedef struct {
1042 UINT16 Type;
1043 UINT16 Version;
1044 UINT16 Length;
1045 UINT16 PatrolScrubCommand;
1046 UINT64 RequestedAddressRange[2];
1047 UINT64 ActualAddressRange[2];
1048 UINT16 Flags;
1049 UINT8 RequestedSpeed;
1051
1055#define EFI_ACPI_6_5_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
1056#define EFI_ACPI_6_5_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
1057#define EFI_ACPI_6_5_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
1058
1062typedef struct {
1063 UINT8 PccId;
1064 UINT8 Reserved[2];
1065 UINT8 RasFeatureType;
1066 UINT32 Instance;
1068
1072typedef struct {
1074 UINT16 Reserved;
1075 UINT16 PccCount;
1076 // EFI_ACPI_RAS2_PCC_DESCRIPTOR Descriptors[PccCount];
1078
1082typedef struct {
1084 UINT8 PlatformCommunicationChannelIdentifier;
1085 UINT8 Reserved[3];
1086 // Memory Power Node Structure
1087 // Memory Power State Characteristics
1089
1093#define EFI_ACPI_6_5_MEMORY_POWER_STATE_TABLE_REVISION 0x01
1094
1098typedef struct {
1099 UINT32 Signature;
1100 UINT16 Command;
1101 UINT16 Status;
1102 UINT32 MemoryPowerCommandRegister;
1103 UINT32 MemoryPowerStatusRegister;
1104 UINT32 PowerStateId;
1105 UINT32 MemoryPowerNodeId;
1106 UINT64 MemoryEnergyConsumed;
1107 UINT64 ExpectedAveragePowerComsuned;
1109
1113#define EFI_ACPI_6_5_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
1114
1118#define EFI_ACPI_6_5_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
1119#define EFI_ACPI_6_5_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
1120#define EFI_ACPI_6_5_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
1121#define EFI_ACPI_6_5_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
1122
1126typedef struct {
1127 UINT8 PowerStateValue;
1128 UINT8 PowerStateInformationIndex;
1130
1131typedef struct {
1132 UINT8 Flag;
1133 UINT8 Reserved;
1134 UINT16 MemoryPowerNodeId;
1135 UINT32 Length;
1136 UINT64 AddressBase;
1137 UINT64 AddressLength;
1138 UINT32 NumberOfPowerStates;
1139 UINT32 NumberOfPhysicalComponents;
1140 // EFI_ACPI_6_5_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
1141 // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
1143
1144#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
1145#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
1146#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
1147
1148typedef struct {
1149 UINT16 MemoryPowerNodeCount;
1150 UINT8 Reserved[2];
1152
1156typedef struct {
1157 UINT8 PowerStateStructureID;
1158 UINT8 Flag;
1159 UINT16 Reserved;
1160 UINT32 AveragePowerConsumedInMPS0;
1161 UINT32 RelativePowerSavingToMPS0;
1162 UINT64 ExitLatencyToMPS0;
1164
1165#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
1166#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
1167#define EFI_ACPI_6_5_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
1168
1169typedef struct {
1170 UINT16 MemoryPowerStateCharacteristicsCount;
1171 UINT8 Reserved[2];
1173
1177typedef struct {
1179 UINT32 NumberOfMemoryDevices;
1180 // EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices];
1182
1186#define EFI_ACPI_6_5_MEMORY_TOPOLOGY_TABLE_REVISION 0x02
1187
1191typedef struct {
1192 UINT8 Type;
1193 UINT8 Reserved;
1194 UINT16 Length;
1195 UINT16 Flags;
1196 UINT16 Reserved1;
1197 UINT32 NumberOfMemoryDevices;
1198 // UINT8 TypeSpecificData[];
1199 // EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices];
1201
1205#define EFI_ACPI_6_5_PMTT_MEMORY_DEVICE_TYPE_SOCKET 0x0
1206#define EFI_ACPI_6_5_PMTT_MEMORY_DEVICE_TYPE_MEMORY_CONTROLLER 0x1
1207#define EFI_ACPI_6_5_PMTT_MEMORY_DEVICE_TYPE_DIMM 0x2
1208#define EFI_ACPI_6_5_PMTT_MEMORY_DEVICE_TYPE_VENDOR_SPECIFIC_TYPE 0xFF
1209
1213typedef struct {
1214 EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1215 UINT16 SocketIdentifier;
1216 UINT16 Reserved;
1217 // EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1219
1223typedef struct {
1224 EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1225 UINT16 MemoryControllerIdentifier;
1226 UINT16 Reserved;
1227 // EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1229
1233typedef struct {
1234 EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1235 UINT32 SmbiosHandle;
1237
1241typedef struct {
1242 EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1243 UINT8 TypeUuid[16];
1244 // EFI_ACPI_6_5_PMTT_VENDOR_SPECIFIC_TYPE_DATA VendorSpecificData[];
1245 // EFI_ACPI_6_5_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1247
1251typedef struct {
1256 UINT16 Version;
1269 UINT8 Status;
1294
1298#define EFI_ACPI_6_5_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
1299
1303#define EFI_ACPI_6_5_BGRT_VERSION 0x01
1304
1308#define EFI_ACPI_6_5_BGRT_STATUS_NOT_DISPLAYED 0x00
1309#define EFI_ACPI_6_5_BGRT_STATUS_DISPLAYED 0x01
1310
1314#define EFI_ACPI_6_5_BGRT_IMAGE_TYPE_BMP 0x00
1315
1319#define EFI_ACPI_6_5_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
1320
1324#define EFI_ACPI_6_5_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
1325#define EFI_ACPI_6_5_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
1326
1330#define EFI_ACPI_6_5_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
1331#define EFI_ACPI_6_5_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
1332
1336#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
1337#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
1338#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
1339
1343#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
1344#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
1345#define EFI_ACPI_6_5_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
1346
1350typedef struct {
1351 UINT16 Type;
1352 UINT8 Length;
1353 UINT8 Revision;
1355
1359typedef struct {
1360 UINT32 Signature;
1361 UINT32 Length;
1363
1367typedef struct {
1369 UINT32 Reserved;
1375
1379typedef struct {
1381 UINT32 Reserved;
1387
1391typedef struct {
1393 UINT32 Reserved;
1398 UINT64 ResetEnd;
1423
1427#define EFI_ACPI_6_5_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
1428
1429//
1430// FPDT Firmware Basic Boot Performance Table
1431//
1432typedef struct {
1434 //
1435 // one or more Performance Records.
1436 //
1438
1442#define EFI_ACPI_6_5_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
1443
1444//
1445// FPDT Firmware S3 Boot Performance Table
1446//
1447typedef struct {
1449 //
1450 // one or more Performance Records.
1451 //
1453
1457typedef struct {
1475
1479typedef struct {
1493
1497typedef struct {
1500
1504typedef struct {
1506 UINT64 CntControlBasePhysicalAddress;
1507 UINT32 Reserved;
1508 UINT32 SecurePL1TimerGSIV;
1509 UINT32 SecurePL1TimerFlags;
1510 UINT32 NonSecurePL1TimerGSIV;
1511 UINT32 NonSecurePL1TimerFlags;
1512 UINT32 VirtualTimerGSIV;
1513 UINT32 VirtualTimerFlags;
1514 UINT32 NonSecurePL2TimerGSIV;
1515 UINT32 NonSecurePL2TimerFlags;
1516 UINT64 CntReadBasePhysicalAddress;
1517 UINT32 PlatformTimerCount;
1518 UINT32 PlatformTimerOffset;
1519 UINT32 VirtualPL2TimerGSIV;
1520 UINT32 VirtualPL2TimerFlags;
1522
1526#define EFI_ACPI_6_5_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x03
1527
1531#define EFI_ACPI_6_5_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
1532#define EFI_ACPI_6_5_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1533#define EFI_ACPI_6_5_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2
1534
1538#define EFI_ACPI_6_5_GTDT_GT_BLOCK 0
1539#define EFI_ACPI_6_5_GTDT_ARM_GENERIC_WATCHDOG 1
1540
1544typedef struct {
1545 UINT8 Type;
1546 UINT16 Length;
1547 UINT8 Reserved;
1548 UINT64 CntCtlBase;
1549 UINT32 GTBlockTimerCount;
1550 UINT32 GTBlockTimerOffset;
1552
1556typedef struct {
1557 UINT8 GTFrameNumber;
1558 UINT8 Reserved[3];
1559 UINT64 CntBaseX;
1560 UINT64 CntEL0BaseX;
1561 UINT32 GTxPhysicalTimerGSIV;
1562 UINT32 GTxPhysicalTimerFlags;
1563 UINT32 GTxVirtualTimerGSIV;
1564 UINT32 GTxVirtualTimerFlags;
1565 UINT32 GTxCommonFlags;
1567
1571#define EFI_ACPI_6_5_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
1572#define EFI_ACPI_6_5_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1573
1577#define EFI_ACPI_6_5_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0
1578#define EFI_ACPI_6_5_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1
1579
1583typedef struct {
1584 UINT8 Type;
1585 UINT16 Length;
1586 UINT8 Reserved;
1587 UINT64 RefreshFramePhysicalAddress;
1588 UINT64 WatchdogControlFramePhysicalAddress;
1589 UINT32 WatchdogTimerGSIV;
1590 UINT32 WatchdogTimerFlags;
1592
1596#define EFI_ACPI_6_5_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0
1597#define EFI_ACPI_6_5_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1598#define EFI_ACPI_6_5_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2
1599
1600//
1601// NVDIMM Firmware Interface Table definition.
1602//
1603typedef struct {
1605 UINT32 Reserved;
1607
1608//
1609// NFIT Version (as defined in ACPI 6.5 spec.)
1610//
1611#define EFI_ACPI_6_5_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1
1612
1613//
1614// Definition for NFIT Table Structure Types
1615//
1616#define EFI_ACPI_6_5_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0
1617#define EFI_ACPI_6_5_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE_TYPE 1
1618#define EFI_ACPI_6_5_NFIT_INTERLEAVE_STRUCTURE_TYPE 2
1619#define EFI_ACPI_6_5_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3
1620#define EFI_ACPI_6_5_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4
1621#define EFI_ACPI_6_5_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5
1622#define EFI_ACPI_6_5_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6
1623#define EFI_ACPI_6_5_NFIT_PLATFORM_CAPABILITIES_STRUCTURE_TYPE 7
1624
1625//
1626// Definition for NFIT Structure Header
1627//
1628typedef struct {
1629 UINT16 Type;
1630 UINT16 Length;
1632
1633//
1634// Definition for System Physical Address Range Structure
1635//
1636#define EFI_ACPI_6_5_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0
1637#define EFI_ACPI_6_5_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1
1638#define EFI_ACPI_6_5_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_SPA_LOCATION_COOKIE_VALID BIT2
1639
1640#define EFI_ACPI_6_5_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}
1641#define EFI_ACPI_6_5_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}
1642#define EFI_ACPI_6_5_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}
1643#define EFI_ACPI_6_5_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }}
1644#define EFI_ACPI_6_5_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
1645#define EFI_ACPI_6_5_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
1646#define EFI_ACPI_6_5_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
1647#define EFI_ACPI_6_5_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
1648
1649typedef struct {
1650 UINT16 Type;
1651 UINT16 Length;
1652 UINT16 SPARangeStructureIndex;
1653 UINT16 Flags;
1654 UINT32 Reserved_8;
1655 UINT32 ProximityDomain;
1656 GUID AddressRangeTypeGUID;
1657 UINT64 SystemPhysicalAddressRangeBase;
1658 UINT64 SystemPhysicalAddressRangeLength;
1659 UINT64 AddressRangeMemoryMappingAttribute;
1660 UINT64 SPALocationCookie;
1662
1663//
1664// Definition for Memory Device to System Physical Address Range Mapping Structure
1665//
1666typedef struct {
1667 UINT32 DIMMNumber : 4;
1668 UINT32 MemoryChannelNumber : 4;
1669 UINT32 MemoryControllerID : 4;
1670 UINT32 SocketID : 4;
1671 UINT32 NodeControllerID : 12;
1672 UINT32 Reserved_28 : 4;
1674
1675#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0
1676#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1
1677#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2
1678#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3
1679#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4
1680#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5
1681#define EFI_ACPI_6_5_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_NOT_MAP_NVDIMM_TO_SPA BIT6
1682
1683typedef struct {
1684 UINT16 Type;
1685 UINT16 Length;
1686 EFI_ACPI_6_5_NFIT_DEVICE_HANDLE NFITDeviceHandle;
1687 UINT16 NVDIMMPhysicalID;
1688 UINT16 NVDIMMRegionID;
1689 UINT16 SPARangeStructureIndex;
1690 UINT16 NVDIMMControlRegionStructureIndex;
1691 UINT64 NVDIMMRegionSize;
1692 UINT64 RegionOffset;
1693 UINT64 NVDIMMPhysicalAddressRegionBase;
1694 UINT16 InterleaveStructureIndex;
1695 UINT16 InterleaveWays;
1696 UINT16 NVDIMMStateFlags;
1697 UINT16 Reserved_46;
1699
1700//
1701// Definition for Interleave Structure
1702//
1703typedef struct {
1704 UINT16 Type;
1705 UINT16 Length;
1706 UINT16 InterleaveStructureIndex;
1707 UINT16 Reserved_6;
1708 UINT32 NumberOfLines;
1709 UINT32 LineSize;
1710 // UINT32 LineOffset[NumberOfLines];
1712
1713//
1714// Definition for SMBIOS Management Information Structure
1715//
1716typedef struct {
1717 UINT16 Type;
1718 UINT16 Length;
1719 UINT32 Reserved_4;
1720 // UINT8 Data[];
1722
1723//
1724// Definition for NVDIMM Control Region Structure
1725//
1726#define EFI_ACPI_6_5_NFIT_NVDIMM_CONTROL_REGION_VALID_FIELDS_MANUFACTURING BIT0
1727
1728#define EFI_ACPI_6_5_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0
1729
1730typedef struct {
1731 UINT16 Type;
1732 UINT16 Length;
1733 UINT16 NVDIMMControlRegionStructureIndex;
1734 UINT16 VendorID;
1735 UINT16 DeviceID;
1736 UINT16 RevisionID;
1737 UINT16 SubsystemVendorID;
1738 UINT16 SubsystemDeviceID;
1739 UINT16 SubsystemRevisionID;
1740 UINT8 ValidFields;
1741 UINT8 ManufacturingLocation;
1742 UINT16 ManufacturingDate;
1743 UINT8 Reserved_22[2];
1744 UINT32 SerialNumber;
1745 UINT16 RegionFormatInterfaceCode;
1746 UINT16 NumberOfBlockControlWindows;
1747 UINT64 SizeOfBlockControlWindow;
1748 UINT64 CommandRegisterOffsetInBlockControlWindow;
1749 UINT64 SizeOfCommandRegisterInBlockControlWindows;
1750 UINT64 StatusRegisterOffsetInBlockControlWindow;
1751 UINT64 SizeOfStatusRegisterInBlockControlWindows;
1752 UINT16 NVDIMMControlRegionFlag;
1753 UINT8 Reserved_74[6];
1755
1756//
1757// Definition for NVDIMM Block Data Window Region Structure
1758//
1759typedef struct {
1760 UINT16 Type;
1761 UINT16 Length;
1762 UINT16 NVDIMMControlRegionStructureIndex;
1763 UINT16 NumberOfBlockDataWindows;
1764 UINT64 BlockDataWindowStartOffset;
1765 UINT64 SizeOfBlockDataWindow;
1766 UINT64 BlockAccessibleMemoryCapacity;
1767 UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory;
1769
1770//
1771// Definition for Flush Hint Address Structure
1772//
1773typedef struct {
1774 UINT16 Type;
1775 UINT16 Length;
1776 EFI_ACPI_6_5_NFIT_DEVICE_HANDLE NFITDeviceHandle;
1777 UINT16 NumberOfFlushHintAddresses;
1778 UINT8 Reserved_10[6];
1779 // UINT64 FlushHintAddress[NumberOfFlushHintAddresses];
1781
1782//
1783// Definition for Platform Capabilities Structure
1784//
1785typedef struct {
1786 UINT16 Type;
1787 UINT16 Length;
1788 UINT8 HighestValidCapability;
1789 UINT8 Reserved_5[3];
1790 UINT32 Capabilities;
1791 UINT8 Reserved_12[4];
1793
1794#define EFI_ACPI_6_5_NFIT_PLATFORM_CAPABILITY_CPU_CACHE_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT0
1795#define EFI_ACPI_6_5_NFIT_PLATFORM_CAPABILITY_MEMORY_CONTROLLER_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT1
1796#define EFI_ACPI_6_5_NFIT_PLATFORM_CAPABILITY_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_HARDWARE_MIRRORING BIT2
1797
1801typedef struct {
1804
1808#define EFI_ACPI_6_5_SECURE_DEVICES_TABLE_REVISION 0x01
1809
1813#define EFI_ACPI_6_5_SDEV_TYPE_ACPI_NAMESPACE_DEVICE 0x00
1814#define EFI_ACPI_6_5_SDEV_TYPE_PCIE_ENDPOINT_DEVICE 0x01
1815
1819#define EFI_ACPI_6_5_SDEV_FLAG_ALLOW_HANDOFF BIT0
1820#define EFI_ACPI_6_5_SDEV_FLAG_SECURE_ACCESS_COMPONENTS_PRESENT BIT1
1821
1825typedef struct {
1826 UINT8 Type;
1827 UINT8 Flags;
1828 UINT16 Length;
1830
1834typedef struct {
1836 UINT16 DeviceIdentifierOffset;
1837 UINT16 DeviceIdentifierLength;
1838 UINT16 VendorSpecificDataOffset;
1839 UINT16 VendorSpecificDataLength;
1840 UINT16 SecureAccessComponentsOffset;
1841 UINT16 SecureAccessComponentsLength;
1843
1847#define EFI_ACPI_6_5_SDEV_SECURE_ACCESS_COMPONENT_TYPE_IDENTIFICATION 0x00
1848#define EFI_ACPI_6_5_SDEV_SECURE_ACCESS_COMPONENT_TYPE_MEMORY 0x01
1849
1853typedef struct {
1855 UINT16 HardwareIdentifierOffset;
1856 UINT16 HardwareIdentifierLength;
1857 UINT16 SubsystemIdentifierOffset;
1858 UINT16 SubsystemIdentifierLength;
1859 UINT16 HardwareRevision;
1860 UINT8 HardwareRevisionPresent;
1861 UINT8 ClassCodePresent;
1862 UINT8 PciCompatibleBaseClass;
1863 UINT8 PciCompatibleSubClass;
1864 UINT8 PciCompatibleProgrammingInterface;
1866
1870typedef struct {
1872 UINT32 Reserved;
1873 UINT64 MemoryAddressBase;
1874 UINT64 MemoryLength;
1876
1880typedef struct {
1882 UINT16 PciSegmentNumber;
1883 UINT16 StartBusNumber;
1884 UINT16 PciPathOffset;
1885 UINT16 PciPathLength;
1886 UINT16 VendorSpecificDataOffset;
1887 UINT16 VendorSpecificDataLength;
1889
1893typedef struct {
1895 UINT32 BootErrorRegionLength;
1896 UINT64 BootErrorRegion;
1898
1902#define EFI_ACPI_6_5_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
1903
1907typedef struct {
1908 UINT32 UncorrectableErrorValid : 1;
1909 UINT32 CorrectableErrorValid : 1;
1910 UINT32 MultipleUncorrectableErrors : 1;
1911 UINT32 MultipleCorrectableErrors : 1;
1912 UINT32 ErrorDataEntryCount : 10;
1913 UINT32 Reserved : 18;
1915
1919typedef struct {
1921 UINT32 RawDataOffset;
1922 UINT32 RawDataLength;
1923 UINT32 DataLength;
1924 UINT32 ErrorSeverity;
1926
1927//
1928// Boot Error Severity types
1929//
1930#define EFI_ACPI_6_5_ERROR_SEVERITY_RECOVERABLE 0x00
1931#define EFI_ACPI_6_5_ERROR_SEVERITY_FATAL 0x01
1932#define EFI_ACPI_6_5_ERROR_SEVERITY_CORRECTED 0x02
1933#define EFI_ACPI_6_5_ERROR_SEVERITY_NONE 0x03
1934//
1935// The term 'Correctable' is no longer being used as an error severity of the
1936// reported error since ACPI Specification Version 5.1 Errata B.
1937// The below macro is considered as deprecated and should no longer be used.
1938//
1939#define EFI_ACPI_6_5_ERROR_SEVERITY_CORRECTABLE 0x00
1940
1944typedef struct {
1945 UINT8 SectionType[16];
1946 UINT32 ErrorSeverity;
1947 UINT16 Revision;
1948 UINT8 ValidationBits;
1949 UINT8 Flags;
1950 UINT32 ErrorDataLength;
1951 UINT8 FruId[16];
1952 UINT8 FruText[20];
1953 UINT8 Timestamp[8];
1955
1959#define EFI_ACPI_6_5_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0300
1960
1964typedef struct {
1966 UINT32 ErrorSourceCount;
1968
1972#define EFI_ACPI_6_5_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x02
1973
1974//
1975// Error Source structure types.
1976//
1977#define EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
1978#define EFI_ACPI_6_5_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
1979#define EFI_ACPI_6_5_IA32_ARCHITECTURE_NMI_ERROR 0x02
1980#define EFI_ACPI_6_5_PCI_EXPRESS_ROOT_PORT_AER 0x06
1981#define EFI_ACPI_6_5_PCI_EXPRESS_DEVICE_AER 0x07
1982#define EFI_ACPI_6_5_PCI_EXPRESS_BRIDGE_AER 0x08
1983#define EFI_ACPI_6_5_GENERIC_HARDWARE_ERROR 0x09
1984#define EFI_ACPI_6_5_GENERIC_HARDWARE_ERROR_VERSION_2 0x0A
1985#define EFI_ACPI_6_5_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK 0x0B
1986
1987//
1988// Error Source structure flags.
1989//
1990#define EFI_ACPI_6_5_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
1991#define EFI_ACPI_6_5_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
1992#define EFI_ACPI_6_5_ERROR_SOURCE_FLAG_GHES_ASSIST (1 << 2)
1993
1997typedef struct {
1998 UINT16 Type;
1999 UINT16 SourceId;
2000 UINT8 Reserved0[2];
2001 UINT8 Flags;
2002 UINT8 Enabled;
2003 UINT32 NumberOfRecordsToPreAllocate;
2004 UINT32 MaxSectionsPerRecord;
2005 UINT64 GlobalCapabilityInitData;
2006 UINT64 GlobalControlInitData;
2007 UINT8 NumberOfHardwareBanks;
2008 UINT8 Reserved1[7];
2010
2014typedef struct {
2015 UINT8 BankNumber;
2016 UINT8 ClearStatusOnInitialization;
2017 UINT8 StatusDataFormat;
2018 UINT8 Reserved0;
2019 UINT32 ControlRegisterMsrAddress;
2020 UINT64 ControlInitData;
2021 UINT32 StatusRegisterMsrAddress;
2022 UINT32 AddressRegisterMsrAddress;
2023 UINT32 MiscRegisterMsrAddress;
2025
2029#define EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
2030#define EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
2031#define EFI_ACPI_6_5_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
2032
2033//
2034// Hardware Error Notification types. All other values are reserved
2035//
2036#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
2037#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
2038#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
2039#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
2040#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
2041#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05
2042#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_MCE 0x06
2043#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07
2044#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEA 0x08
2045#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEI 0x09
2046#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_GSIV 0x0A
2047#define EFI_ACPI_6_5_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION 0x0B
2048
2052typedef struct {
2053 UINT16 Type : 1;
2054 UINT16 PollInterval : 1;
2055 UINT16 SwitchToPollingThresholdValue : 1;
2056 UINT16 SwitchToPollingThresholdWindow : 1;
2057 UINT16 ErrorThresholdValue : 1;
2058 UINT16 ErrorThresholdWindow : 1;
2059 UINT16 Reserved : 10;
2061
2065typedef struct {
2066 UINT8 Type;
2067 UINT8 Length;
2069 UINT32 PollInterval;
2070 UINT32 Vector;
2071 UINT32 SwitchToPollingThresholdValue;
2072 UINT32 SwitchToPollingThresholdWindow;
2073 UINT32 ErrorThresholdValue;
2074 UINT32 ErrorThresholdWindow;
2076
2080typedef struct {
2081 UINT16 Type;
2082 UINT16 SourceId;
2083 UINT8 Reserved0[2];
2084 UINT8 Flags;
2085 UINT8 Enabled;
2086 UINT32 NumberOfRecordsToPreAllocate;
2087 UINT32 MaxSectionsPerRecord;
2089 UINT8 NumberOfHardwareBanks;
2090 UINT8 Reserved1[3];
2092
2096typedef struct {
2097 UINT16 Type;
2098 UINT16 SourceId;
2099 UINT8 Reserved0[2];
2100 UINT32 NumberOfRecordsToPreAllocate;
2101 UINT32 MaxSectionsPerRecord;
2102 UINT32 MaxRawDataLength;
2104
2108typedef struct {
2109 UINT16 Type;
2110 UINT16 SourceId;
2111 UINT8 Reserved0[2];
2112 UINT8 Flags;
2113 UINT8 Enabled;
2114 UINT32 NumberOfRecordsToPreAllocate;
2115 UINT32 MaxSectionsPerRecord;
2116 UINT32 Bus;
2117 UINT16 Device;
2118 UINT16 Function;
2119 UINT16 DeviceControl;
2120 UINT8 Reserved1[2];
2121 UINT32 UncorrectableErrorMask;
2122 UINT32 UncorrectableErrorSeverity;
2123 UINT32 CorrectableErrorMask;
2124 UINT32 AdvancedErrorCapabilitiesAndControl;
2125 UINT32 RootErrorCommand;
2127
2131typedef struct {
2132 UINT16 Type;
2133 UINT16 SourceId;
2134 UINT8 Reserved0[2];
2135 UINT8 Flags;
2136 UINT8 Enabled;
2137 UINT32 NumberOfRecordsToPreAllocate;
2138 UINT32 MaxSectionsPerRecord;
2139 UINT32 Bus;
2140 UINT16 Device;
2141 UINT16 Function;
2142 UINT16 DeviceControl;
2143 UINT8 Reserved1[2];
2144 UINT32 UncorrectableErrorMask;
2145 UINT32 UncorrectableErrorSeverity;
2146 UINT32 CorrectableErrorMask;
2147 UINT32 AdvancedErrorCapabilitiesAndControl;
2149
2153typedef struct {
2154 UINT16 Type;
2155 UINT16 SourceId;
2156 UINT8 Reserved0[2];
2157 UINT8 Flags;
2158 UINT8 Enabled;
2159 UINT32 NumberOfRecordsToPreAllocate;
2160 UINT32 MaxSectionsPerRecord;
2161 UINT32 Bus;
2162 UINT16 Device;
2163 UINT16 Function;
2164 UINT16 DeviceControl;
2165 UINT8 Reserved1[2];
2166 UINT32 UncorrectableErrorMask;
2167 UINT32 UncorrectableErrorSeverity;
2168 UINT32 CorrectableErrorMask;
2169 UINT32 AdvancedErrorCapabilitiesAndControl;
2170 UINT32 SecondaryUncorrectableErrorMask;
2171 UINT32 SecondaryUncorrectableErrorSeverity;
2172 UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
2174
2178typedef struct {
2179 UINT16 Type;
2180 UINT16 SourceId;
2181 UINT16 RelatedSourceId;
2182 UINT8 Flags;
2183 UINT8 Enabled;
2184 UINT32 NumberOfRecordsToPreAllocate;
2185 UINT32 MaxSectionsPerRecord;
2186 UINT32 MaxRawDataLength;
2187 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
2189 UINT32 ErrorStatusBlockLength;
2191
2195typedef struct {
2196 UINT16 Type;
2197 UINT16 SourceId;
2198 UINT16 RelatedSourceId;
2199 UINT8 Flags;
2200 UINT8 Enabled;
2201 UINT32 NumberOfRecordsToPreAllocate;
2202 UINT32 MaxSectionsPerRecord;
2203 UINT32 MaxRawDataLength;
2204 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
2206 UINT32 ErrorStatusBlockLength;
2208 UINT64 ReadAckPreserve;
2209 UINT64 ReadAckWrite;
2211
2215typedef struct {
2217 UINT32 RawDataOffset;
2218 UINT32 RawDataLength;
2219 UINT32 DataLength;
2220 UINT32 ErrorSeverity;
2222
2226typedef struct {
2227 UINT16 Type;
2228 UINT16 SourceId;
2229 UINT8 Reserved0[2];
2230 UINT8 Flags;
2231 UINT8 Enabled;
2232 UINT32 NumberOfRecordsToPreAllocate;
2233 UINT32 MaxSectionsPerRecord;
2235 UINT8 NumberOfHardwareBanks;
2236 UINT8 Reserved1[3];
2238
2242typedef struct {
2244 UINT8 Reserved[4];
2246
2250#define EFI_ACPI_6_5_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_REVISION 0x02
2251
2255#define EFI_ACPI_6_5_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES 0x00
2256#define EFI_ACPI_6_5_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO 0x01
2257#define EFI_ACPI_6_5_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO 0x02
2258
2262typedef struct {
2263 UINT16 Type;
2264 UINT8 Reserved[2];
2265 UINT32 Length;
2267
2271typedef struct {
2272 UINT16 InitiatorProximityDomainValid : 1;
2273 UINT16 Reserved : 15;
2275
2279typedef struct {
2280 UINT16 Type;
2281 UINT8 Reserved[2];
2282 UINT32 Length;
2284 UINT8 Reserved1[2];
2285 UINT32 InitiatorProximityDomain;
2286 UINT32 MemoryProximityDomain;
2287 UINT8 Reserved2[20];
2289
2293typedef struct {
2294 UINT8 MemoryHierarchy : 4;
2295 UINT8 AccessAttributes : 2;
2296 UINT8 Reserved : 2;
2298
2302typedef struct {
2303 UINT16 Type;
2304 UINT8 Reserved[2];
2305 UINT32 Length;
2307 UINT8 DataType;
2308 UINT8 MinTransferSize;
2309 UINT8 Reserved1;
2310 UINT32 NumberOfInitiatorProximityDomains;
2311 UINT32 NumberOfTargetProximityDomains;
2312 UINT8 Reserved2[4];
2313 UINT64 EntryBaseUnit;
2315
2319typedef struct {
2320 UINT32 TotalCacheLevels : 4;
2321 UINT32 CacheLevel : 4;
2322 UINT32 CacheAssociativity : 4;
2323 UINT32 WritePolicy : 4;
2324 UINT32 CacheLineSize : 16;
2326
2330typedef struct {
2331 UINT16 Type;
2332 UINT8 Reserved[2];
2333 UINT32 Length;
2334 UINT32 MemoryProximityDomain;
2335 UINT8 Reserved1[4];
2336 UINT64 MemorySideCacheSize;
2338 UINT8 Reserved2[2];
2339 UINT16 NumberOfSmbiosHandles;
2341
2345typedef struct {
2347 UINT32 SerializationHeaderSize;
2348 UINT8 Reserved0[4];
2349 UINT32 InstructionEntryCount;
2351
2355#define EFI_ACPI_6_5_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
2356
2360#define EFI_ACPI_6_5_ERST_BEGIN_WRITE_OPERATION 0x00
2361#define EFI_ACPI_6_5_ERST_BEGIN_READ_OPERATION 0x01
2362#define EFI_ACPI_6_5_ERST_BEGIN_CLEAR_OPERATION 0x02
2363#define EFI_ACPI_6_5_ERST_END_OPERATION 0x03
2364#define EFI_ACPI_6_5_ERST_SET_RECORD_OFFSET 0x04
2365#define EFI_ACPI_6_5_ERST_EXECUTE_OPERATION 0x05
2366#define EFI_ACPI_6_5_ERST_CHECK_BUSY_STATUS 0x06
2367#define EFI_ACPI_6_5_ERST_GET_COMMAND_STATUS 0x07
2368#define EFI_ACPI_6_5_ERST_GET_RECORD_IDENTIFIER 0x08
2369#define EFI_ACPI_6_5_ERST_SET_RECORD_IDENTIFIER 0x09
2370#define EFI_ACPI_6_5_ERST_GET_RECORD_COUNT 0x0A
2371#define EFI_ACPI_6_5_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
2372#define EFI_ACPI_6_5_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
2373#define EFI_ACPI_6_5_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
2374#define EFI_ACPI_6_5_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
2375#define EFI_ACPI_6_5_ERST_GET_EXECUTE_OPERATION_TIMINGS 0x10
2376
2380#define EFI_ACPI_6_5_ERST_STATUS_SUCCESS 0x00
2381#define EFI_ACPI_6_5_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
2382#define EFI_ACPI_6_5_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
2383#define EFI_ACPI_6_5_ERST_STATUS_FAILED 0x03
2384#define EFI_ACPI_6_5_ERST_STATUS_RECORD_STORE_EMPTY 0x04
2385#define EFI_ACPI_6_5_ERST_STATUS_RECORD_NOT_FOUND 0x05
2386
2390#define EFI_ACPI_6_5_ERST_READ_REGISTER 0x00
2391#define EFI_ACPI_6_5_ERST_READ_REGISTER_VALUE 0x01
2392#define EFI_ACPI_6_5_ERST_WRITE_REGISTER 0x02
2393#define EFI_ACPI_6_5_ERST_WRITE_REGISTER_VALUE 0x03
2394#define EFI_ACPI_6_5_ERST_NOOP 0x04
2395#define EFI_ACPI_6_5_ERST_LOAD_VAR1 0x05
2396#define EFI_ACPI_6_5_ERST_LOAD_VAR2 0x06
2397#define EFI_ACPI_6_5_ERST_STORE_VAR1 0x07
2398#define EFI_ACPI_6_5_ERST_ADD 0x08
2399#define EFI_ACPI_6_5_ERST_SUBTRACT 0x09
2400#define EFI_ACPI_6_5_ERST_ADD_VALUE 0x0A
2401#define EFI_ACPI_6_5_ERST_SUBTRACT_VALUE 0x0B
2402#define EFI_ACPI_6_5_ERST_STALL 0x0C
2403#define EFI_ACPI_6_5_ERST_STALL_WHILE_TRUE 0x0D
2404#define EFI_ACPI_6_5_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
2405#define EFI_ACPI_6_5_ERST_GOTO 0x0F
2406#define EFI_ACPI_6_5_ERST_SET_SRC_ADDRESS_BASE 0x10
2407#define EFI_ACPI_6_5_ERST_SET_DST_ADDRESS_BASE 0x11
2408#define EFI_ACPI_6_5_ERST_MOVE_DATA 0x12
2409
2413#define EFI_ACPI_6_5_ERST_PRESERVE_REGISTER 0x01
2414
2418typedef struct {
2419 UINT8 SerializationAction;
2420 UINT8 Instruction;
2421 UINT8 Flags;
2422 UINT8 Reserved0;
2424 UINT64 Value;
2425 UINT64 Mask;
2427
2431typedef struct {
2433 UINT32 InjectionHeaderSize;
2434 UINT8 InjectionFlags;
2435 UINT8 Reserved0[3];
2436 UINT32 InjectionEntryCount;
2438
2442#define EFI_ACPI_6_5_ERROR_INJECTION_TABLE_REVISION 0x02
2443
2447#define EFI_ACPI_6_5_EINJ_BEGIN_INJECTION_OPERATION 0x00
2448#define EFI_ACPI_6_5_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
2449#define EFI_ACPI_6_5_EINJ_SET_ERROR_TYPE 0x02
2450#define EFI_ACPI_6_5_EINJ_GET_ERROR_TYPE 0x03
2451#define EFI_ACPI_6_5_EINJ_END_OPERATION 0x04
2452#define EFI_ACPI_6_5_EINJ_EXECUTE_OPERATION 0x05
2453#define EFI_ACPI_6_5_EINJ_CHECK_BUSY_STATUS 0x06
2454#define EFI_ACPI_6_5_EINJ_GET_COMMAND_STATUS 0x07
2455#define EFI_ACPI_6_5_EINJ_SET_ERROR_TYPE_WITH_ADDRESS 0x08
2456#define EFI_ACPI_6_5_EINJ_GET_EXECUTE_OPERATION_TIMINGS 0x09
2457#define EFI_ACPI_6_5_EINJ_EINJV2_SET_ERROR_TYPE 0x10
2458#define EFI_ACPI_6_5_EINJ_EINJV2_GET_ERROR_TYPE 0x11
2459#define EFI_ACPI_6_5_EINJ_TRIGGER_ERROR 0xFF
2460
2464#define EFI_ACPI_6_5_EINJ_STATUS_SUCCESS 0x00
2465#define EFI_ACPI_6_5_EINJ_STATUS_UNKNOWN_FAILURE 0x01
2466#define EFI_ACPI_6_5_EINJ_STATUS_INVALID_ACCESS 0x02
2467
2471#define EFI_ACPI_6_5_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
2472#define EFI_ACPI_6_5_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
2473#define EFI_ACPI_6_5_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
2474#define EFI_ACPI_6_5_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
2475#define EFI_ACPI_6_5_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
2476#define EFI_ACPI_6_5_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
2477#define EFI_ACPI_6_5_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
2478#define EFI_ACPI_6_5_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
2479#define EFI_ACPI_6_5_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
2480#define EFI_ACPI_6_5_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
2481#define EFI_ACPI_6_5_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
2482#define EFI_ACPI_6_5_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
2483
2487#define EFI_ACPI_6_5_EINJ_READ_REGISTER 0x00
2488#define EFI_ACPI_6_5_EINJ_READ_REGISTER_VALUE 0x01
2489#define EFI_ACPI_6_5_EINJ_WRITE_REGISTER 0x02
2490#define EFI_ACPI_6_5_EINJ_WRITE_REGISTER_VALUE 0x03
2491#define EFI_ACPI_6_5_EINJ_NOOP 0x04
2492
2496#define EFI_ACPI_6_5_EINJ_PRESERVE_REGISTER 0x01
2497
2501typedef struct {
2502 UINT8 InjectionAction;
2503 UINT8 Instruction;
2504 UINT8 Flags;
2505 UINT8 Reserved0;
2507 UINT64 Value;
2508 UINT64 Mask;
2510
2514typedef struct {
2515 UINT32 HeaderSize;
2516 UINT32 Revision;
2517 UINT32 TableSize;
2518 UINT32 EntryCount;
2520
2524typedef struct {
2526 UINT32 Flags;
2527 UINT64 Reserved;
2529
2533#define EFI_ACPI_6_5_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x02
2534
2538#define EFI_ACPI_6_5_PCCT_FLAGS_PLATFORM_INTERRUPT BIT0
2539
2540//
2541// PCCT Subspace type
2542//
2543#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_GENERIC 0x00
2544#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01
2545#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02
2546#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_3_EXTENDED_PCC 0x03
2547#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC 0x04
2548#define EFI_ACPI_6_5_PCCT_SUBSPACE_TYPE_5_HW_REGISTERS_COMMUNICATIONS 0x05
2549
2553typedef struct {
2554 UINT8 Type;
2555 UINT8 Length;
2557
2561typedef struct {
2562 UINT8 Type;
2563 UINT8 Length;
2564 UINT8 Reserved[6];
2565 UINT64 BaseAddress;
2566 UINT64 AddressLength;
2568 UINT64 DoorbellPreserve;
2569 UINT64 DoorbellWrite;
2570 UINT32 NominalLatency;
2571 UINT32 MaximumPeriodicAccessRate;
2572 UINT16 MinimumRequestTurnaroundTime;
2574
2578
2579typedef struct {
2580 UINT8 Command;
2581 UINT8 Reserved : 7;
2582 UINT8 NotifyOnCompletion : 1;
2584
2585typedef struct {
2586 UINT8 CommandComplete : 1;
2587 UINT8 PlatformInterrupt : 1;
2588 UINT8 Error : 1;
2589 UINT8 PlatformNotification : 1;
2590 UINT8 Reserved : 4;
2591 UINT8 Reserved1;
2593
2594typedef struct {
2595 UINT32 Signature;
2599
2600#define EFI_ACPI_6_5_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_POLARITY BIT0
2601#define EFI_ACPI_6_5_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE BIT1
2602
2606typedef struct {
2607 UINT8 Type;
2608 UINT8 Length;
2609 UINT32 PlatformInterrupt;
2610 UINT8 PlatformInterruptFlags;
2611 UINT8 Reserved;
2612 UINT64 BaseAddress;
2613 UINT64 AddressLength;
2615 UINT64 DoorbellPreserve;
2616 UINT64 DoorbellWrite;
2617 UINT32 NominalLatency;
2618 UINT32 MaximumPeriodicAccessRate;
2619 UINT16 MinimumRequestTurnaroundTime;
2621
2625typedef struct {
2626 UINT8 Type;
2627 UINT8 Length;
2628 UINT32 PlatformInterrupt;
2629 UINT8 PlatformInterruptFlags;
2630 UINT8 Reserved;
2631 UINT64 BaseAddress;
2632 UINT64 AddressLength;
2634 UINT64 DoorbellPreserve;
2635 UINT64 DoorbellWrite;
2636 UINT32 NominalLatency;
2637 UINT32 MaximumPeriodicAccessRate;
2638 UINT16 MinimumRequestTurnaroundTime;
2639 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister;
2640 UINT64 PlatformInterruptAckPreserve;
2641 UINT64 PlatformInterruptAckWrite;
2643
2647typedef struct {
2648 UINT8 Type;
2649 UINT8 Length;
2650 UINT32 PlatformInterrupt;
2651 UINT8 PlatformInterruptFlags;
2652 UINT8 Reserved;
2653 UINT64 BaseAddress;
2654 UINT32 AddressLength;
2656 UINT64 DoorbellPreserve;
2657 UINT64 DoorbellWrite;
2658 UINT32 NominalLatency;
2659 UINT32 MaximumPeriodicAccessRate;
2660 UINT32 MinimumRequestTurnaroundTime;
2661 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister;
2662 UINT64 PlatformInterruptAckPreserve;
2663 UINT64 PlatformInterruptAckSet;
2664 UINT8 Reserved1[8];
2665 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister;
2666 UINT64 CommandCompleteCheckMask;
2667 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE CommandCompleteUpdateRegister;
2668 UINT64 CommandCompleteUpdatePreserve;
2669 UINT64 CommandCompleteUpdateSet;
2670 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister;
2671 UINT64 ErrorStatusMask;
2673
2678
2679#define EFI_ACPI_6_5_PCCT_MASTER_SLAVE_COMMUNICATIONS_CHANNEL_FLAGS_NOTIFY_ON_COMPLETION BIT0
2680
2681typedef struct {
2682 UINT32 Signature;
2683 UINT32 Flags;
2684 UINT32 Length;
2685 UINT32 Command;
2687
2691typedef struct {
2692 UINT8 Type;
2693 UINT8 Length;
2694 UINT16 Version;
2695 UINT64 BaseAddress;
2696 UINT64 SharedMemoryRangeLength;
2698 UINT64 DoorbellPreserve;
2699 UINT64 DoorbellWrite;
2700 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister;
2701 UINT64 CommandCompleteCheckMask;
2702 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister;
2703 UINT64 ErrorStatusMask;
2704 UINT32 NominalLatency;
2705 UINT32 MinimumRequestTurnaroundTime;
2707
2711typedef struct {
2712 UINT32 Signature;
2713 // UINT8 CommunicationSubspace[];
2715
2719typedef struct {
2721 UINT8 TriggerCount;
2722 UINT8 Reserved[3];
2723 UINT32 TriggerIdentifierArrayOffset;
2725
2729#define EFI_ACPI_6_5_PLATFORM_DEBUG_TRIGGER_TABLE_REVISION 0x00
2730
2734typedef struct {
2735 UINT16 SubChannelIdentifer : 8;
2736 UINT16 Runtime : 1;
2737 UINT16 WaitForCompletion : 1;
2738 UINT16 TriggerOrder : 1;
2739 UINT16 Reserved : 5;
2741
2745#define EFI_ACPI_6_5_PDTT_PCC_COMMAND_DOORBELL_ONLY 0x00
2746#define EFI_ACPI_6_5_PDTT_PCC_COMMAND_VENDOR_SPECIFIC 0x01
2747
2752
2756typedef struct {
2759
2763#define EFI_ACPI_6_5_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION 0x03
2764
2768#define EFI_ACPI_6_5_PPTT_TYPE_PROCESSOR 0x00
2769#define EFI_ACPI_6_5_PPTT_TYPE_CACHE 0x01
2770
2774typedef struct {
2775 UINT8 Type;
2776 UINT8 Length;
2777 UINT8 Reserved[2];
2779
2783#define EFI_ACPI_6_5_PPTT_PACKAGE_NOT_PHYSICAL 0x0
2784#define EFI_ACPI_6_5_PPTT_PACKAGE_PHYSICAL 0x1
2785#define EFI_ACPI_6_5_PPTT_PROCESSOR_ID_INVALID 0x0
2786#define EFI_ACPI_6_5_PPTT_PROCESSOR_ID_VALID 0x1
2787#define EFI_ACPI_6_5_PPTT_PROCESSOR_IS_NOT_THREAD 0x0
2788#define EFI_ACPI_6_5_PPTT_PROCESSOR_IS_THREAD 0x1
2789#define EFI_ACPI_6_5_PPTT_NODE_IS_NOT_LEAF 0x0
2790#define EFI_ACPI_6_5_PPTT_NODE_IS_LEAF 0x1
2791#define EFI_ACPI_6_5_PPTT_IMPLEMENTATION_NOT_IDENTICAL 0x0
2792#define EFI_ACPI_6_5_PPTT_IMPLEMENTATION_IDENTICAL 0x1
2793
2797typedef struct {
2798 UINT32 PhysicalPackage : 1;
2799 UINT32 AcpiProcessorIdValid : 1;
2800 UINT32 ProcessorIsAThread : 1;
2801 UINT32 NodeIsALeaf : 1;
2802 UINT32 IdenticalImplementation : 1;
2803 UINT32 Reserved : 27;
2805
2809typedef struct {
2810 UINT8 Type;
2811 UINT8 Length;
2812 UINT8 Reserved[2];
2814 UINT32 Parent;
2815 UINT32 AcpiProcessorId;
2816 UINT32 NumberOfPrivateResources;
2818
2822#define EFI_ACPI_6_5_PPTT_CACHE_SIZE_INVALID 0x0
2823#define EFI_ACPI_6_5_PPTT_CACHE_SIZE_VALID 0x1
2824#define EFI_ACPI_6_5_PPTT_NUMBER_OF_SETS_INVALID 0x0
2825#define EFI_ACPI_6_5_PPTT_NUMBER_OF_SETS_VALID 0x1
2826#define EFI_ACPI_6_5_PPTT_ASSOCIATIVITY_INVALID 0x0
2827#define EFI_ACPI_6_5_PPTT_ASSOCIATIVITY_VALID 0x1
2828#define EFI_ACPI_6_5_PPTT_ALLOCATION_TYPE_INVALID 0x0
2829#define EFI_ACPI_6_5_PPTT_ALLOCATION_TYPE_VALID 0x1
2830#define EFI_ACPI_6_5_PPTT_CACHE_TYPE_INVALID 0x0
2831#define EFI_ACPI_6_5_PPTT_CACHE_TYPE_VALID 0x1
2832#define EFI_ACPI_6_5_PPTT_WRITE_POLICY_INVALID 0x0
2833#define EFI_ACPI_6_5_PPTT_WRITE_POLICY_VALID 0x1
2834#define EFI_ACPI_6_5_PPTT_LINE_SIZE_INVALID 0x0
2835#define EFI_ACPI_6_5_PPTT_LINE_SIZE_VALID 0x1
2836#define EFI_ACPI_6_5_PPTT_CACHE_ID_INVALID 0x0
2837#define EFI_ACPI_6_5_PPTT_CACHE_ID_VALID 0x1
2838
2842typedef struct {
2843 UINT32 SizePropertyValid : 1;
2844 UINT32 NumberOfSetsValid : 1;
2845 UINT32 AssociativityValid : 1;
2846 UINT32 AllocationTypeValid : 1;
2847 UINT32 CacheTypeValid : 1;
2848 UINT32 WritePolicyValid : 1;
2849 UINT32 LineSizeValid : 1;
2850 UINT32 CacheIdValid : 1;
2851 UINT32 Reserved : 24;
2853
2857#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_ALLOCATION_READ 0x0
2858#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_ALLOCATION_WRITE 0x1
2859#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE 0x2
2860#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_CACHE_TYPE_DATA 0x0
2861#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION 0x1
2862#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED 0x2
2863#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK 0x0
2864#define EFI_ACPI_6_5_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_THROUGH 0x1
2865
2869typedef struct {
2870 UINT8 AllocationType : 2;
2871 UINT8 CacheType : 2;
2872 UINT8 WritePolicy : 1;
2873 UINT8 Reserved : 3;
2875
2879typedef struct {
2880 UINT8 Type;
2881 UINT8 Length;
2882 UINT8 Reserved[2];
2884 UINT32 NextLevelOfCache;
2885 UINT32 Size;
2886 UINT32 NumberOfSets;
2887 UINT8 Associativity;
2889 UINT16 LineSize;
2890 UINT32 CacheId;
2892
2896typedef struct {
2898 // UINT8 PlatformTelemetryRecords[];
2900
2901#define EFI_ACPI_6_5_PLATFORM_HEALTH_ASSESSMENT_TABLE_REVISION 0x01
2902
2906typedef struct {
2907 UINT16 PlatformHealthAssessmentRecordType;
2908 UINT16 RecordLength;
2909 UINT8 Revision;
2910 // UINT8 Data[];
2912
2916#define EFI_ACPI_6_5_PHAT_RECORD_TYPE_FIRMWARE_VERSION_DATA_RECORD 0x0000
2917#define EFI_ACPI_6_5_PHAT_RECORD_TYPE_FIRMWARE_HEALTH_DATA_RECORD 0x0001
2918
2922typedef struct {
2923 GUID ComponentId;
2924 UINT64 VersionValue;
2925 UINT32 ProducerId;
2927
2931typedef struct {
2932 UINT16 PlatformRecordType;
2933 UINT16 RecordLength;
2934 UINT8 Revision;
2935 UINT8 Reserved[3];
2936 UINT32 RecordCount;
2937 // UINT8 PhatVersionElement[];
2939
2940#define EFI_ACPI_6_5_PHAT_FIRMWARE_VERSION_DATA_RECORD_REVISION 0x01
2941
2945typedef struct {
2946 UINT16 PlatformRecordType;
2947 UINT16 RecordLength;
2948 UINT8 Revision;
2949 UINT16 Reserved;
2950 UINT8 AmHealthy;
2951 GUID DeviceSignature;
2952 UINT32 DeviceSpecificDataOffset;
2953 // UINT8 DevicePath[];
2954 // UINT8 DeviceSpecificData[];
2956
2957#define EFI_ACPI_6_5_PHAT_FIRMWARE_HEALTH_DATA_RECORD_REVISION 0x01
2958
2962#define EFI_ACPI_6_5_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ERRORS_FOUND 0x00
2963#define EFI_ACPI_6_5_PHAT_FIRMWARE_HEALTH_DATA_RECORD_NO_ERRORS_FOUND 0x01
2964#define EFI_ACPI_6_5_PHAT_FIRMWARE_HEALTH_DATA_RECORD_UNKNOWN 0x02
2965#define EFI_ACPI_6_5_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ADVISORY 0x03
2966
2970typedef struct {
2971 GUID VendorDataID;
2972 UINT16 Length;
2973 UINT16 Revision;
2974 // UINTN Data[];
2976
2980typedef struct {
2981 UINT8 SupportedSources;
2982 UINT8 Source;
2983 UINT8 SubSource;
2984 UINT8 Reason;
2985 UINT16 VendorCount;
2986 // EFI_ACPI_6_5_PHAT_RESET_REASON_HEALTH_RECORD_VENDOR_DATA_ENTRY VendorSpecificResetReasonEntry[];
2988
2989#define EFI_ACPI_6_5_PHAT_RESET_REASON_HEADER_GUID { 0x7a014ce2, 0xf263, 0x4b77, { 0xb8, 0x8a, 0xe6, 0x33, 0x6b, 0x78, 0x2c, 0x14 }}
2990
2991#define EFI_ACPI_6_5_PHAT_RESET_REASON_SUPPORTED_SOURCES_UNKNOWN BIT0
2992#define EFI_ACPI_6_5_PHAT_RESET_REASON_SUPPORTED_SOURCES_HARDWARE BIT1
2993#define EFI_ACPI_6_5_PHAT_RESET_REASON_SUPPORTED_SOURCES_FIRMWARE BIT2
2994#define EFI_ACPI_6_5_PHAT_RESET_REASON_SUPPORTED_SOURCES_SOFTWARE BIT3
2995#define EFI_ACPI_6_5_PHAT_RESET_REASON_SUPPORTED_SOURCES_SUPERVISOR BIT4
2996
2997#define EFI_ACPI_6_5_PHAT_RESET_REASON_SOURCES_UNKNOWN BIT0
2998#define EFI_ACPI_6_5_PHAT_RESET_REASON_SOURCES_HARDWARE BIT1
2999#define EFI_ACPI_6_5_PHAT_RESET_REASON_SOURCES_FIRMWARE BIT2
3000#define EFI_ACPI_6_5_PHAT_RESET_REASON_SOURCES_SOFTWARE BIT3
3001#define EFI_ACPI_6_5_PHAT_RESET_REASON_SOURCES_SUPERVISOR BIT4
3002
3003#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_UNKNOWN 0x00
3004#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_COLD_BOOT 0x01
3005#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_COLD_RESET 0x02
3006#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_WARM_RESET 0x03
3007#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_UPDATE 0x04
3008#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_UNEXPECTED_RESET 0x20
3009#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_FAULT 0x21
3010#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_TIMEOUT 0x22
3011#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_THERMAL 0x23
3012#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_POWER_LOSS 0x24
3013#define EFI_ACPI_6_5_PHAT_RESET_REASON_REASON_POWER_BUTTON 0x25
3014
3015//
3016// Known table signatures
3017//
3018
3022#define EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
3023
3027#define EFI_ACPI_6_5_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
3028
3032#define EFI_ACPI_6_5_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'M', 'T')
3033
3037#define EFI_ACPI_6_5_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
3038
3042#define EFI_ACPI_6_5_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
3043
3047#define EFI_ACPI_6_5_COMPONENT_DISTANCE_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('C', 'D', 'I', 'T')
3048
3052#define EFI_ACPI_6_5_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
3053
3057#define EFI_ACPI_6_5_COMPONENT_RESOURCE_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('C', 'R', 'A', 'T')
3058
3062#define EFI_ACPI_6_5_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
3063
3067#define EFI_ACPI_6_5_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
3068
3072#define EFI_ACPI_6_5_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
3073
3077#define EFI_ACPI_6_5_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
3078
3082#define EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
3083
3087#define EFI_ACPI_6_5_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
3088
3092#define EFI_ACPI_6_5_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
3093
3097#define EFI_ACPI_6_5_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
3098
3102#define EFI_ACPI_6_5_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
3103
3107#define EFI_ACPI_6_5_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('H', 'M', 'A', 'T')
3108
3112#define EFI_ACPI_6_5_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
3113
3117#define EFI_ACPI_6_5_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
3118
3122#define EFI_ACPI_6_5_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T')
3123
3127#define EFI_ACPI_6_5_PLATFORM_DEBUG_TRIGGER_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'D', 'T', 'T')
3128
3132#define EFI_ACPI_6_5_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
3133
3137#define EFI_ACPI_6_5_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'P', 'T', 'T')
3138
3142#define EFI_ACPI_6_5_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
3143
3147#define EFI_ACPI_6_5_ACPI_RAS2_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', '2')
3148
3152#define EFI_ACPI_6_5_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
3153
3157#define EFI_ACPI_6_5_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
3158
3162#define EFI_ACPI_6_5_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
3163
3167#define EFI_ACPI_6_5_SECURE_DEVICES_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'V')
3168
3172#define EFI_ACPI_6_5_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
3173
3177#define EFI_ACPI_6_5_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
3178
3182#define EFI_ACPI_6_5_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
3183
3187#define EFI_ACPI_6_5_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
3188
3192#define EFI_ACPI_6_5_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
3193
3197#define EFI_ACPI_6_5_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
3198
3202#define EFI_ACPI_6_5_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
3203
3207#define EFI_ACPI_6_5_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
3208
3212#define EFI_ACPI_6_5_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
3213
3217#define EFI_ACPI_6_5_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
3218
3222#define EFI_ACPI_6_5_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
3223
3227#define EFI_ACPI_6_5_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
3228
3232#define EFI_ACPI_6_5_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
3233
3237#define EFI_ACPI_6_5_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T')
3238
3242#define EFI_ACPI_6_5_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
3243
3247#define EFI_ACPI_6_5_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T')
3248
3252#define EFI_ACPI_6_5_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
3253
3257#define EFI_ACPI_6_5_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
3258
3262#define EFI_ACPI_6_5_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
3263
3267#define EFI_ACPI_6_5_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')
3268
3272#define EFI_ACPI_6_5_PLATFORM_HEALTH_ASSESSMENT_TABLE_SIGNATURE SIGNATURE_32('P', 'H', 'A', 'T')
3273
3277#define EFI_ACPI_6_5_SOFTWARE_DELEGATED_EXCEPTIONS_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'I')
3278
3282#define EFI_ACPI_6_5_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
3283
3287#define EFI_ACPI_6_5_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
3288
3292#define EFI_ACPI_6_5_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
3293
3297#define EFI_ACPI_6_5_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O')
3298
3302#define EFI_ACPI_6_5_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
3303
3307#define EFI_ACPI_6_5_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
3308
3312#define EFI_ACPI_6_5_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
3313
3317#define EFI_ACPI_6_5_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
3318
3322#define EFI_ACPI_6_5_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
3323
3327#define EFI_ACPI_6_5_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
3328
3332#define EFI_ACPI_6_5_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
3333
3337#define EFI_ACPI_6_5_WINDOWS_SMM_SECURITY_MITIGATION_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'M', 'T')
3338
3342#define EFI_ACPI_6_5_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V')
3343
3347#define EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M')
3348
3349#pragma pack()
3350
3351#endif
EFI_ACPI_6_5_PCCT_SUBSPACE_3_EXTENDED_PCC EFI_ACPI_6_5_PCCT_SUBSPACE_4_EXTENDED_PCC
Definition: Acpi65.h:2677
EFI_ACPI_6_5_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER EFI_ACPI_6_5_PDTT_PCC
Definition: Acpi65.h:2751
STATIC EFI_STATUS WaitForCompletion(IN HTTP_DOWNLOAD_CONTEXT *Context, IN OUT BOOLEAN *CallBackComplete)
Definition: Http.c:989
Definition: Base.h:213