VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Acpi64.h@ 105670

Last change on this file since 105670 was 105670, checked in by vboxsync, 7 months ago

Devices/EFI/FirmwareNew: Merge edk2-stable-202405 and make it build on aarch64, bugref:4643

  • Property svn:eol-style set to native
File size: 106.5 KB
Line 
1/** @file
2 ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021.
3
4 Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR>
5 Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR>
6
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8**/
9
10#ifndef ACPI_6_4_H_
11#define ACPI_6_4_H_
12
13#include <IndustryStandard/Acpi63.h>
14
15///
16/// _PSD Revision for ACPI 6.4
17///
18#define EFI_ACPI_6_4_AML_PSD_REVISION 0
19
20///
21/// _CPC Revision for ACPI 6.4
22///
23#define EFI_ACPI_6_4_AML_CPC_REVISION 3
24
25//
26// Ensure proper structure formats
27//
28#pragma pack(1)
29
30///
31/// ACPI 6.4 Generic Address Space definition
32///
33typedef struct {
34 UINT8 AddressSpaceId;
35 UINT8 RegisterBitWidth;
36 UINT8 RegisterBitOffset;
37 UINT8 AccessSize;
38 UINT64 Address;
39} EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE;
40
41//
42// Generic Address Space Address IDs
43//
44#define EFI_ACPI_6_4_SYSTEM_MEMORY 0x00
45#define EFI_ACPI_6_4_SYSTEM_IO 0x01
46#define EFI_ACPI_6_4_PCI_CONFIGURATION_SPACE 0x02
47#define EFI_ACPI_6_4_EMBEDDED_CONTROLLER 0x03
48#define EFI_ACPI_6_4_SMBUS 0x04
49#define EFI_ACPI_6_4_SYSTEM_CMOS 0x05
50#define EFI_ACPI_6_4_PCI_BAR_TARGET 0x06
51#define EFI_ACPI_6_4_IPMI 0x07
52#define EFI_ACPI_6_4_GENERAL_PURPOSE_IO 0x08
53#define EFI_ACPI_6_4_GENERIC_SERIAL_BUS 0x09
54#define EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL 0x0A
55#define EFI_ACPI_6_4_FUNCTIONAL_FIXED_HARDWARE 0x7F
56
57//
58// Generic Address Space Access Sizes
59//
60#define EFI_ACPI_6_4_UNDEFINED 0
61#define EFI_ACPI_6_4_BYTE 1
62#define EFI_ACPI_6_4_WORD 2
63#define EFI_ACPI_6_4_DWORD 3
64#define EFI_ACPI_6_4_QWORD 4
65
66//
67// ACPI 6.4 table structures
68//
69
70///
71/// Root System Description Pointer Structure
72///
73typedef struct {
74 UINT64 Signature;
75 UINT8 Checksum;
76 UINT8 OemId[6];
77 UINT8 Revision;
78 UINT32 RsdtAddress;
79 UINT32 Length;
80 UINT64 XsdtAddress;
81 UINT8 ExtendedChecksum;
82 UINT8 Reserved[3];
83} EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER;
84
85///
86/// RSD_PTR Revision (as defined in ACPI 6.4 spec.)
87///
88#define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.4) says current value is 2
89
90///
91/// Common table header, this prefaces all ACPI tables, including FACS, but
92/// excluding the RSD PTR structure
93///
94typedef struct {
95 UINT32 Signature;
96 UINT32 Length;
97} EFI_ACPI_6_4_COMMON_HEADER;
98
99//
100// Root System Description Table
101// No definition needed as it is a common description table header, the same with
102// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
103//
104
105///
106/// RSDT Revision (as defined in ACPI 6.4 spec.)
107///
108#define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
109
110//
111// Extended System Description Table
112// No definition needed as it is a common description table header, the same with
113// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
114//
115
116///
117/// XSDT Revision (as defined in ACPI 6.4 spec.)
118///
119#define EFI_ACPI_6_4_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
120
121///
122/// Fixed ACPI Description Table Structure (FADT)
123///
124typedef struct {
125 EFI_ACPI_DESCRIPTION_HEADER Header;
126 UINT32 FirmwareCtrl;
127 UINT32 Dsdt;
128 UINT8 Reserved0;
129 UINT8 PreferredPmProfile;
130 UINT16 SciInt;
131 UINT32 SmiCmd;
132 UINT8 AcpiEnable;
133 UINT8 AcpiDisable;
134 UINT8 S4BiosReq;
135 UINT8 PstateCnt;
136 UINT32 Pm1aEvtBlk;
137 UINT32 Pm1bEvtBlk;
138 UINT32 Pm1aCntBlk;
139 UINT32 Pm1bCntBlk;
140 UINT32 Pm2CntBlk;
141 UINT32 PmTmrBlk;
142 UINT32 Gpe0Blk;
143 UINT32 Gpe1Blk;
144 UINT8 Pm1EvtLen;
145 UINT8 Pm1CntLen;
146 UINT8 Pm2CntLen;
147 UINT8 PmTmrLen;
148 UINT8 Gpe0BlkLen;
149 UINT8 Gpe1BlkLen;
150 UINT8 Gpe1Base;
151 UINT8 CstCnt;
152 UINT16 PLvl2Lat;
153 UINT16 PLvl3Lat;
154 UINT16 FlushSize;
155 UINT16 FlushStride;
156 UINT8 DutyOffset;
157 UINT8 DutyWidth;
158 UINT8 DayAlrm;
159 UINT8 MonAlrm;
160 UINT8 Century;
161 UINT16 IaPcBootArch;
162 UINT8 Reserved1;
163 UINT32 Flags;
164 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ResetReg;
165 UINT8 ResetValue;
166 UINT16 ArmBootArch;
167 UINT8 MinorVersion;
168 UINT64 XFirmwareCtrl;
169 UINT64 XDsdt;
170 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
171 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
172 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
173 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
174 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
175 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
176 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
177 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
178 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
179 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
180 UINT64 HypervisorVendorIdentity;
181} EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE;
182
183///
184/// FADT Version (as defined in ACPI 6.4 spec.)
185///
186#define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06
187#define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x04
188
189//
190// Fixed ACPI Description Table Preferred Power Management Profile
191//
192#define EFI_ACPI_6_4_PM_PROFILE_UNSPECIFIED 0
193#define EFI_ACPI_6_4_PM_PROFILE_DESKTOP 1
194#define EFI_ACPI_6_4_PM_PROFILE_MOBILE 2
195#define EFI_ACPI_6_4_PM_PROFILE_WORKSTATION 3
196#define EFI_ACPI_6_4_PM_PROFILE_ENTERPRISE_SERVER 4
197#define EFI_ACPI_6_4_PM_PROFILE_SOHO_SERVER 5
198#define EFI_ACPI_6_4_PM_PROFILE_APPLIANCE_PC 6
199#define EFI_ACPI_6_4_PM_PROFILE_PERFORMANCE_SERVER 7
200#define EFI_ACPI_6_4_PM_PROFILE_TABLET 8
201
202//
203// Fixed ACPI Description Table Boot Architecture Flags
204// All other bits are reserved and must be set to 0.
205//
206#define EFI_ACPI_6_4_LEGACY_DEVICES BIT0
207#define EFI_ACPI_6_4_8042 BIT1
208#define EFI_ACPI_6_4_VGA_NOT_PRESENT BIT2
209#define EFI_ACPI_6_4_MSI_NOT_SUPPORTED BIT3
210#define EFI_ACPI_6_4_PCIE_ASPM_CONTROLS BIT4
211#define EFI_ACPI_6_4_CMOS_RTC_NOT_PRESENT BIT5
212
213//
214// Fixed ACPI Description Table Arm Boot Architecture Flags
215// All other bits are reserved and must be set to 0.
216//
217#define EFI_ACPI_6_4_ARM_PSCI_COMPLIANT BIT0
218#define EFI_ACPI_6_4_ARM_PSCI_USE_HVC BIT1
219
220//
221// Fixed ACPI Description Table Fixed Feature Flags
222// All other bits are reserved and must be set to 0.
223//
224#define EFI_ACPI_6_4_WBINVD BIT0
225#define EFI_ACPI_6_4_WBINVD_FLUSH BIT1
226#define EFI_ACPI_6_4_PROC_C1 BIT2
227#define EFI_ACPI_6_4_P_LVL2_UP BIT3
228#define EFI_ACPI_6_4_PWR_BUTTON BIT4
229#define EFI_ACPI_6_4_SLP_BUTTON BIT5
230#define EFI_ACPI_6_4_FIX_RTC BIT6
231#define EFI_ACPI_6_4_RTC_S4 BIT7
232#define EFI_ACPI_6_4_TMR_VAL_EXT BIT8
233#define EFI_ACPI_6_4_DCK_CAP BIT9
234#define EFI_ACPI_6_4_RESET_REG_SUP BIT10
235#define EFI_ACPI_6_4_SEALED_CASE BIT11
236#define EFI_ACPI_6_4_HEADLESS BIT12
237#define EFI_ACPI_6_4_CPU_SW_SLP BIT13
238#define EFI_ACPI_6_4_PCI_EXP_WAK BIT14
239#define EFI_ACPI_6_4_USE_PLATFORM_CLOCK BIT15
240#define EFI_ACPI_6_4_S4_RTC_STS_VALID BIT16
241#define EFI_ACPI_6_4_REMOTE_POWER_ON_CAPABLE BIT17
242#define EFI_ACPI_6_4_FORCE_APIC_CLUSTER_MODEL BIT18
243#define EFI_ACPI_6_4_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
244#define EFI_ACPI_6_4_HW_REDUCED_ACPI BIT20
245#define EFI_ACPI_6_4_LOW_POWER_S0_IDLE_CAPABLE BIT21
246
247///
248/// Firmware ACPI Control Structure
249///
250typedef struct {
251 UINT32 Signature;
252 UINT32 Length;
253 UINT32 HardwareSignature;
254 UINT32 FirmwareWakingVector;
255 UINT32 GlobalLock;
256 UINT32 Flags;
257 UINT64 XFirmwareWakingVector;
258 UINT8 Version;
259 UINT8 Reserved0[3];
260 UINT32 OspmFlags;
261 UINT8 Reserved1[24];
262} EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE;
263
264///
265/// FACS Version (as defined in ACPI 6.4 spec.)
266///
267#define EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
268
269///
270/// Firmware Control Structure Feature Flags
271/// All other bits are reserved and must be set to 0.
272///
273#define EFI_ACPI_6_4_S4BIOS_F BIT0
274#define EFI_ACPI_6_4_64BIT_WAKE_SUPPORTED_F BIT1
275
276///
277/// OSPM Enabled Firmware Control Structure Flags
278/// All other bits are reserved and must be set to 0.
279///
280#define EFI_ACPI_6_4_OSPM_64BIT_WAKE_F BIT0
281
282//
283// Differentiated System Description Table,
284// Secondary System Description Table
285// and Persistent System Description Table,
286// no definition needed as they are common description table header, the same with
287// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
288//
289#define EFI_ACPI_6_4_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
290#define EFI_ACPI_6_4_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
291
292///
293/// Multiple APIC Description Table header definition. The rest of the table
294/// must be defined in a platform specific manner.
295///
296typedef struct {
297 EFI_ACPI_DESCRIPTION_HEADER Header;
298 UINT32 LocalApicAddress;
299 UINT32 Flags;
300} EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
301
302///
303/// MADT Revision (as defined in ACPI 6.4 spec.)
304///
305#define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x05
306
307///
308/// Multiple APIC Flags
309/// All other bits are reserved and must be set to 0.
310///
311#define EFI_ACPI_6_4_PCAT_COMPAT BIT0
312
313//
314// Multiple APIC Description Table APIC structure types
315// All other values between 0x10 and 0x7F are reserved and
316// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
317//
318#define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC 0x00
319#define EFI_ACPI_6_4_IO_APIC 0x01
320#define EFI_ACPI_6_4_INTERRUPT_SOURCE_OVERRIDE 0x02
321#define EFI_ACPI_6_4_NON_MASKABLE_INTERRUPT_SOURCE 0x03
322#define EFI_ACPI_6_4_LOCAL_APIC_NMI 0x04
323#define EFI_ACPI_6_4_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
324#define EFI_ACPI_6_4_IO_SAPIC 0x06
325#define EFI_ACPI_6_4_LOCAL_SAPIC 0x07
326#define EFI_ACPI_6_4_PLATFORM_INTERRUPT_SOURCES 0x08
327#define EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC 0x09
328#define EFI_ACPI_6_4_LOCAL_X2APIC_NMI 0x0A
329#define EFI_ACPI_6_4_GIC 0x0B
330#define EFI_ACPI_6_4_GICD 0x0C
331#define EFI_ACPI_6_4_GIC_MSI_FRAME 0x0D
332#define EFI_ACPI_6_4_GICR 0x0E
333#define EFI_ACPI_6_4_GIC_ITS 0x0F
334#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP 0x10
335
336//
337// APIC Structure Definitions
338//
339
340///
341/// Processor Local APIC Structure Definition
342///
343typedef struct {
344 UINT8 Type;
345 UINT8 Length;
346 UINT8 AcpiProcessorUid;
347 UINT8 ApicId;
348 UINT32 Flags;
349} EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_STRUCTURE;
350
351///
352/// Local APIC Flags. All other bits are reserved and must be 0.
353///
354#define EFI_ACPI_6_4_LOCAL_APIC_ENABLED BIT0
355#define EFI_ACPI_6_4_LOCAL_APIC_ONLINE_CAPABLE BIT1
356
357///
358/// IO APIC Structure
359///
360typedef struct {
361 UINT8 Type;
362 UINT8 Length;
363 UINT8 IoApicId;
364 UINT8 Reserved;
365 UINT32 IoApicAddress;
366 UINT32 GlobalSystemInterruptBase;
367} EFI_ACPI_6_4_IO_APIC_STRUCTURE;
368
369///
370/// Interrupt Source Override Structure
371///
372typedef struct {
373 UINT8 Type;
374 UINT8 Length;
375 UINT8 Bus;
376 UINT8 Source;
377 UINT32 GlobalSystemInterrupt;
378 UINT16 Flags;
379} EFI_ACPI_6_4_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
380
381///
382/// Platform Interrupt Sources Structure Definition
383///
384typedef struct {
385 UINT8 Type;
386 UINT8 Length;
387 UINT16 Flags;
388 UINT8 InterruptType;
389 UINT8 ProcessorId;
390 UINT8 ProcessorEid;
391 UINT8 IoSapicVector;
392 UINT32 GlobalSystemInterrupt;
393 UINT32 PlatformInterruptSourceFlags;
394 UINT8 CpeiProcessorOverride;
395 UINT8 Reserved[31];
396} EFI_ACPI_6_4_PLATFORM_INTERRUPT_APIC_STRUCTURE;
397
398//
399// MPS INTI flags.
400// All other bits are reserved and must be set to 0.
401//
402#define EFI_ACPI_6_4_POLARITY (3 << 0)
403#define EFI_ACPI_6_4_TRIGGER_MODE (3 << 2)
404
405///
406/// Non-Maskable Interrupt Source Structure
407///
408typedef struct {
409 UINT8 Type;
410 UINT8 Length;
411 UINT16 Flags;
412 UINT32 GlobalSystemInterrupt;
413} EFI_ACPI_6_4_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
414
415///
416/// Local APIC NMI Structure
417///
418typedef struct {
419 UINT8 Type;
420 UINT8 Length;
421 UINT8 AcpiProcessorUid;
422 UINT16 Flags;
423 UINT8 LocalApicLint;
424} EFI_ACPI_6_4_LOCAL_APIC_NMI_STRUCTURE;
425
426///
427/// Local APIC Address Override Structure
428///
429typedef struct {
430 UINT8 Type;
431 UINT8 Length;
432 UINT16 Reserved;
433 UINT64 LocalApicAddress;
434} EFI_ACPI_6_4_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
435
436///
437/// IO SAPIC Structure
438///
439typedef struct {
440 UINT8 Type;
441 UINT8 Length;
442 UINT8 IoApicId;
443 UINT8 Reserved;
444 UINT32 GlobalSystemInterruptBase;
445 UINT64 IoSapicAddress;
446} EFI_ACPI_6_4_IO_SAPIC_STRUCTURE;
447
448///
449/// Local SAPIC Structure
450/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
451///
452typedef struct {
453 UINT8 Type;
454 UINT8 Length;
455 UINT8 AcpiProcessorId;
456 UINT8 LocalSapicId;
457 UINT8 LocalSapicEid;
458 UINT8 Reserved[3];
459 UINT32 Flags;
460 UINT32 ACPIProcessorUIDValue;
461} EFI_ACPI_6_4_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
462
463///
464/// Platform Interrupt Sources Structure
465///
466typedef struct {
467 UINT8 Type;
468 UINT8 Length;
469 UINT16 Flags;
470 UINT8 InterruptType;
471 UINT8 ProcessorId;
472 UINT8 ProcessorEid;
473 UINT8 IoSapicVector;
474 UINT32 GlobalSystemInterrupt;
475 UINT32 PlatformInterruptSourceFlags;
476} EFI_ACPI_6_4_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
477
478///
479/// Platform Interrupt Source Flags.
480/// All other bits are reserved and must be set to 0.
481///
482#define EFI_ACPI_6_4_CPEI_PROCESSOR_OVERRIDE BIT0
483
484///
485/// Processor Local x2APIC Structure Definition
486///
487typedef struct {
488 UINT8 Type;
489 UINT8 Length;
490 UINT8 Reserved[2];
491 UINT32 X2ApicId;
492 UINT32 Flags;
493 UINT32 AcpiProcessorUid;
494} EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
495
496///
497/// Local x2APIC NMI Structure
498///
499typedef struct {
500 UINT8 Type;
501 UINT8 Length;
502 UINT16 Flags;
503 UINT32 AcpiProcessorUid;
504 UINT8 LocalX2ApicLint;
505 UINT8 Reserved[3];
506} EFI_ACPI_6_4_LOCAL_X2APIC_NMI_STRUCTURE;
507
508///
509/// GIC Structure
510///
511typedef struct {
512 UINT8 Type;
513 UINT8 Length;
514 UINT16 Reserved;
515 UINT32 CPUInterfaceNumber;
516 UINT32 AcpiProcessorUid;
517 UINT32 Flags;
518 UINT32 ParkingProtocolVersion;
519 UINT32 PerformanceInterruptGsiv;
520 UINT64 ParkedAddress;
521 UINT64 PhysicalBaseAddress;
522 UINT64 GICV;
523 UINT64 GICH;
524 UINT32 VGICMaintenanceInterrupt;
525 UINT64 GICRBaseAddress;
526 UINT64 MPIDR;
527 UINT8 ProcessorPowerEfficiencyClass;
528 UINT8 Reserved2;
529 UINT16 SpeOverflowInterrupt;
530} EFI_ACPI_6_4_GIC_STRUCTURE;
531
532///
533/// GIC Flags. All other bits are reserved and must be 0.
534///
535#define EFI_ACPI_6_4_GIC_ENABLED BIT0
536#define EFI_ACPI_6_4_PERFORMANCE_INTERRUPT_MODEL BIT1
537#define EFI_ACPI_6_4_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2
538
539///
540/// GIC Distributor Structure
541///
542typedef struct {
543 UINT8 Type;
544 UINT8 Length;
545 UINT16 Reserved1;
546 UINT32 GicId;
547 UINT64 PhysicalBaseAddress;
548 UINT32 SystemVectorBase;
549 UINT8 GicVersion;
550 UINT8 Reserved2[3];
551} EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE;
552
553///
554/// GIC Version
555///
556#define EFI_ACPI_6_4_GIC_V1 0x01
557#define EFI_ACPI_6_4_GIC_V2 0x02
558#define EFI_ACPI_6_4_GIC_V3 0x03
559#define EFI_ACPI_6_4_GIC_V4 0x04
560
561///
562/// GIC MSI Frame Structure
563///
564typedef struct {
565 UINT8 Type;
566 UINT8 Length;
567 UINT16 Reserved1;
568 UINT32 GicMsiFrameId;
569 UINT64 PhysicalBaseAddress;
570 UINT32 Flags;
571 UINT16 SPICount;
572 UINT16 SPIBase;
573} EFI_ACPI_6_4_GIC_MSI_FRAME_STRUCTURE;
574
575///
576/// GIC MSI Frame Flags. All other bits are reserved and must be 0.
577///
578#define EFI_ACPI_6_4_SPI_COUNT_BASE_SELECT BIT0
579
580///
581/// GICR Structure
582///
583typedef struct {
584 UINT8 Type;
585 UINT8 Length;
586 UINT16 Reserved;
587 UINT64 DiscoveryRangeBaseAddress;
588 UINT32 DiscoveryRangeLength;
589} EFI_ACPI_6_4_GICR_STRUCTURE;
590
591///
592/// GIC Interrupt Translation Service Structure
593///
594typedef struct {
595 UINT8 Type;
596 UINT8 Length;
597 UINT16 Reserved;
598 UINT32 GicItsId;
599 UINT64 PhysicalBaseAddress;
600 UINT32 Reserved2;
601} EFI_ACPI_6_4_GIC_ITS_STRUCTURE;
602
603///
604/// Multiprocessor Wakeup Structure
605///
606typedef struct {
607 UINT8 Type;
608 UINT8 Length;
609 UINT16 MailBoxVersion;
610 UINT32 Reserved;
611 UINT64 MailBoxAddress;
612} EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_STRUCTURE;
613
614///
615/// Multiprocessor Wakeup Mailbox Structure
616///
617typedef struct {
618 UINT16 Command;
619 UINT16 Reserved;
620 UINT32 AcpiId;
621 UINT64 WakeupVector;
622 UINT8 ReservedForOs[2032];
623 UINT8 ReservedForFirmware[2048];
624} EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_STRUCTURE;
625
626#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_NOOP 0x0000
627#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_WAKEUP 0x0001
628
629///
630/// Smart Battery Description Table (SBST)
631///
632typedef struct {
633 EFI_ACPI_DESCRIPTION_HEADER Header;
634 UINT32 WarningEnergyLevel;
635 UINT32 LowEnergyLevel;
636 UINT32 CriticalEnergyLevel;
637} EFI_ACPI_6_4_SMART_BATTERY_DESCRIPTION_TABLE;
638
639///
640/// SBST Version (as defined in ACPI 6.4 spec.)
641///
642#define EFI_ACPI_6_4_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
643
644///
645/// Embedded Controller Boot Resources Table (ECDT)
646/// The table is followed by a null terminated ASCII string that contains
647/// a fully qualified reference to the name space object.
648///
649typedef struct {
650 EFI_ACPI_DESCRIPTION_HEADER Header;
651 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EcControl;
652 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EcData;
653 UINT32 Uid;
654 UINT8 GpeBit;
655} EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
656
657///
658/// ECDT Version (as defined in ACPI 6.4 spec.)
659///
660#define EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
661
662///
663/// System Resource Affinity Table (SRAT). The rest of the table
664/// must be defined in a platform specific manner.
665///
666typedef struct {
667 EFI_ACPI_DESCRIPTION_HEADER Header;
668 UINT32 Reserved1; ///< Must be set to 1
669 UINT64 Reserved2;
670} EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
671
672///
673/// SRAT Version (as defined in ACPI 6.4 spec.)
674///
675#define EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
676
677//
678// SRAT structure types.
679// All other values between 0x06 an 0xFF are reserved and
680// will be ignored by OSPM.
681//
682#define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
683#define EFI_ACPI_6_4_MEMORY_AFFINITY 0x01
684#define EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
685#define EFI_ACPI_6_4_GICC_AFFINITY 0x03
686#define EFI_ACPI_6_4_GIC_ITS_AFFINITY 0x04
687#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY 0x05
688
689///
690/// Processor Local APIC/SAPIC Affinity Structure Definition
691///
692typedef struct {
693 UINT8 Type;
694 UINT8 Length;
695 UINT8 ProximityDomain7To0;
696 UINT8 ApicId;
697 UINT32 Flags;
698 UINT8 LocalSapicEid;
699 UINT8 ProximityDomain31To8[3];
700 UINT32 ClockDomain;
701} EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
702
703///
704/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
705///
706#define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
707
708///
709/// Memory Affinity Structure Definition
710///
711typedef struct {
712 UINT8 Type;
713 UINT8 Length;
714 UINT32 ProximityDomain;
715 UINT16 Reserved1;
716 UINT32 AddressBaseLow;
717 UINT32 AddressBaseHigh;
718 UINT32 LengthLow;
719 UINT32 LengthHigh;
720 UINT32 Reserved2;
721 UINT32 Flags;
722 UINT64 Reserved3;
723} EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE;
724
725//
726// Memory Flags. All other bits are reserved and must be 0.
727//
728#define EFI_ACPI_6_4_MEMORY_ENABLED (1 << 0)
729#define EFI_ACPI_6_4_MEMORY_HOT_PLUGGABLE (1 << 1)
730#define EFI_ACPI_6_4_MEMORY_NONVOLATILE (1 << 2)
731
732///
733/// Processor Local x2APIC Affinity Structure Definition
734///
735typedef struct {
736 UINT8 Type;
737 UINT8 Length;
738 UINT8 Reserved1[2];
739 UINT32 ProximityDomain;
740 UINT32 X2ApicId;
741 UINT32 Flags;
742 UINT32 ClockDomain;
743 UINT8 Reserved2[4];
744} EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
745
746///
747/// GICC Affinity Structure Definition
748///
749typedef struct {
750 UINT8 Type;
751 UINT8 Length;
752 UINT32 ProximityDomain;
753 UINT32 AcpiProcessorUid;
754 UINT32 Flags;
755 UINT32 ClockDomain;
756} EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE;
757
758///
759/// GICC Flags. All other bits are reserved and must be 0.
760///
761#define EFI_ACPI_6_4_GICC_ENABLED (1 << 0)
762
763///
764/// GIC Interrupt Translation Service (ITS) Affinity Structure Definition
765///
766typedef struct {
767 UINT8 Type;
768 UINT8 Length;
769 UINT32 ProximityDomain;
770 UINT8 Reserved[2];
771 UINT32 ItsId;
772} EFI_ACPI_6_4_GIC_ITS_AFFINITY_STRUCTURE;
773
774//
775// Generic Initiator Affinity Structure Device Handle Types
776// All other values between 0x02 an 0xFF are reserved and
777// will be ignored by OSPM.
778//
779#define EFI_ACPI_6_4_ACPI_DEVICE_HANDLE 0x00
780#define EFI_ACPI_6_4_PCI_DEVICE_HANDLE 0x01
781
782///
783/// Device Handle - ACPI
784///
785typedef struct {
786 UINT64 AcpiHid;
787 UINT32 AcpiUid;
788 UINT8 Reserved[4];
789} EFI_ACPI_6_4_DEVICE_HANDLE_ACPI;
790
791///
792/// Device Handle - PCI
793///
794typedef struct {
795 UINT16 PciSegment;
796 UINT16 PciBdfNumber;
797 UINT8 Reserved[12];
798} EFI_ACPI_6_4_DEVICE_HANDLE_PCI;
799
800///
801/// Device Handle
802///
803typedef union {
804 EFI_ACPI_6_4_DEVICE_HANDLE_ACPI Acpi;
805 EFI_ACPI_6_4_DEVICE_HANDLE_PCI Pci;
806} EFI_ACPI_6_4_DEVICE_HANDLE;
807
808///
809/// Generic Initiator Affinity Structure
810///
811typedef struct {
812 UINT8 Type;
813 UINT8 Length;
814 UINT8 Reserved1;
815 UINT8 DeviceHandleType;
816 UINT32 ProximityDomain;
817 EFI_ACPI_6_4_DEVICE_HANDLE DeviceHandle;
818 UINT32 Flags;
819 UINT8 Reserved2[4];
820} EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE;
821
822///
823/// Generic Initiator Affinity Structure Flags. All other bits are reserved
824/// and must be 0.
825///
826#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ENABLED BIT0
827#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ARCHITECTURAL_TRANSACTIONS BIT1
828
829///
830/// System Locality Distance Information Table (SLIT).
831/// The rest of the table is a matrix.
832///
833typedef struct {
834 EFI_ACPI_DESCRIPTION_HEADER Header;
835 UINT64 NumberOfSystemLocalities;
836} EFI_ACPI_6_4_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
837
838///
839/// SLIT Version (as defined in ACPI 6.4 spec.)
840///
841#define EFI_ACPI_6_4_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
842
843///
844/// Corrected Platform Error Polling Table (CPEP)
845///
846typedef struct {
847 EFI_ACPI_DESCRIPTION_HEADER Header;
848 UINT8 Reserved[8];
849} EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
850
851///
852/// CPEP Version (as defined in ACPI 6.4 spec.)
853///
854#define EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
855
856//
857// CPEP processor structure types.
858//
859#define EFI_ACPI_6_4_CPEP_PROCESSOR_APIC_SAPIC 0x00
860
861///
862/// Corrected Platform Error Polling Processor Structure Definition
863///
864typedef struct {
865 UINT8 Type;
866 UINT8 Length;
867 UINT8 ProcessorId;
868 UINT8 ProcessorEid;
869 UINT32 PollingInterval;
870} EFI_ACPI_6_4_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
871
872///
873/// Maximum System Characteristics Table (MSCT)
874///
875typedef struct {
876 EFI_ACPI_DESCRIPTION_HEADER Header;
877 UINT32 OffsetProxDomInfo;
878 UINT32 MaximumNumberOfProximityDomains;
879 UINT32 MaximumNumberOfClockDomains;
880 UINT64 MaximumPhysicalAddress;
881} EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
882
883///
884/// MSCT Version (as defined in ACPI 6.4 spec.)
885///
886#define EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
887
888///
889/// Maximum Proximity Domain Information Structure Definition
890///
891typedef struct {
892 UINT8 Revision;
893 UINT8 Length;
894 UINT32 ProximityDomainRangeLow;
895 UINT32 ProximityDomainRangeHigh;
896 UINT32 MaximumProcessorCapacity;
897 UINT64 MaximumMemoryCapacity;
898} EFI_ACPI_6_4_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
899
900///
901/// ACPI RAS Feature Table definition.
902///
903typedef struct {
904 EFI_ACPI_DESCRIPTION_HEADER Header;
905 UINT8 PlatformCommunicationChannelIdentifier[12];
906} EFI_ACPI_6_4_RAS_FEATURE_TABLE;
907
908///
909/// RASF Version (as defined in ACPI 6.4 spec.)
910///
911#define EFI_ACPI_6_4_RAS_FEATURE_TABLE_REVISION 0x01
912
913///
914/// ACPI RASF Platform Communication Channel Shared Memory Region definition.
915///
916typedef struct {
917 UINT32 Signature;
918 UINT16 Command;
919 UINT16 Status;
920 UINT16 Version;
921 UINT8 RASCapabilities[16];
922 UINT8 SetRASCapabilities[16];
923 UINT16 NumberOfRASFParameterBlocks;
924 UINT32 SetRASCapabilitiesStatus;
925} EFI_ACPI_6_4_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
926
927///
928/// ACPI RASF PCC command code
929///
930#define EFI_ACPI_6_4_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
931
932///
933/// ACPI RASF Platform RAS Capabilities
934///
935#define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED BIT0
936#define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED_AND_EXPOSED_TO_SOFTWARE BIT1
937#define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_CPU_CACHE_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT2
938#define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_MEMORY_CONTROLLER_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT3
939#define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_HARDWARE_MIRRORING BIT4
940
941///
942/// ACPI RASF Parameter Block structure for PATROL_SCRUB
943///
944typedef struct {
945 UINT16 Type;
946 UINT16 Version;
947 UINT16 Length;
948 UINT16 PatrolScrubCommand;
949 UINT64 RequestedAddressRange[2];
950 UINT64 ActualAddressRange[2];
951 UINT16 Flags;
952 UINT8 RequestedSpeed;
953} EFI_ACPI_6_4_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
954
955///
956/// ACPI RASF Patrol Scrub command
957///
958#define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
959#define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
960#define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
961
962///
963/// Memory Power State Table definition.
964///
965typedef struct {
966 EFI_ACPI_DESCRIPTION_HEADER Header;
967 UINT8 PlatformCommunicationChannelIdentifier;
968 UINT8 Reserved[3];
969 // Memory Power Node Structure
970 // Memory Power State Characteristics
971} EFI_ACPI_6_4_MEMORY_POWER_STATUS_TABLE;
972
973///
974/// MPST Version (as defined in ACPI 6.4 spec.)
975///
976#define EFI_ACPI_6_4_MEMORY_POWER_STATE_TABLE_REVISION 0x01
977
978///
979/// MPST Platform Communication Channel Shared Memory Region definition.
980///
981typedef struct {
982 UINT32 Signature;
983 UINT16 Command;
984 UINT16 Status;
985 UINT32 MemoryPowerCommandRegister;
986 UINT32 MemoryPowerStatusRegister;
987 UINT32 PowerStateId;
988 UINT32 MemoryPowerNodeId;
989 UINT64 MemoryEnergyConsumed;
990 UINT64 ExpectedAveragePowerComsuned;
991} EFI_ACPI_6_4_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
992
993///
994/// ACPI MPST PCC command code
995///
996#define EFI_ACPI_6_4_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
997
998///
999/// ACPI MPST Memory Power command
1000///
1001#define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
1002#define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
1003#define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
1004#define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
1005
1006///
1007/// MPST Memory Power Node Table
1008///
1009typedef struct {
1010 UINT8 PowerStateValue;
1011 UINT8 PowerStateInformationIndex;
1012} EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE;
1013
1014typedef struct {
1015 UINT8 Flag;
1016 UINT8 Reserved;
1017 UINT16 MemoryPowerNodeId;
1018 UINT32 Length;
1019 UINT64 AddressBase;
1020 UINT64 AddressLength;
1021 UINT32 NumberOfPowerStates;
1022 UINT32 NumberOfPhysicalComponents;
1023 // EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
1024 // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
1025} EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE;
1026
1027#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
1028#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
1029#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
1030
1031typedef struct {
1032 UINT16 MemoryPowerNodeCount;
1033 UINT8 Reserved[2];
1034} EFI_ACPI_6_4_MPST_MEMORY_POWER_NODE_TABLE;
1035
1036///
1037/// MPST Memory Power State Characteristics Table
1038///
1039typedef struct {
1040 UINT8 PowerStateStructureID;
1041 UINT8 Flag;
1042 UINT16 Reserved;
1043 UINT32 AveragePowerConsumedInMPS0;
1044 UINT32 RelativePowerSavingToMPS0;
1045 UINT64 ExitLatencyToMPS0;
1046} EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
1047
1048#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
1049#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
1050#define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
1051
1052typedef struct {
1053 UINT16 MemoryPowerStateCharacteristicsCount;
1054 UINT8 Reserved[2];
1055} EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
1056
1057///
1058/// Platform Memory Topology Table definition.
1059///
1060typedef struct {
1061 EFI_ACPI_DESCRIPTION_HEADER Header;
1062 UINT32 NumberOfMemoryDevices;
1063 // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices];
1064} EFI_ACPI_6_4_PLATFORM_MEMORY_TOPOLOGY_TABLE;
1065
1066///
1067/// PMTT Version (as defined in ACPI 6.4 spec.)
1068///
1069#define EFI_ACPI_6_4_MEMORY_TOPOLOGY_TABLE_REVISION 0x02
1070
1071///
1072/// Common Memory Device.
1073///
1074typedef struct {
1075 UINT8 Type;
1076 UINT8 Reserved;
1077 UINT16 Length;
1078 UINT16 Flags;
1079 UINT16 Reserved1;
1080 UINT32 NumberOfMemoryDevices;
1081 // UINT8 TypeSpecificData[];
1082 // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices];
1083} EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE;
1084
1085///
1086/// Memory Device Type.
1087///
1088#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_SOCKET 0x0
1089#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_MEMORY_CONTROLLER 0x1
1090#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_DIMM 0x2
1091#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_VENDOR_SPECIFIC_TYPE 0xFF
1092
1093///
1094/// Socket Type Data.
1095///
1096typedef struct {
1097 EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1098 UINT16 SocketIdentifier;
1099 UINT16 Reserved;
1100 // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1101} EFI_ACPI_6_4_PMTT_SOCKET_TYPE_DATA;
1102
1103///
1104/// Memory Controller Type Data.
1105///
1106typedef struct {
1107 EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1108 UINT16 MemoryControllerIdentifier;
1109 UINT16 Reserved;
1110 // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1111} EFI_ACPI_6_4_PMTT_MEMORY_CONTROLLER_TYPE_DATA;
1112
1113///
1114/// DIMM Type Specific Data.
1115///
1116typedef struct {
1117 EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1118 UINT32 SmbiosHandle;
1119} EFI_ACPI_6_4_PMTT_DIMM_TYPE_SPECIFIC_DATA;
1120
1121///
1122/// Vendor Specific Type Data.
1123///
1124typedef struct {
1125 EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader;
1126 UINT8 TypeUuid[16];
1127 // EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA VendorSpecificData[];
1128 // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[];
1129} EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA;
1130
1131///
1132/// Boot Graphics Resource Table definition.
1133///
1134typedef struct {
1135 EFI_ACPI_DESCRIPTION_HEADER Header;
1136 ///
1137 /// 2-bytes (16 bit) version ID. This value must be 1.
1138 ///
1139 UINT16 Version;
1140 ///
1141 /// 1-byte status field indicating current status about the table.
1142 /// Bits[7:3] = Reserved (must be zero)
1143 /// Bits[2:1] = Orientation Offset. These bits describe the clockwise
1144 /// degree offset from the image's default orientation.
1145 /// [00] = 0, no offset
1146 /// [01] = 90
1147 /// [10] = 180
1148 /// [11] = 270
1149 /// Bit [0] = Displayed. A one indicates the boot image graphic is
1150 /// displayed.
1151 ///
1152 UINT8 Status;
1153 ///
1154 /// 1-byte enumerated type field indicating format of the image.
1155 /// 0 = Bitmap
1156 /// 1 - 255 Reserved (for future use)
1157 ///
1158 UINT8 ImageType;
1159 ///
1160 /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
1161 /// of the image bitmap.
1162 ///
1163 UINT64 ImageAddress;
1164 ///
1165 /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
1166 /// (X, Y) display offset of the top left corner of the boot image.
1167 /// The top left corner of the display is at offset (0, 0).
1168 ///
1169 UINT32 ImageOffsetX;
1170 ///
1171 /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
1172 /// (X, Y) display offset of the top left corner of the boot image.
1173 /// The top left corner of the display is at offset (0, 0).
1174 ///
1175 UINT32 ImageOffsetY;
1176} EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE;
1177
1178///
1179/// BGRT Revision
1180///
1181#define EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
1182
1183///
1184/// BGRT Version
1185///
1186#define EFI_ACPI_6_4_BGRT_VERSION 0x01
1187
1188///
1189/// BGRT Status
1190///
1191#define EFI_ACPI_6_4_BGRT_STATUS_NOT_DISPLAYED 0x00
1192#define EFI_ACPI_6_4_BGRT_STATUS_DISPLAYED 0x01
1193
1194///
1195/// BGRT Image Type
1196///
1197#define EFI_ACPI_6_4_BGRT_IMAGE_TYPE_BMP 0x00
1198
1199///
1200/// FPDT Version (as defined in ACPI 6.4 spec.)
1201///
1202#define EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
1203
1204///
1205/// FPDT Performance Record Types
1206///
1207#define EFI_ACPI_6_4_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
1208#define EFI_ACPI_6_4_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
1209
1210///
1211/// FPDT Performance Record Revision
1212///
1213#define EFI_ACPI_6_4_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
1214#define EFI_ACPI_6_4_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
1215
1216///
1217/// FPDT Runtime Performance Record Types
1218///
1219#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
1220#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
1221#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
1222
1223///
1224/// FPDT Runtime Performance Record Revision
1225///
1226#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
1227#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
1228#define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
1229
1230///
1231/// FPDT Performance Record header
1232///
1233typedef struct {
1234 UINT16 Type;
1235 UINT8 Length;
1236 UINT8 Revision;
1237} EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER;
1238
1239///
1240/// FPDT Performance Table header
1241///
1242typedef struct {
1243 UINT32 Signature;
1244 UINT32 Length;
1245} EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER;
1246
1247///
1248/// FPDT Firmware Basic Boot Performance Pointer Record Structure
1249///
1250typedef struct {
1251 EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header;
1252 UINT32 Reserved;
1253 ///
1254 /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
1255 ///
1256 UINT64 BootPerformanceTablePointer;
1257} EFI_ACPI_6_4_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
1258
1259///
1260/// FPDT S3 Performance Table Pointer Record Structure
1261///
1262typedef struct {
1263 EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header;
1264 UINT32 Reserved;
1265 ///
1266 /// 64-bit processor-relative physical address of the S3 Performance Table.
1267 ///
1268 UINT64 S3PerformanceTablePointer;
1269} EFI_ACPI_6_4_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
1270
1271///
1272/// FPDT Firmware Basic Boot Performance Record Structure
1273///
1274typedef struct {
1275 EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header;
1276 UINT32 Reserved;
1277 ///
1278 /// Timer value logged at the beginning of firmware image execution.
1279 /// This may not always be zero or near zero.
1280 ///
1281 UINT64 ResetEnd;
1282 ///
1283 /// Timer value logged just prior to loading the OS boot loader into memory.
1284 /// For non-UEFI compatible boots, this field must be zero.
1285 ///
1286 UINT64 OsLoaderLoadImageStart;
1287 ///
1288 /// Timer value logged just prior to launching the previously loaded OS boot loader image.
1289 /// For non-UEFI compatible boots, the timer value logged will be just prior
1290 /// to the INT 19h handler invocation.
1291 ///
1292 UINT64 OsLoaderStartImageStart;
1293 ///
1294 /// Timer value logged at the point when the OS loader calls the
1295 /// ExitBootServices function for UEFI compatible firmware.
1296 /// For non-UEFI compatible boots, this field must be zero.
1297 ///
1298 UINT64 ExitBootServicesEntry;
1299 ///
1300 /// Timer value logged at the point just prior towhen the OS loader gaining
1301 /// control back from calls the ExitBootServices function for UEFI compatible firmware.
1302 /// For non-UEFI compatible boots, this field must be zero.
1303 ///
1304 UINT64 ExitBootServicesExit;
1305} EFI_ACPI_6_4_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
1306
1307///
1308/// FPDT Firmware Basic Boot Performance Table signature
1309///
1310#define EFI_ACPI_6_4_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
1311
1312//
1313// FPDT Firmware Basic Boot Performance Table
1314//
1315typedef struct {
1316 EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER Header;
1317 //
1318 // one or more Performance Records.
1319 //
1320} EFI_ACPI_6_4_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
1321
1322///
1323/// FPDT "S3PT" S3 Performance Table
1324///
1325#define EFI_ACPI_6_4_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
1326
1327//
1328// FPDT Firmware S3 Boot Performance Table
1329//
1330typedef struct {
1331 EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER Header;
1332 //
1333 // one or more Performance Records.
1334 //
1335} EFI_ACPI_6_4_FPDT_FIRMWARE_S3_BOOT_TABLE;
1336
1337///
1338/// FPDT Basic S3 Resume Performance Record
1339///
1340typedef struct {
1341 EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header;
1342 ///
1343 /// A count of the number of S3 resume cycles since the last full boot sequence.
1344 ///
1345 UINT32 ResumeCount;
1346 ///
1347 /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
1348 /// OS waking vector. Only the most recent resume cycle's time is retained.
1349 ///
1350 UINT64 FullResume;
1351 ///
1352 /// Average timer value of all resume cycles logged since the last full boot
1353 /// sequence, including the most recent resume. Note that the entire log of
1354 /// timer values does not need to be retained in order to calculate this average.
1355 ///
1356 UINT64 AverageResume;
1357} EFI_ACPI_6_4_FPDT_S3_RESUME_RECORD;
1358
1359///
1360/// FPDT Basic S3 Suspend Performance Record
1361///
1362typedef struct {
1363 EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header;
1364 ///
1365 /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
1366 /// Only the most recent suspend cycle's timer value is retained.
1367 ///
1368 UINT64 SuspendStart;
1369 ///
1370 /// Timer value recorded at the final firmware write to SLP_TYP (or other
1371 /// mechanism) used to trigger hardware entry to S3.
1372 /// Only the most recent suspend cycle's timer value is retained.
1373 ///
1374 UINT64 SuspendEnd;
1375} EFI_ACPI_6_4_FPDT_S3_SUSPEND_RECORD;
1376
1377///
1378/// Firmware Performance Record Table definition.
1379///
1380typedef struct {
1381 EFI_ACPI_DESCRIPTION_HEADER Header;
1382} EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_RECORD_TABLE;
1383
1384///
1385/// Generic Timer Description Table definition.
1386///
1387typedef struct {
1388 EFI_ACPI_DESCRIPTION_HEADER Header;
1389 UINT64 CntControlBasePhysicalAddress;
1390 UINT32 Reserved;
1391 UINT32 SecurePL1TimerGSIV;
1392 UINT32 SecurePL1TimerFlags;
1393 UINT32 NonSecurePL1TimerGSIV;
1394 UINT32 NonSecurePL1TimerFlags;
1395 UINT32 VirtualTimerGSIV;
1396 UINT32 VirtualTimerFlags;
1397 UINT32 NonSecurePL2TimerGSIV;
1398 UINT32 NonSecurePL2TimerFlags;
1399 UINT64 CntReadBasePhysicalAddress;
1400 UINT32 PlatformTimerCount;
1401 UINT32 PlatformTimerOffset;
1402 UINT32 VirtualPL2TimerGSIV;
1403 UINT32 VirtualPL2TimerFlags;
1404} EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE;
1405
1406///
1407/// GTDT Version (as defined in ACPI 6.4 spec.)
1408///
1409#define EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x03
1410
1411///
1412/// Timer Flags. All other bits are reserved and must be 0.
1413///
1414#define EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
1415#define EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1416#define EFI_ACPI_6_4_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2
1417
1418///
1419/// Platform Timer Type
1420///
1421#define EFI_ACPI_6_4_GTDT_GT_BLOCK 0
1422#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG 1
1423
1424///
1425/// GT Block Structure
1426///
1427typedef struct {
1428 UINT8 Type;
1429 UINT16 Length;
1430 UINT8 Reserved;
1431 UINT64 CntCtlBase;
1432 UINT32 GTBlockTimerCount;
1433 UINT32 GTBlockTimerOffset;
1434} EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE;
1435
1436///
1437/// GT Block Timer Structure
1438///
1439typedef struct {
1440 UINT8 GTFrameNumber;
1441 UINT8 Reserved[3];
1442 UINT64 CntBaseX;
1443 UINT64 CntEL0BaseX;
1444 UINT32 GTxPhysicalTimerGSIV;
1445 UINT32 GTxPhysicalTimerFlags;
1446 UINT32 GTxVirtualTimerGSIV;
1447 UINT32 GTxVirtualTimerFlags;
1448 UINT32 GTxCommonFlags;
1449} EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE;
1450
1451///
1452/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0.
1453///
1454#define EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
1455#define EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1456
1457///
1458/// Common Flags Flags. All other bits are reserved and must be 0.
1459///
1460#define EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0
1461#define EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1
1462
1463///
1464/// Arm Generic Watchdog Structure
1465///
1466typedef struct {
1467 UINT8 Type;
1468 UINT16 Length;
1469 UINT8 Reserved;
1470 UINT64 RefreshFramePhysicalAddress;
1471 UINT64 WatchdogControlFramePhysicalAddress;
1472 UINT32 WatchdogTimerGSIV;
1473 UINT32 WatchdogTimerFlags;
1474} EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE;
1475
1476///
1477/// Arm Generic Watchdog Timer Flags. All other bits are reserved and must be 0.
1478///
1479#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0
1480#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1
1481#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2
1482
1483//
1484// NVDIMM Firmware Interface Table definition.
1485//
1486typedef struct {
1487 EFI_ACPI_DESCRIPTION_HEADER Header;
1488 UINT32 Reserved;
1489} EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE;
1490
1491//
1492// NFIT Version (as defined in ACPI 6.4 spec.)
1493//
1494#define EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1
1495
1496//
1497// Definition for NFIT Table Structure Types
1498//
1499#define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0
1500#define EFI_ACPI_6_4_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE_TYPE 1
1501#define EFI_ACPI_6_4_NFIT_INTERLEAVE_STRUCTURE_TYPE 2
1502#define EFI_ACPI_6_4_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3
1503#define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4
1504#define EFI_ACPI_6_4_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5
1505#define EFI_ACPI_6_4_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6
1506#define EFI_ACPI_6_4_NFIT_PLATFORM_CAPABILITIES_STRUCTURE_TYPE 7
1507
1508//
1509// Definition for NFIT Structure Header
1510//
1511typedef struct {
1512 UINT16 Type;
1513 UINT16 Length;
1514} EFI_ACPI_6_4_NFIT_STRUCTURE_HEADER;
1515
1516//
1517// Definition for System Physical Address Range Structure
1518//
1519#define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0
1520#define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1
1521#define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_SPA_LOCATION_COOKIE_VALID BIT2
1522
1523#define EFI_ACPI_6_4_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}
1524#define EFI_ACPI_6_4_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}
1525#define EFI_ACPI_6_4_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}
1526#define EFI_ACPI_6_4_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }}
1527#define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
1528#define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
1529#define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
1530#define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
1531
1532typedef struct {
1533 UINT16 Type;
1534 UINT16 Length;
1535 UINT16 SPARangeStructureIndex;
1536 UINT16 Flags;
1537 UINT32 Reserved_8;
1538 UINT32 ProximityDomain;
1539 GUID AddressRangeTypeGUID;
1540 UINT64 SystemPhysicalAddressRangeBase;
1541 UINT64 SystemPhysicalAddressRangeLength;
1542 UINT64 AddressRangeMemoryMappingAttribute;
1543 UINT64 SPALocationCookie;
1544} EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE;
1545
1546//
1547// Definition for Memory Device to System Physical Address Range Mapping Structure
1548//
1549typedef struct {
1550 UINT32 DIMMNumber : 4;
1551 UINT32 MemoryChannelNumber : 4;
1552 UINT32 MemoryControllerID : 4;
1553 UINT32 SocketID : 4;
1554 UINT32 NodeControllerID : 12;
1555 UINT32 Reserved_28 : 4;
1556} EFI_ACPI_6_4_NFIT_DEVICE_HANDLE;
1557
1558#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0
1559#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1
1560#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2
1561#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3
1562#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4
1563#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5
1564#define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_NOT_MAP_NVDIMM_TO_SPA BIT6
1565
1566typedef struct {
1567 UINT16 Type;
1568 UINT16 Length;
1569 EFI_ACPI_6_4_NFIT_DEVICE_HANDLE NFITDeviceHandle;
1570 UINT16 NVDIMMPhysicalID;
1571 UINT16 NVDIMMRegionID;
1572 UINT16 SPARangeStructureIndex;
1573 UINT16 NVDIMMControlRegionStructureIndex;
1574 UINT64 NVDIMMRegionSize;
1575 UINT64 RegionOffset;
1576 UINT64 NVDIMMPhysicalAddressRegionBase;
1577 UINT16 InterleaveStructureIndex;
1578 UINT16 InterleaveWays;
1579 UINT16 NVDIMMStateFlags;
1580 UINT16 Reserved_46;
1581} EFI_ACPI_6_4_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE;
1582
1583//
1584// Definition for Interleave Structure
1585//
1586typedef struct {
1587 UINT16 Type;
1588 UINT16 Length;
1589 UINT16 InterleaveStructureIndex;
1590 UINT16 Reserved_6;
1591 UINT32 NumberOfLines;
1592 UINT32 LineSize;
1593 // UINT32 LineOffset[NumberOfLines];
1594} EFI_ACPI_6_4_NFIT_INTERLEAVE_STRUCTURE;
1595
1596//
1597// Definition for SMBIOS Management Information Structure
1598//
1599typedef struct {
1600 UINT16 Type;
1601 UINT16 Length;
1602 UINT32 Reserved_4;
1603 // UINT8 Data[];
1604} EFI_ACPI_6_4_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE;
1605
1606//
1607// Definition for NVDIMM Control Region Structure
1608//
1609#define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_VALID_FIELDS_MANUFACTURING BIT0
1610
1611#define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0
1612
1613typedef struct {
1614 UINT16 Type;
1615 UINT16 Length;
1616 UINT16 NVDIMMControlRegionStructureIndex;
1617 UINT16 VendorID;
1618 UINT16 DeviceID;
1619 UINT16 RevisionID;
1620 UINT16 SubsystemVendorID;
1621 UINT16 SubsystemDeviceID;
1622 UINT16 SubsystemRevisionID;
1623 UINT8 ValidFields;
1624 UINT8 ManufacturingLocation;
1625 UINT16 ManufacturingDate;
1626 UINT8 Reserved_22[2];
1627 UINT32 SerialNumber;
1628 UINT16 RegionFormatInterfaceCode;
1629 UINT16 NumberOfBlockControlWindows;
1630 UINT64 SizeOfBlockControlWindow;
1631 UINT64 CommandRegisterOffsetInBlockControlWindow;
1632 UINT64 SizeOfCommandRegisterInBlockControlWindows;
1633 UINT64 StatusRegisterOffsetInBlockControlWindow;
1634 UINT64 SizeOfStatusRegisterInBlockControlWindows;
1635 UINT16 NVDIMMControlRegionFlag;
1636 UINT8 Reserved_74[6];
1637} EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE;
1638
1639//
1640// Definition for NVDIMM Block Data Window Region Structure
1641//
1642typedef struct {
1643 UINT16 Type;
1644 UINT16 Length;
1645 UINT16 NVDIMMControlRegionStructureIndex;
1646 UINT16 NumberOfBlockDataWindows;
1647 UINT64 BlockDataWindowStartOffset;
1648 UINT64 SizeOfBlockDataWindow;
1649 UINT64 BlockAccessibleMemoryCapacity;
1650 UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory;
1651} EFI_ACPI_6_4_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE;
1652
1653//
1654// Definition for Flush Hint Address Structure
1655//
1656typedef struct {
1657 UINT16 Type;
1658 UINT16 Length;
1659 EFI_ACPI_6_4_NFIT_DEVICE_HANDLE NFITDeviceHandle;
1660 UINT16 NumberOfFlushHintAddresses;
1661 UINT8 Reserved_10[6];
1662 // UINT64 FlushHintAddress[NumberOfFlushHintAddresses];
1663} EFI_ACPI_6_4_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE;
1664
1665//
1666// Definition for Platform Capabilities Structure
1667//
1668typedef struct {
1669 UINT16 Type;
1670 UINT16 Length;
1671 UINT8 HighestValidCapability;
1672 UINT8 Reserved_5[3];
1673 UINT32 Capabilities;
1674 UINT8 Reserved_12[4];
1675} EFI_ACPI_6_4_NFIT_PLATFORM_CAPABILITIES_STRUCTURE;
1676
1677#define EFI_ACPI_6_4_NFIT_PLATFORM_CAPABILITY_CPU_CACHE_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT0
1678#define EFI_ACPI_6_4_NFIT_PLATFORM_CAPABILITY_MEMORY_CONTROLLER_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT1
1679#define EFI_ACPI_6_4_NFIT_PLATFORM_CAPABILITY_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_HARDWARE_MIRRORING BIT2
1680
1681///
1682/// Secure DEVices Table (SDEV)
1683///
1684typedef struct {
1685 EFI_ACPI_DESCRIPTION_HEADER Header;
1686} EFI_ACPI_6_4_SECURE_DEVICES_TABLE_HEADER;
1687
1688///
1689/// SDEV Revision (as defined in ACPI 6.4 spec.)
1690///
1691#define EFI_ACPI_6_4_SECURE_DEVICES_TABLE_REVISION 0x01
1692
1693///
1694/// Secure Device types
1695///
1696#define EFI_ACPI_6_4_SDEV_TYPE_ACPI_NAMESPACE_DEVICE 0x00
1697#define EFI_ACPI_6_4_SDEV_TYPE_PCIE_ENDPOINT_DEVICE 0x01
1698
1699///
1700/// Secure Device flags
1701///
1702#define EFI_ACPI_6_4_SDEV_FLAG_ALLOW_HANDOFF BIT0
1703#define EFI_ACPI_6_4_SDEV_FLAG_SECURE_ACCESS_COMPONENTS_PRESENT BIT1
1704
1705///
1706/// SDEV Structure Header
1707///
1708typedef struct {
1709 UINT8 Type;
1710 UINT8 Flags;
1711 UINT16 Length;
1712} EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER;
1713
1714///
1715/// ACPI_NAMESPACE_DEVICE based Secure Device Structure
1716///
1717typedef struct {
1718 EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header;
1719 UINT16 DeviceIdentifierOffset;
1720 UINT16 DeviceIdentifierLength;
1721 UINT16 VendorSpecificDataOffset;
1722 UINT16 VendorSpecificDataLength;
1723 UINT16 SecureAccessComponentsOffset;
1724 UINT16 SecureAccessComponentsLength;
1725} EFI_ACPI_6_4_SDEV_STRUCTURE_ACPI_NAMESPACE_DEVICE;
1726
1727///
1728/// Secure Access Component Types
1729///
1730#define EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_TYPE_IDENTIFICATION 0x00
1731#define EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_TYPE_MEMORY 0x01
1732
1733///
1734/// Identification Based Secure Access Component
1735///
1736typedef struct {
1737 EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header;
1738 UINT16 HardwareIdentifierOffset;
1739 UINT16 HardwareIdentifierLength;
1740 UINT16 SubsystemIdentifierOffset;
1741 UINT16 SubsystemIdentifierLength;
1742 UINT16 HardwareRevision;
1743 UINT8 HardwareRevisionPresent;
1744 UINT8 ClassCodePresent;
1745 UINT8 PciCompatibleBaseClass;
1746 UINT8 PciCompatibleSubClass;
1747 UINT8 PciCompatibleProgrammingInterface;
1748} EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_IDENTIFICATION_STRUCTURE;
1749
1750///
1751/// Memory-based Secure Access Component
1752///
1753typedef struct {
1754 EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header;
1755 UINT32 Reserved;
1756 UINT64 MemoryAddressBase;
1757 UINT64 MemoryLength;
1758} EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_MEMORY_STRUCTURE;
1759
1760///
1761/// PCIe Endpoint Device based Secure Device Structure
1762///
1763typedef struct {
1764 EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header;
1765 UINT16 PciSegmentNumber;
1766 UINT16 StartBusNumber;
1767 UINT16 PciPathOffset;
1768 UINT16 PciPathLength;
1769 UINT16 VendorSpecificDataOffset;
1770 UINT16 VendorSpecificDataLength;
1771} EFI_ACPI_6_4_SDEV_STRUCTURE_PCIE_ENDPOINT_DEVICE;
1772
1773///
1774/// Boot Error Record Table (BERT)
1775///
1776typedef struct {
1777 EFI_ACPI_DESCRIPTION_HEADER Header;
1778 UINT32 BootErrorRegionLength;
1779 UINT64 BootErrorRegion;
1780} EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_HEADER;
1781
1782///
1783/// BERT Version (as defined in ACPI 6.4 spec.)
1784///
1785#define EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
1786
1787///
1788/// Boot Error Region Block Status Definition
1789///
1790typedef struct {
1791 UINT32 UncorrectableErrorValid : 1;
1792 UINT32 CorrectableErrorValid : 1;
1793 UINT32 MultipleUncorrectableErrors : 1;
1794 UINT32 MultipleCorrectableErrors : 1;
1795 UINT32 ErrorDataEntryCount : 10;
1796 UINT32 Reserved : 18;
1797} EFI_ACPI_6_4_ERROR_BLOCK_STATUS;
1798
1799///
1800/// Boot Error Region Definition
1801///
1802typedef struct {
1803 EFI_ACPI_6_4_ERROR_BLOCK_STATUS BlockStatus;
1804 UINT32 RawDataOffset;
1805 UINT32 RawDataLength;
1806 UINT32 DataLength;
1807 UINT32 ErrorSeverity;
1808} EFI_ACPI_6_4_BOOT_ERROR_REGION_STRUCTURE;
1809
1810//
1811// Boot Error Severity types
1812//
1813#define EFI_ACPI_6_4_ERROR_SEVERITY_RECOVERABLE 0x00
1814#define EFI_ACPI_6_4_ERROR_SEVERITY_FATAL 0x01
1815#define EFI_ACPI_6_4_ERROR_SEVERITY_CORRECTED 0x02
1816#define EFI_ACPI_6_4_ERROR_SEVERITY_NONE 0x03
1817//
1818// The term 'Correctable' is no longer being used as an error severity of the
1819// reported error since ACPI Specification Version 5.1 Errata B.
1820// The below macro is considered as deprecated and should no longer be used.
1821//
1822#define EFI_ACPI_6_4_ERROR_SEVERITY_CORRECTABLE 0x00
1823
1824///
1825/// Generic Error Data Entry Definition
1826///
1827typedef struct {
1828 UINT8 SectionType[16];
1829 UINT32 ErrorSeverity;
1830 UINT16 Revision;
1831 UINT8 ValidationBits;
1832 UINT8 Flags;
1833 UINT32 ErrorDataLength;
1834 UINT8 FruId[16];
1835 UINT8 FruText[20];
1836 UINT8 Timestamp[8];
1837} EFI_ACPI_6_4_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
1838
1839///
1840/// Generic Error Data Entry Version (as defined in ACPI 6.4 spec.)
1841///
1842#define EFI_ACPI_6_4_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0300
1843
1844///
1845/// HEST - Hardware Error Source Table
1846///
1847typedef struct {
1848 EFI_ACPI_DESCRIPTION_HEADER Header;
1849 UINT32 ErrorSourceCount;
1850} EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
1851
1852///
1853/// HEST Version (as defined in ACPI 6.4 spec.)
1854///
1855#define EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
1856
1857//
1858// Error Source structure types.
1859//
1860#define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
1861#define EFI_ACPI_6_4_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
1862#define EFI_ACPI_6_4_IA32_ARCHITECTURE_NMI_ERROR 0x02
1863#define EFI_ACPI_6_4_PCI_EXPRESS_ROOT_PORT_AER 0x06
1864#define EFI_ACPI_6_4_PCI_EXPRESS_DEVICE_AER 0x07
1865#define EFI_ACPI_6_4_PCI_EXPRESS_BRIDGE_AER 0x08
1866#define EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR 0x09
1867#define EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_VERSION_2 0x0A
1868#define EFI_ACPI_6_4_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK 0x0B
1869
1870//
1871// Error Source structure flags.
1872//
1873#define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
1874#define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
1875#define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_GHES_ASSIST (1 << 2)
1876
1877///
1878/// IA-32 Architecture Machine Check Exception Structure Definition
1879///
1880typedef struct {
1881 UINT16 Type;
1882 UINT16 SourceId;
1883 UINT8 Reserved0[2];
1884 UINT8 Flags;
1885 UINT8 Enabled;
1886 UINT32 NumberOfRecordsToPreAllocate;
1887 UINT32 MaxSectionsPerRecord;
1888 UINT64 GlobalCapabilityInitData;
1889 UINT64 GlobalControlInitData;
1890 UINT8 NumberOfHardwareBanks;
1891 UINT8 Reserved1[7];
1892} EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
1893
1894///
1895/// IA-32 Architecture Machine Check Bank Structure Definition
1896///
1897typedef struct {
1898 UINT8 BankNumber;
1899 UINT8 ClearStatusOnInitialization;
1900 UINT8 StatusDataFormat;
1901 UINT8 Reserved0;
1902 UINT32 ControlRegisterMsrAddress;
1903 UINT64 ControlInitData;
1904 UINT32 StatusRegisterMsrAddress;
1905 UINT32 AddressRegisterMsrAddress;
1906 UINT32 MiscRegisterMsrAddress;
1907} EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
1908
1909///
1910/// IA-32 Architecture Machine Check Bank Structure MCA data format
1911///
1912#define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
1913#define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
1914#define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
1915
1916//
1917// Hardware Error Notification types. All other values are reserved
1918//
1919#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
1920#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
1921#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
1922#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
1923#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
1924#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05
1925#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_MCE 0x06
1926#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07
1927#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEA 0x08
1928#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEI 0x09
1929#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_GSIV 0x0A
1930#define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION 0x0B
1931
1932///
1933/// Hardware Error Notification Configuration Write Enable Structure Definition
1934///
1935typedef struct {
1936 UINT16 Type : 1;
1937 UINT16 PollInterval : 1;
1938 UINT16 SwitchToPollingThresholdValue : 1;
1939 UINT16 SwitchToPollingThresholdWindow : 1;
1940 UINT16 ErrorThresholdValue : 1;
1941 UINT16 ErrorThresholdWindow : 1;
1942 UINT16 Reserved : 10;
1943} EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
1944
1945///
1946/// Hardware Error Notification Structure Definition
1947///
1948typedef struct {
1949 UINT8 Type;
1950 UINT8 Length;
1951 EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
1952 UINT32 PollInterval;
1953 UINT32 Vector;
1954 UINT32 SwitchToPollingThresholdValue;
1955 UINT32 SwitchToPollingThresholdWindow;
1956 UINT32 ErrorThresholdValue;
1957 UINT32 ErrorThresholdWindow;
1958} EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
1959
1960///
1961/// IA-32 Architecture Corrected Machine Check Structure Definition
1962///
1963typedef struct {
1964 UINT16 Type;
1965 UINT16 SourceId;
1966 UINT8 Reserved0[2];
1967 UINT8 Flags;
1968 UINT8 Enabled;
1969 UINT32 NumberOfRecordsToPreAllocate;
1970 UINT32 MaxSectionsPerRecord;
1971 EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
1972 UINT8 NumberOfHardwareBanks;
1973 UINT8 Reserved1[3];
1974} EFI_ACPI_6_4_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
1975
1976///
1977/// IA-32 Architecture NMI Error Structure Definition
1978///
1979typedef struct {
1980 UINT16 Type;
1981 UINT16 SourceId;
1982 UINT8 Reserved0[2];
1983 UINT32 NumberOfRecordsToPreAllocate;
1984 UINT32 MaxSectionsPerRecord;
1985 UINT32 MaxRawDataLength;
1986} EFI_ACPI_6_4_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
1987
1988///
1989/// PCI Express Root Port AER Structure Definition
1990///
1991typedef struct {
1992 UINT16 Type;
1993 UINT16 SourceId;
1994 UINT8 Reserved0[2];
1995 UINT8 Flags;
1996 UINT8 Enabled;
1997 UINT32 NumberOfRecordsToPreAllocate;
1998 UINT32 MaxSectionsPerRecord;
1999 UINT32 Bus;
2000 UINT16 Device;
2001 UINT16 Function;
2002 UINT16 DeviceControl;
2003 UINT8 Reserved1[2];
2004 UINT32 UncorrectableErrorMask;
2005 UINT32 UncorrectableErrorSeverity;
2006 UINT32 CorrectableErrorMask;
2007 UINT32 AdvancedErrorCapabilitiesAndControl;
2008 UINT32 RootErrorCommand;
2009} EFI_ACPI_6_4_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
2010
2011///
2012/// PCI Express Device AER Structure Definition
2013///
2014typedef struct {
2015 UINT16 Type;
2016 UINT16 SourceId;
2017 UINT8 Reserved0[2];
2018 UINT8 Flags;
2019 UINT8 Enabled;
2020 UINT32 NumberOfRecordsToPreAllocate;
2021 UINT32 MaxSectionsPerRecord;
2022 UINT32 Bus;
2023 UINT16 Device;
2024 UINT16 Function;
2025 UINT16 DeviceControl;
2026 UINT8 Reserved1[2];
2027 UINT32 UncorrectableErrorMask;
2028 UINT32 UncorrectableErrorSeverity;
2029 UINT32 CorrectableErrorMask;
2030 UINT32 AdvancedErrorCapabilitiesAndControl;
2031} EFI_ACPI_6_4_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
2032
2033///
2034/// PCI Express Bridge AER Structure Definition
2035///
2036typedef struct {
2037 UINT16 Type;
2038 UINT16 SourceId;
2039 UINT8 Reserved0[2];
2040 UINT8 Flags;
2041 UINT8 Enabled;
2042 UINT32 NumberOfRecordsToPreAllocate;
2043 UINT32 MaxSectionsPerRecord;
2044 UINT32 Bus;
2045 UINT16 Device;
2046 UINT16 Function;
2047 UINT16 DeviceControl;
2048 UINT8 Reserved1[2];
2049 UINT32 UncorrectableErrorMask;
2050 UINT32 UncorrectableErrorSeverity;
2051 UINT32 CorrectableErrorMask;
2052 UINT32 AdvancedErrorCapabilitiesAndControl;
2053 UINT32 SecondaryUncorrectableErrorMask;
2054 UINT32 SecondaryUncorrectableErrorSeverity;
2055 UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
2056} EFI_ACPI_6_4_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
2057
2058///
2059/// Generic Hardware Error Source Structure Definition
2060///
2061typedef struct {
2062 UINT16 Type;
2063 UINT16 SourceId;
2064 UINT16 RelatedSourceId;
2065 UINT8 Flags;
2066 UINT8 Enabled;
2067 UINT32 NumberOfRecordsToPreAllocate;
2068 UINT32 MaxSectionsPerRecord;
2069 UINT32 MaxRawDataLength;
2070 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
2071 EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
2072 UINT32 ErrorStatusBlockLength;
2073} EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
2074
2075///
2076/// Generic Hardware Error Source Version 2 Structure Definition
2077///
2078typedef struct {
2079 UINT16 Type;
2080 UINT16 SourceId;
2081 UINT16 RelatedSourceId;
2082 UINT8 Flags;
2083 UINT8 Enabled;
2084 UINT32 NumberOfRecordsToPreAllocate;
2085 UINT32 MaxSectionsPerRecord;
2086 UINT32 MaxRawDataLength;
2087 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
2088 EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
2089 UINT32 ErrorStatusBlockLength;
2090 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReadAckRegister;
2091 UINT64 ReadAckPreserve;
2092 UINT64 ReadAckWrite;
2093} EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE;
2094
2095///
2096/// Generic Error Status Definition
2097///
2098typedef struct {
2099 EFI_ACPI_6_4_ERROR_BLOCK_STATUS BlockStatus;
2100 UINT32 RawDataOffset;
2101 UINT32 RawDataLength;
2102 UINT32 DataLength;
2103 UINT32 ErrorSeverity;
2104} EFI_ACPI_6_4_GENERIC_ERROR_STATUS_STRUCTURE;
2105
2106///
2107/// IA-32 Architecture Deferred Machine Check Structure Definition
2108///
2109typedef struct {
2110 UINT16 Type;
2111 UINT16 SourceId;
2112 UINT8 Reserved0[2];
2113 UINT8 Flags;
2114 UINT8 Enabled;
2115 UINT32 NumberOfRecordsToPreAllocate;
2116 UINT32 MaxSectionsPerRecord;
2117 EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
2118 UINT8 NumberOfHardwareBanks;
2119 UINT8 Reserved1[3];
2120} EFI_ACPI_6_4_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK_STRUCTURE;
2121
2122///
2123/// HMAT - Heterogeneous Memory Attribute Table
2124///
2125typedef struct {
2126 EFI_ACPI_DESCRIPTION_HEADER Header;
2127 UINT8 Reserved[4];
2128} EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_HEADER;
2129
2130///
2131/// HMAT Revision (as defined in ACPI 6.4 spec.)
2132///
2133#define EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_REVISION 0x02
2134
2135///
2136/// HMAT types
2137///
2138#define EFI_ACPI_6_4_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES 0x00
2139#define EFI_ACPI_6_4_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO 0x01
2140#define EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO 0x02
2141
2142///
2143/// HMAT Structure Header
2144///
2145typedef struct {
2146 UINT16 Type;
2147 UINT8 Reserved[2];
2148 UINT32 Length;
2149} EFI_ACPI_6_4_HMAT_STRUCTURE_HEADER;
2150
2151///
2152/// Memory Proximity Domain Attributes Structure flags
2153///
2154typedef struct {
2155 UINT16 InitiatorProximityDomainValid : 1;
2156 UINT16 Reserved : 15;
2157} EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_FLAGS;
2158
2159///
2160/// Memory Proximity Domain Attributes Structure
2161///
2162typedef struct {
2163 UINT16 Type;
2164 UINT8 Reserved[2];
2165 UINT32 Length;
2166 EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_FLAGS Flags;
2167 UINT8 Reserved1[2];
2168 UINT32 InitiatorProximityDomain;
2169 UINT32 MemoryProximityDomain;
2170 UINT8 Reserved2[20];
2171} EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES;
2172
2173///
2174/// System Locality Latency and Bandwidth Information Structure flags
2175///
2176typedef struct {
2177 UINT8 MemoryHierarchy : 4;
2178 UINT8 AccessAttributes : 2;
2179 UINT8 Reserved : 2;
2180} EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS;
2181
2182///
2183/// System Locality Latency and Bandwidth Information Structure
2184///
2185typedef struct {
2186 UINT16 Type;
2187 UINT8 Reserved[2];
2188 UINT32 Length;
2189 EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS Flags;
2190 UINT8 DataType;
2191 UINT8 MinTransferSize;
2192 UINT8 Reserved1;
2193 UINT32 NumberOfInitiatorProximityDomains;
2194 UINT32 NumberOfTargetProximityDomains;
2195 UINT8 Reserved2[4];
2196 UINT64 EntryBaseUnit;
2197} EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO;
2198
2199///
2200/// Memory Side Cache Information Structure cache attributes
2201///
2202typedef struct {
2203 UINT32 TotalCacheLevels : 4;
2204 UINT32 CacheLevel : 4;
2205 UINT32 CacheAssociativity : 4;
2206 UINT32 WritePolicy : 4;
2207 UINT32 CacheLineSize : 16;
2208} EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES;
2209
2210///
2211/// Memory Side Cache Information Structure
2212///
2213typedef struct {
2214 UINT16 Type;
2215 UINT8 Reserved[2];
2216 UINT32 Length;
2217 UINT32 MemoryProximityDomain;
2218 UINT8 Reserved1[4];
2219 UINT64 MemorySideCacheSize;
2220 EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES CacheAttributes;
2221 UINT8 Reserved2[2];
2222 UINT16 NumberOfSmbiosHandles;
2223} EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO;
2224
2225///
2226/// ERST - Error Record Serialization Table
2227///
2228typedef struct {
2229 EFI_ACPI_DESCRIPTION_HEADER Header;
2230 UINT32 SerializationHeaderSize;
2231 UINT8 Reserved0[4];
2232 UINT32 InstructionEntryCount;
2233} EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
2234
2235///
2236/// ERST Version (as defined in ACPI 6.4 spec.)
2237///
2238#define EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
2239
2240///
2241/// ERST Serialization Actions
2242///
2243#define EFI_ACPI_6_4_ERST_BEGIN_WRITE_OPERATION 0x00
2244#define EFI_ACPI_6_4_ERST_BEGIN_READ_OPERATION 0x01
2245#define EFI_ACPI_6_4_ERST_BEGIN_CLEAR_OPERATION 0x02
2246#define EFI_ACPI_6_4_ERST_END_OPERATION 0x03
2247#define EFI_ACPI_6_4_ERST_SET_RECORD_OFFSET 0x04
2248#define EFI_ACPI_6_4_ERST_EXECUTE_OPERATION 0x05
2249#define EFI_ACPI_6_4_ERST_CHECK_BUSY_STATUS 0x06
2250#define EFI_ACPI_6_4_ERST_GET_COMMAND_STATUS 0x07
2251#define EFI_ACPI_6_4_ERST_GET_RECORD_IDENTIFIER 0x08
2252#define EFI_ACPI_6_4_ERST_SET_RECORD_IDENTIFIER 0x09
2253#define EFI_ACPI_6_4_ERST_GET_RECORD_COUNT 0x0A
2254#define EFI_ACPI_6_4_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
2255#define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
2256#define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
2257#define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
2258#define EFI_ACPI_6_4_ERST_GET_EXECUTE_OPERATION_TIMINGS 0x10
2259
2260///
2261/// ERST Action Command Status
2262///
2263#define EFI_ACPI_6_4_ERST_STATUS_SUCCESS 0x00
2264#define EFI_ACPI_6_4_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
2265#define EFI_ACPI_6_4_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
2266#define EFI_ACPI_6_4_ERST_STATUS_FAILED 0x03
2267#define EFI_ACPI_6_4_ERST_STATUS_RECORD_STORE_EMPTY 0x04
2268#define EFI_ACPI_6_4_ERST_STATUS_RECORD_NOT_FOUND 0x05
2269
2270///
2271/// ERST Serialization Instructions
2272///
2273#define EFI_ACPI_6_4_ERST_READ_REGISTER 0x00
2274#define EFI_ACPI_6_4_ERST_READ_REGISTER_VALUE 0x01
2275#define EFI_ACPI_6_4_ERST_WRITE_REGISTER 0x02
2276#define EFI_ACPI_6_4_ERST_WRITE_REGISTER_VALUE 0x03
2277#define EFI_ACPI_6_4_ERST_NOOP 0x04
2278#define EFI_ACPI_6_4_ERST_LOAD_VAR1 0x05
2279#define EFI_ACPI_6_4_ERST_LOAD_VAR2 0x06
2280#define EFI_ACPI_6_4_ERST_STORE_VAR1 0x07
2281#define EFI_ACPI_6_4_ERST_ADD 0x08
2282#define EFI_ACPI_6_4_ERST_SUBTRACT 0x09
2283#define EFI_ACPI_6_4_ERST_ADD_VALUE 0x0A
2284#define EFI_ACPI_6_4_ERST_SUBTRACT_VALUE 0x0B
2285#define EFI_ACPI_6_4_ERST_STALL 0x0C
2286#define EFI_ACPI_6_4_ERST_STALL_WHILE_TRUE 0x0D
2287#define EFI_ACPI_6_4_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
2288#define EFI_ACPI_6_4_ERST_GOTO 0x0F
2289#define EFI_ACPI_6_4_ERST_SET_SRC_ADDRESS_BASE 0x10
2290#define EFI_ACPI_6_4_ERST_SET_DST_ADDRESS_BASE 0x11
2291#define EFI_ACPI_6_4_ERST_MOVE_DATA 0x12
2292
2293///
2294/// ERST Instruction Flags
2295///
2296#define EFI_ACPI_6_4_ERST_PRESERVE_REGISTER 0x01
2297
2298///
2299/// ERST Serialization Instruction Entry
2300///
2301typedef struct {
2302 UINT8 SerializationAction;
2303 UINT8 Instruction;
2304 UINT8 Flags;
2305 UINT8 Reserved0;
2306 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
2307 UINT64 Value;
2308 UINT64 Mask;
2309} EFI_ACPI_6_4_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
2310
2311///
2312/// EINJ - Error Injection Table
2313///
2314typedef struct {
2315 EFI_ACPI_DESCRIPTION_HEADER Header;
2316 UINT32 InjectionHeaderSize;
2317 UINT8 InjectionFlags;
2318 UINT8 Reserved0[3];
2319 UINT32 InjectionEntryCount;
2320} EFI_ACPI_6_4_ERROR_INJECTION_TABLE_HEADER;
2321
2322///
2323/// EINJ Version (as defined in ACPI 6.4 spec.)
2324///
2325#define EFI_ACPI_6_4_ERROR_INJECTION_TABLE_REVISION 0x01
2326
2327///
2328/// EINJ Error Injection Actions
2329///
2330#define EFI_ACPI_6_4_EINJ_BEGIN_INJECTION_OPERATION 0x00
2331#define EFI_ACPI_6_4_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
2332#define EFI_ACPI_6_4_EINJ_SET_ERROR_TYPE 0x02
2333#define EFI_ACPI_6_4_EINJ_GET_ERROR_TYPE 0x03
2334#define EFI_ACPI_6_4_EINJ_END_OPERATION 0x04
2335#define EFI_ACPI_6_4_EINJ_EXECUTE_OPERATION 0x05
2336#define EFI_ACPI_6_4_EINJ_CHECK_BUSY_STATUS 0x06
2337#define EFI_ACPI_6_4_EINJ_GET_COMMAND_STATUS 0x07
2338#define EFI_ACPI_6_4_EINJ_TRIGGER_ERROR 0xFF
2339
2340///
2341/// EINJ Action Command Status
2342///
2343#define EFI_ACPI_6_4_EINJ_STATUS_SUCCESS 0x00
2344#define EFI_ACPI_6_4_EINJ_STATUS_UNKNOWN_FAILURE 0x01
2345#define EFI_ACPI_6_4_EINJ_STATUS_INVALID_ACCESS 0x02
2346
2347///
2348/// EINJ Error Type Definition
2349///
2350#define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
2351#define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
2352#define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
2353#define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
2354#define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
2355#define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
2356#define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
2357#define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
2358#define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
2359#define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
2360#define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
2361#define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
2362
2363///
2364/// EINJ Injection Instructions
2365///
2366#define EFI_ACPI_6_4_EINJ_READ_REGISTER 0x00
2367#define EFI_ACPI_6_4_EINJ_READ_REGISTER_VALUE 0x01
2368#define EFI_ACPI_6_4_EINJ_WRITE_REGISTER 0x02
2369#define EFI_ACPI_6_4_EINJ_WRITE_REGISTER_VALUE 0x03
2370#define EFI_ACPI_6_4_EINJ_NOOP 0x04
2371
2372///
2373/// EINJ Instruction Flags
2374///
2375#define EFI_ACPI_6_4_EINJ_PRESERVE_REGISTER 0x01
2376
2377///
2378/// EINJ Injection Instruction Entry
2379///
2380typedef struct {
2381 UINT8 InjectionAction;
2382 UINT8 Instruction;
2383 UINT8 Flags;
2384 UINT8 Reserved0;
2385 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
2386 UINT64 Value;
2387 UINT64 Mask;
2388} EFI_ACPI_6_4_EINJ_INJECTION_INSTRUCTION_ENTRY;
2389
2390///
2391/// EINJ Trigger Action Table
2392///
2393typedef struct {
2394 UINT32 HeaderSize;
2395 UINT32 Revision;
2396 UINT32 TableSize;
2397 UINT32 EntryCount;
2398} EFI_ACPI_6_4_EINJ_TRIGGER_ACTION_TABLE;
2399
2400///
2401/// Platform Communications Channel Table (PCCT)
2402///
2403typedef struct {
2404 EFI_ACPI_DESCRIPTION_HEADER Header;
2405 UINT32 Flags;
2406 UINT64 Reserved;
2407} EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
2408
2409///
2410/// PCCT Version (as defined in ACPI 6.4 spec.)
2411///
2412#define EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x02
2413
2414///
2415/// PCCT Global Flags
2416///
2417#define EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT BIT0
2418
2419//
2420// PCCT Subspace type
2421//
2422#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_GENERIC 0x00
2423#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01
2424#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02
2425#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_3_EXTENDED_PCC 0x03
2426#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC 0x04
2427#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_5_HW_REGISTERS_COMMUNICATIONS 0x05
2428
2429///
2430/// PCC Subspace Structure Header
2431///
2432typedef struct {
2433 UINT8 Type;
2434 UINT8 Length;
2435} EFI_ACPI_6_4_PCCT_SUBSPACE_HEADER;
2436
2437///
2438/// Generic Communications Subspace Structure
2439///
2440typedef struct {
2441 UINT8 Type;
2442 UINT8 Length;
2443 UINT8 Reserved[6];
2444 UINT64 BaseAddress;
2445 UINT64 AddressLength;
2446 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
2447 UINT64 DoorbellPreserve;
2448 UINT64 DoorbellWrite;
2449 UINT32 NominalLatency;
2450 UINT32 MaximumPeriodicAccessRate;
2451 UINT16 MinimumRequestTurnaroundTime;
2452} EFI_ACPI_6_4_PCCT_SUBSPACE_GENERIC;
2453
2454///
2455/// Generic Communications Channel Shared Memory Region
2456///
2457
2458typedef struct {
2459 UINT8 Command;
2460 UINT8 Reserved : 7;
2461 UINT8 NotifyOnCompletion : 1;
2462} EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
2463
2464typedef struct {
2465 UINT8 CommandComplete : 1;
2466 UINT8 PlatformInterrupt : 1;
2467 UINT8 Error : 1;
2468 UINT8 PlatformNotification : 1;
2469 UINT8 Reserved : 4;
2470 UINT8 Reserved1;
2471} EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
2472
2473typedef struct {
2474 UINT32 Signature;
2475 EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;
2476 EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;
2477} EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
2478
2479#define EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_POLARITY BIT0
2480#define EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE BIT1
2481
2482///
2483/// Type 1 HW-Reduced Communications Subspace Structure
2484///
2485typedef struct {
2486 UINT8 Type;
2487 UINT8 Length;
2488 UINT32 PlatformInterrupt;
2489 UINT8 PlatformInterruptFlags;
2490 UINT8 Reserved;
2491 UINT64 BaseAddress;
2492 UINT64 AddressLength;
2493 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
2494 UINT64 DoorbellPreserve;
2495 UINT64 DoorbellWrite;
2496 UINT32 NominalLatency;
2497 UINT32 MaximumPeriodicAccessRate;
2498 UINT16 MinimumRequestTurnaroundTime;
2499} EFI_ACPI_6_4_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS;
2500
2501///
2502/// Type 2 HW-Reduced Communications Subspace Structure
2503///
2504typedef struct {
2505 UINT8 Type;
2506 UINT8 Length;
2507 UINT32 PlatformInterrupt;
2508 UINT8 PlatformInterruptFlags;
2509 UINT8 Reserved;
2510 UINT64 BaseAddress;
2511 UINT64 AddressLength;
2512 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
2513 UINT64 DoorbellPreserve;
2514 UINT64 DoorbellWrite;
2515 UINT32 NominalLatency;
2516 UINT32 MaximumPeriodicAccessRate;
2517 UINT16 MinimumRequestTurnaroundTime;
2518 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister;
2519 UINT64 PlatformInterruptAckPreserve;
2520 UINT64 PlatformInterruptAckWrite;
2521} EFI_ACPI_6_4_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS;
2522
2523///
2524/// Type 3 Extended PCC Subspace Structure
2525///
2526typedef struct {
2527 UINT8 Type;
2528 UINT8 Length;
2529 UINT32 PlatformInterrupt;
2530 UINT8 PlatformInterruptFlags;
2531 UINT8 Reserved;
2532 UINT64 BaseAddress;
2533 UINT32 AddressLength;
2534 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
2535 UINT64 DoorbellPreserve;
2536 UINT64 DoorbellWrite;
2537 UINT32 NominalLatency;
2538 UINT32 MaximumPeriodicAccessRate;
2539 UINT32 MinimumRequestTurnaroundTime;
2540 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister;
2541 UINT64 PlatformInterruptAckPreserve;
2542 UINT64 PlatformInterruptAckSet;
2543 UINT8 Reserved1[8];
2544 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister;
2545 UINT64 CommandCompleteCheckMask;
2546 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteUpdateRegister;
2547 UINT64 CommandCompleteUpdatePreserve;
2548 UINT64 CommandCompleteUpdateSet;
2549 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister;
2550 UINT64 ErrorStatusMask;
2551} EFI_ACPI_6_4_PCCT_SUBSPACE_3_EXTENDED_PCC;
2552
2553///
2554/// Type 4 Extended PCC Subspace Structure
2555///
2556typedef EFI_ACPI_6_4_PCCT_SUBSPACE_3_EXTENDED_PCC EFI_ACPI_6_4_PCCT_SUBSPACE_4_EXTENDED_PCC;
2557
2558#define EFI_ACPI_6_4_PCCT_MASTER_SLAVE_COMMUNICATIONS_CHANNEL_FLAGS_NOTIFY_ON_COMPLETION BIT0
2559
2560typedef struct {
2561 UINT32 Signature;
2562 UINT32 Flags;
2563 UINT32 Length;
2564 UINT32 Command;
2565} EFI_ACPI_6_4_PCCT_EXTENDED_PCC_SHARED_MEMORY_REGION_HEADER;
2566
2567///
2568/// Type 5 HW Registers based Communications Subspace Structure
2569///
2570typedef struct {
2571 UINT8 Type;
2572 UINT8 Length;
2573 UINT16 Version;
2574 UINT64 BaseAddress;
2575 UINT64 SharedMemoryRangeLength;
2576 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
2577 UINT64 DoorbellPreserve;
2578 UINT64 DoorbellWrite;
2579 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister;
2580 UINT64 CommandCompleteCheckMask;
2581 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister;
2582 UINT64 ErrorStatusMask;
2583 UINT32 NominalLatency;
2584 UINT32 MinimumRequestTurnaroundTime;
2585} EFI_ACPI_6_4_PCCT_SUBSPACE_5_HW_REGISTERS_COMMUNICATIONS;
2586
2587///
2588/// Reduced PCC Subspace Shared Memory Region
2589///
2590typedef struct {
2591 UINT32 Signature;
2592 // UINT8 CommunicationSubspace[];
2593} EFI_6_4_PCCT_REDUCED_PCC_SUBSPACE_SHARED_MEMORY_REGION;
2594
2595///
2596/// Platform Debug Trigger Table (PDTT)
2597///
2598typedef struct {
2599 EFI_ACPI_DESCRIPTION_HEADER Header;
2600 UINT8 TriggerCount;
2601 UINT8 Reserved[3];
2602 UINT32 TriggerIdentifierArrayOffset;
2603} EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_HEADER;
2604
2605///
2606/// PDTT Revision (as defined in ACPI 6.4 spec.)
2607///
2608#define EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_REVISION 0x00
2609
2610///
2611/// PDTT Platform Communication Channel Identifier Structure
2612///
2613typedef struct {
2614 UINT16 SubChannelIdentifer : 8;
2615 UINT16 Runtime : 1;
2616 UINT16 WaitForCompletion : 1;
2617 UINT16 TriggerOrder : 1;
2618 UINT16 Reserved : 5;
2619} EFI_ACPI_6_4_PDTT_PCC_IDENTIFIER;
2620
2621///
2622/// PCC Commands Codes used by Platform Debug Trigger Table
2623///
2624#define EFI_ACPI_6_4_PDTT_PCC_COMMAND_DOORBELL_ONLY 0x00
2625#define EFI_ACPI_6_4_PDTT_PCC_COMMAND_VENDOR_SPECIFIC 0x01
2626
2627///
2628/// PDTT Platform Communication Channel
2629///
2630typedef EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER EFI_ACPI_6_4_PDTT_PCC;
2631
2632///
2633/// Processor Properties Topology Table (PPTT)
2634///
2635typedef struct {
2636 EFI_ACPI_DESCRIPTION_HEADER Header;
2637} EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER;
2638
2639///
2640/// PPTT Revision (as defined in ACPI 6.4 spec.)
2641///
2642#define EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION 0x03
2643
2644///
2645/// PPTT types
2646///
2647#define EFI_ACPI_6_4_PPTT_TYPE_PROCESSOR 0x00
2648#define EFI_ACPI_6_4_PPTT_TYPE_CACHE 0x01
2649
2650///
2651/// PPTT Structure Header
2652///
2653typedef struct {
2654 UINT8 Type;
2655 UINT8 Length;
2656 UINT8 Reserved[2];
2657} EFI_ACPI_6_4_PPTT_STRUCTURE_HEADER;
2658
2659///
2660/// For PPTT struct processor flags
2661///
2662#define EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL 0x0
2663#define EFI_ACPI_6_4_PPTT_PACKAGE_PHYSICAL 0x1
2664#define EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID 0x0
2665#define EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID 0x1
2666#define EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD 0x0
2667#define EFI_ACPI_6_4_PPTT_PROCESSOR_IS_THREAD 0x1
2668#define EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF 0x0
2669#define EFI_ACPI_6_4_PPTT_NODE_IS_LEAF 0x1
2670#define EFI_ACPI_6_4_PPTT_IMPLEMENTATION_NOT_IDENTICAL 0x0
2671#define EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL 0x1
2672
2673///
2674/// Processor hierarchy node structure flags
2675///
2676typedef struct {
2677 UINT32 PhysicalPackage : 1;
2678 UINT32 AcpiProcessorIdValid : 1;
2679 UINT32 ProcessorIsAThread : 1;
2680 UINT32 NodeIsALeaf : 1;
2681 UINT32 IdenticalImplementation : 1;
2682 UINT32 Reserved : 27;
2683} EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_FLAGS;
2684
2685///
2686/// Processor hierarchy node structure
2687///
2688typedef struct {
2689 UINT8 Type;
2690 UINT8 Length;
2691 UINT8 Reserved[2];
2692 EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_FLAGS Flags;
2693 UINT32 Parent;
2694 UINT32 AcpiProcessorId;
2695 UINT32 NumberOfPrivateResources;
2696} EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR;
2697
2698///
2699/// For PPTT struct cache flags
2700///
2701#define EFI_ACPI_6_4_PPTT_CACHE_SIZE_INVALID 0x0
2702#define EFI_ACPI_6_4_PPTT_CACHE_SIZE_VALID 0x1
2703#define EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_INVALID 0x0
2704#define EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_VALID 0x1
2705#define EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_INVALID 0x0
2706#define EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_VALID 0x1
2707#define EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_INVALID 0x0
2708#define EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_VALID 0x1
2709#define EFI_ACPI_6_4_PPTT_CACHE_TYPE_INVALID 0x0
2710#define EFI_ACPI_6_4_PPTT_CACHE_TYPE_VALID 0x1
2711#define EFI_ACPI_6_4_PPTT_WRITE_POLICY_INVALID 0x0
2712#define EFI_ACPI_6_4_PPTT_WRITE_POLICY_VALID 0x1
2713#define EFI_ACPI_6_4_PPTT_LINE_SIZE_INVALID 0x0
2714#define EFI_ACPI_6_4_PPTT_LINE_SIZE_VALID 0x1
2715#define EFI_ACPI_6_4_PPTT_CACHE_ID_INVALID 0x0
2716#define EFI_ACPI_6_4_PPTT_CACHE_ID_VALID 0x1
2717
2718///
2719/// Cache Type Structure flags
2720///
2721typedef struct {
2722 UINT32 SizePropertyValid : 1;
2723 UINT32 NumberOfSetsValid : 1;
2724 UINT32 AssociativityValid : 1;
2725 UINT32 AllocationTypeValid : 1;
2726 UINT32 CacheTypeValid : 1;
2727 UINT32 WritePolicyValid : 1;
2728 UINT32 LineSizeValid : 1;
2729 UINT32 CacheIdValid : 1;
2730 UINT32 Reserved : 24;
2731} EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_FLAGS;
2732
2733///
2734/// For cache attributes
2735///
2736#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ 0x0
2737#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_WRITE 0x1
2738#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE 0x2
2739#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_DATA 0x0
2740#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION 0x1
2741#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED 0x2
2742#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK 0x0
2743#define EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_THROUGH 0x1
2744
2745///
2746/// Cache Type Structure cache attributes
2747///
2748typedef struct {
2749 UINT8 AllocationType : 2;
2750 UINT8 CacheType : 2;
2751 UINT8 WritePolicy : 1;
2752 UINT8 Reserved : 3;
2753} EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_ATTRIBUTES;
2754
2755///
2756/// Cache Type Structure
2757///
2758typedef struct {
2759 UINT8 Type;
2760 UINT8 Length;
2761 UINT8 Reserved[2];
2762 EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_FLAGS Flags;
2763 UINT32 NextLevelOfCache;
2764 UINT32 Size;
2765 UINT32 NumberOfSets;
2766 UINT8 Associativity;
2767 EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_ATTRIBUTES Attributes;
2768 UINT16 LineSize;
2769 UINT32 CacheId;
2770} EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE;
2771
2772///
2773/// Platform Health Assessment Table (PHAT) Format
2774///
2775typedef struct {
2776 EFI_ACPI_DESCRIPTION_HEADER Header;
2777 // UINT8 PlatformTelemetryRecords[];
2778} EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE;
2779
2780#define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_REVISION 0x01
2781
2782///
2783/// PHAT Record Format
2784///
2785typedef struct {
2786 UINT16 PlatformHealthAssessmentRecordType;
2787 UINT16 RecordLength;
2788 UINT8 Revision;
2789 // UINT8 Data[];
2790} EFI_ACPI_6_4_PHAT_RECORD;
2791
2792///
2793/// PHAT Record Type Format
2794///
2795#define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_VERSION_DATA_RECORD 0x0000
2796#define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_HEALTH_DATA_RECORD 0x0001
2797
2798///
2799/// PHAT Version Element
2800///
2801typedef struct {
2802 GUID ComponentId;
2803 UINT64 VersionValue;
2804 UINT32 ProducerId;
2805} EFI_ACPI_6_4_PHAT_VERSION_ELEMENT;
2806
2807///
2808/// PHAT Firmware Version Data Record
2809///
2810typedef struct {
2811 UINT16 PlatformRecordType;
2812 UINT16 RecordLength;
2813 UINT8 Revision;
2814 UINT8 Reserved[3];
2815 UINT32 RecordCount;
2816 // UINT8 PhatVersionElement[];
2817} EFI_ACPI_6_4_PHAT_FIRMWARE_VERISON_DATA_RECORD;
2818
2819#define EFI_ACPI_6_4_PHAT_FIRMWARE_VERSION_DATA_RECORD_REVISION 0x01
2820
2821///
2822/// Firmware Health Data Record Structure
2823///
2824typedef struct {
2825 UINT16 PlatformRecordType;
2826 UINT16 RecordLength;
2827 UINT8 Revision;
2828 UINT16 Reserved;
2829 UINT8 AmHealthy;
2830 GUID DeviceSignature;
2831 UINT32 DeviceSpecificDataOffset;
2832 // UINT8 DevicePath[];
2833 // UINT8 DeviceSpecificData[];
2834} EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_STRUCTURE;
2835
2836#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_REVISION 0x01
2837
2838///
2839/// Firmware Health Data Record device health state
2840///
2841#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ERRORS_FOUND 0x00
2842#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_NO_ERRORS_FOUND 0x01
2843#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_UNKNOWN 0x02
2844#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ADVISORY 0x03
2845
2846//
2847// Known table signatures
2848//
2849
2850///
2851/// "RSD PTR " Root System Description Pointer
2852///
2853#define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
2854
2855///
2856/// "APIC" Multiple APIC Description Table
2857///
2858#define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
2859
2860///
2861/// "APMT" Arm Performance Monitoring Unit Table
2862///
2863#define EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'M', 'T')
2864
2865///
2866/// "BERT" Boot Error Record Table
2867///
2868#define EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
2869
2870///
2871/// "BGRT" Boot Graphics Resource Table
2872///
2873#define EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
2874
2875///
2876/// "CDIT" Component Distance Information Table
2877///
2878#define EFI_ACPI_6_4_COMPONENT_DISTANCE_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('C', 'D', 'I', 'T')
2879
2880///
2881/// "CPEP" Corrected Platform Error Polling Table
2882///
2883#define EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
2884
2885///
2886/// "CRAT" Component Resource Attribute Table
2887///
2888#define EFI_ACPI_6_4_COMPONENT_RESOURCE_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('C', 'R', 'A', 'T')
2889
2890///
2891/// "DSDT" Differentiated System Description Table
2892///
2893#define EFI_ACPI_6_4_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
2894
2895///
2896/// "ECDT" Embedded Controller Boot Resources Table
2897///
2898#define EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
2899
2900///
2901/// "EINJ" Error Injection Table
2902///
2903#define EFI_ACPI_6_4_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
2904
2905///
2906/// "ERST" Error Record Serialization Table
2907///
2908#define EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
2909
2910///
2911/// "FACP" Fixed ACPI Description Table
2912///
2913#define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
2914
2915///
2916/// "FACS" Firmware ACPI Control Structure
2917///
2918#define EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
2919
2920///
2921/// "FPDT" Firmware Performance Data Table
2922///
2923#define EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
2924
2925///
2926/// "GTDT" Generic Timer Description Table
2927///
2928#define EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
2929
2930///
2931/// "HEST" Hardware Error Source Table
2932///
2933#define EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
2934
2935///
2936/// "HMAT" Heterogeneous Memory Attribute Table
2937///
2938#define EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('H', 'M', 'A', 'T')
2939
2940///
2941/// "MPST" Memory Power State Table
2942///
2943#define EFI_ACPI_6_4_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
2944
2945///
2946/// "MSCT" Maximum System Characteristics Table
2947///
2948#define EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
2949
2950///
2951/// "NFIT" NVDIMM Firmware Interface Table
2952///
2953#define EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T')
2954
2955///
2956/// "PDTT" Platform Debug Trigger Table
2957///
2958#define EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'D', 'T', 'T')
2959
2960///
2961/// "PMTT" Platform Memory Topology Table
2962///
2963#define EFI_ACPI_6_4_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
2964
2965///
2966/// "PPTT" Processor Properties Topology Table
2967///
2968#define EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'P', 'T', 'T')
2969
2970///
2971/// "PSDT" Persistent System Description Table
2972///
2973#define EFI_ACPI_6_4_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
2974
2975///
2976/// "RASF" ACPI RAS Feature Table
2977///
2978#define EFI_ACPI_6_4_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
2979
2980///
2981/// "RSDT" Root System Description Table
2982///
2983#define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
2984
2985///
2986/// "SBST" Smart Battery Specification Table
2987///
2988#define EFI_ACPI_6_4_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
2989
2990///
2991/// "SDEV" Secure DEVices Table
2992///
2993#define EFI_ACPI_6_4_SECURE_DEVICES_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'V')
2994
2995///
2996/// "SLIT" System Locality Information Table
2997///
2998#define EFI_ACPI_6_4_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
2999
3000///
3001/// "SRAT" System Resource Affinity Table
3002///
3003#define EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
3004
3005///
3006/// "SSDT" Secondary System Description Table
3007///
3008#define EFI_ACPI_6_4_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
3009
3010///
3011/// "XSDT" Extended System Description Table
3012///
3013#define EFI_ACPI_6_4_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
3014
3015///
3016/// "BOOT" MS Simple Boot Spec
3017///
3018#define EFI_ACPI_6_4_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
3019
3020///
3021/// "CSRT" MS Core System Resource Table
3022///
3023#define EFI_ACPI_6_4_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
3024
3025///
3026/// "DBG2" MS Debug Port 2 Spec
3027///
3028#define EFI_ACPI_6_4_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
3029
3030///
3031/// "DBGP" MS Debug Port Spec
3032///
3033#define EFI_ACPI_6_4_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
3034
3035///
3036/// "DMAR" DMA Remapping Table
3037///
3038#define EFI_ACPI_6_4_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
3039
3040///
3041/// "DRTM" Dynamic Root of Trust for Measurement Table
3042///
3043#define EFI_ACPI_6_4_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
3044
3045///
3046/// "ETDT" Event Timer Description Table
3047///
3048#define EFI_ACPI_6_4_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
3049
3050///
3051/// "HPET" IA-PC High Precision Event Timer Table
3052///
3053#define EFI_ACPI_6_4_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
3054
3055///
3056/// "iBFT" iSCSI Boot Firmware Table
3057///
3058#define EFI_ACPI_6_4_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
3059
3060///
3061/// "IORT" I/O Remapping Table
3062///
3063#define EFI_ACPI_6_4_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T')
3064
3065///
3066/// "IVRS" I/O Virtualization Reporting Structure
3067///
3068#define EFI_ACPI_6_4_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
3069
3070///
3071/// "LPIT" Low Power Idle Table
3072///
3073#define EFI_ACPI_6_4_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T')
3074
3075///
3076/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
3077///
3078#define EFI_ACPI_6_4_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
3079
3080///
3081/// "MCHI" Management Controller Host Interface Table
3082///
3083#define EFI_ACPI_6_4_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
3084
3085///
3086/// "MSDM" MS Data Management Table
3087///
3088#define EFI_ACPI_6_4_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
3089
3090///
3091/// "PCCT" Platform Communications Channel Table
3092///
3093#define EFI_ACPI_6_4_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')
3094
3095///
3096/// "PHAT" Platform Health Assessment Table
3097///
3098#define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_SIGNATURE SIGNATURE_32('P', 'H', 'A', 'T')
3099
3100///
3101/// "SDEI" Software Delegated Exceptions Interface Table
3102///
3103#define EFI_ACPI_6_4_SOFTWARE_DELEGATED_EXCEPTIONS_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'I')
3104
3105///
3106/// "SLIC" MS Software Licensing Table Specification
3107///
3108#define EFI_ACPI_6_4_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
3109
3110///
3111/// "SPCR" Serial Port Concole Redirection Table
3112///
3113#define EFI_ACPI_6_4_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
3114
3115///
3116/// "SPMI" Server Platform Management Interface Table
3117///
3118#define EFI_ACPI_6_4_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
3119
3120///
3121/// "STAO" _STA Override Table
3122///
3123#define EFI_ACPI_6_4_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O')
3124
3125///
3126/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
3127///
3128#define EFI_ACPI_6_4_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
3129
3130///
3131/// "TPM2" Trusted Computing Platform 1 Table
3132///
3133#define EFI_ACPI_6_4_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
3134
3135///
3136/// "UEFI" UEFI ACPI Data Table
3137///
3138#define EFI_ACPI_6_4_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
3139
3140///
3141/// "WAET" Windows ACPI Emulated Devices Table
3142///
3143#define EFI_ACPI_6_4_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
3144
3145///
3146/// "WDAT" Watchdog Action Table
3147///
3148#define EFI_ACPI_6_4_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
3149
3150///
3151/// "WDRT" Watchdog Resource Table
3152///
3153#define EFI_ACPI_6_4_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
3154
3155///
3156/// "WPBT" MS Platform Binary Table
3157///
3158#define EFI_ACPI_6_4_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
3159
3160///
3161/// "WSMT" Windows SMM Security Mitigation Table
3162///
3163#define EFI_ACPI_6_4_WINDOWS_SMM_SECURITY_MITIGATION_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'M', 'T')
3164
3165///
3166/// "XENV" Xen Project Table
3167///
3168#define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V')
3169
3170#pragma pack()
3171
3172#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette