On Tuesday, June 23, 2026, Warner Losh <[email protected]> wrote:
> The branch main has been updated by imp:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=
> e985c628a0e4082d9b953897d6f56c81d177cea7
>
> commit e985c628a0e4082d9b953897d6f56c81d177cea7
> Author: Warner Losh <[email protected]>
> AuthorDate: 2026-06-22 22:06:24 +0000
> Commit: Warner Losh <[email protected]>
> CommitDate: 2026-06-22 23:06:14 +0000
>
> edk2: Bring in some more files from edk2-stable202502
>
> These are needed for memdisk support, so import them separately.
> These are from 202502, like all the other files here.
>
> Sponsored by: Netflix
> ---
> sys/contrib/edk2/Include/IndustryStandard/Acpi61.h | 2442
> ++++++++++++++++++++
> .../Include/Protocol/AcpiSystemDescriptionTable.h | 263 +++
> sys/contrib/edk2/Include/Protocol/AcpiTable.h | 121 +
> sys/contrib/edk2/Include/Protocol/RamDisk.h | 100 +
> 4 files changed, 2926 insertions(+)
>
> diff --git a/sys/contrib/edk2/Include/IndustryStandard/Acpi61.h
> b/sys/contrib/edk2/Include/IndustryStandard/Acpi61.h
> new file mode 100644
> index 000000000000..ff52bc6a7cba
> --- /dev/null
> +++ b/sys/contrib/edk2/Include/IndustryStandard/Acpi61.h
> @@ -0,0 +1,2442 @@
> +/** @file
> + ACPI 6.1 definitions from the ACPI Specification Revision 6.1 January,
> 2016.
> +
> + Copyright (c) 2016 - 2022, Intel Corporation. All rights reserved.<BR>
These BRs looks weird.
> + (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
> + Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +#ifndef _ACPI_6_1_H_
> +#define _ACPI_6_1_H_
> +
> +#include <IndustryStandard/Acpi60.h>
> +
> +///
> +/// _PSD Revision for ACPI 6.1
> +///
> +#define EFI_ACPI_6_1_AML_PSD_REVISION 0
> +
> +///
> +/// _CPC Revision for ACPI 6.1
> +///
> +#define EFI_ACPI_6_1_AML_CPC_REVISION 2
> +
> +//
> +// Ensure proper structure formats
> +//
> +#pragma pack(1)
> +
> +///
> +/// ACPI 6.1 Generic Address Space definition
> +///
> +typedef struct {
> + UINT8 AddressSpaceId;
> + UINT8 RegisterBitWidth;
> + UINT8 RegisterBitOffset;
> + UINT8 AccessSize;
> + UINT64 Address;
> +} EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE;
> +
> +//
> +// Generic Address Space Address IDs
> +//
> +#define EFI_ACPI_6_1_SYSTEM_MEMORY 0
> +#define EFI_ACPI_6_1_SYSTEM_IO 1
> +#define EFI_ACPI_6_1_PCI_CONFIGURATION_SPACE 2
> +#define EFI_ACPI_6_1_EMBEDDED_CONTROLLER 3
> +#define EFI_ACPI_6_1_SMBUS 4
> +#define EFI_ACPI_6_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A
> +#define EFI_ACPI_6_1_FUNCTIONAL_FIXED_HARDWARE 0x7F
> +
> +//
> +// Generic Address Space Access Sizes
> +//
> +#define EFI_ACPI_6_1_UNDEFINED 0
> +#define EFI_ACPI_6_1_BYTE 1
> +#define EFI_ACPI_6_1_WORD 2
> +#define EFI_ACPI_6_1_DWORD 3
> +#define EFI_ACPI_6_1_QWORD 4
> +
> +//
> +// ACPI 6.1 table structures
> +//
> +
> +///
> +/// Root System Description Pointer Structure
> +///
> +typedef struct {
> + UINT64 Signature;
> + UINT8 Checksum;
> + UINT8 OemId[6];
> + UINT8 Revision;
> + UINT32 RsdtAddress;
> + UINT32 Length;
> + UINT64 XsdtAddress;
> + UINT8 ExtendedChecksum;
> + UINT8 Reserved[3];
> +} EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_POINTER;
> +
> +///
> +/// RSD_PTR Revision (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///<
> ACPISpec (Revision 6.1) says current value is 2
> +
> +///
> +/// Common table header, this prefaces all ACPI tables, including FACS,
> but
> +/// excluding the RSD PTR structure
> +///
> +typedef struct {
> + UINT32 Signature;
> + UINT32 Length;
> +} EFI_ACPI_6_1_COMMON_HEADER;
> +
> +//
> +// Root System Description Table
> +// No definition needed as it is a common description table header, the
> same with
> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32
> table pointers.
> +//
> +
> +///
> +/// RSDT Revision (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
> +
> +//
> +// Extended System Description Table
> +// No definition needed as it is a common description table header, the
> same with
> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64
> table pointers.
> +//
> +
> +///
> +/// XSDT Revision (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
> +
> +///
> +/// Fixed ACPI Description Table Structure (FADT)
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 FirmwareCtrl;
> + UINT32 Dsdt;
> + UINT8 Reserved0;
> + UINT8 PreferredPmProfile;
> + UINT16 SciInt;
> + UINT32 SmiCmd;
> + UINT8 AcpiEnable;
> + UINT8 AcpiDisable;
> + UINT8 S4BiosReq;
> + UINT8 PstateCnt;
> + UINT32 Pm1aEvtBlk;
> + UINT32 Pm1bEvtBlk;
> + UINT32 Pm1aCntBlk;
> + UINT32 Pm1bCntBlk;
> + UINT32 Pm2CntBlk;
> + UINT32 PmTmrBlk;
> + UINT32 Gpe0Blk;
> + UINT32 Gpe1Blk;
> + UINT8 Pm1EvtLen;
> + UINT8 Pm1CntLen;
> + UINT8 Pm2CntLen;
> + UINT8 PmTmrLen;
> + UINT8 Gpe0BlkLen;
> + UINT8 Gpe1BlkLen;
> + UINT8 Gpe1Base;
> + UINT8 CstCnt;
> + UINT16 PLvl2Lat;
> + UINT16 PLvl3Lat;
> + UINT16 FlushSize;
> + UINT16 FlushStride;
> + UINT8 DutyOffset;
> + UINT8 DutyWidth;
> + UINT8 DayAlrm;
> + UINT8 MonAlrm;
> + UINT8 Century;
> + UINT16 IaPcBootArch;
> + UINT8 Reserved1;
> + UINT32 Flags;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE ResetReg;
> + UINT8 ResetValue;
> + UINT16 ArmBootArch;
> + UINT8 MinorVersion;
> + UINT64 XFirmwareCtrl;
> + UINT64 XDsdt;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
> + UINT64 HypervisorVendorIdentity;
> +} EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE;
> +
> +///
> +/// FADT Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06
> +#define EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01
> +
> +//
> +// Fixed ACPI Description Table Preferred Power Management Profile
> +//
> +#define EFI_ACPI_6_1_PM_PROFILE_UNSPECIFIED 0
> +#define EFI_ACPI_6_1_PM_PROFILE_DESKTOP 1
> +#define EFI_ACPI_6_1_PM_PROFILE_MOBILE 2
> +#define EFI_ACPI_6_1_PM_PROFILE_WORKSTATION 3
> +#define EFI_ACPI_6_1_PM_PROFILE_ENTERPRISE_SERVER 4
> +#define EFI_ACPI_6_1_PM_PROFILE_SOHO_SERVER 5
> +#define EFI_ACPI_6_1_PM_PROFILE_APPLIANCE_PC 6
> +#define EFI_ACPI_6_1_PM_PROFILE_PERFORMANCE_SERVER 7
> +#define EFI_ACPI_6_1_PM_PROFILE_TABLET 8
> +
> +//
> +// Fixed ACPI Description Table Boot Architecture Flags
> +// All other bits are reserved and must be set to 0.
> +//
> +#define EFI_ACPI_6_1_LEGACY_DEVICES BIT0
> +#define EFI_ACPI_6_1_8042 BIT1
> +#define EFI_ACPI_6_1_VGA_NOT_PRESENT BIT2
> +#define EFI_ACPI_6_1_MSI_NOT_SUPPORTED BIT3
> +#define EFI_ACPI_6_1_PCIE_ASPM_CONTROLS BIT4
> +#define EFI_ACPI_6_1_CMOS_RTC_NOT_PRESENT BIT5
> +
> +//
> +// Fixed ACPI Description Table Arm Boot Architecture Flags
> +// All other bits are reserved and must be set to 0.
> +//
> +#define EFI_ACPI_6_1_ARM_PSCI_COMPLIANT BIT0
> +#define EFI_ACPI_6_1_ARM_PSCI_USE_HVC BIT1
> +
> +//
> +// Fixed ACPI Description Table Fixed Feature Flags
> +// All other bits are reserved and must be set to 0.
> +//
> +#define EFI_ACPI_6_1_WBINVD BIT0
> +#define EFI_ACPI_6_1_WBINVD_FLUSH BIT1
> +#define EFI_ACPI_6_1_PROC_C1 BIT2
> +#define EFI_ACPI_6_1_P_LVL2_UP BIT3
> +#define EFI_ACPI_6_1_PWR_BUTTON BIT4
> +#define EFI_ACPI_6_1_SLP_BUTTON BIT5
> +#define EFI_ACPI_6_1_FIX_RTC BIT6
> +#define EFI_ACPI_6_1_RTC_S4 BIT7
> +#define EFI_ACPI_6_1_TMR_VAL_EXT BIT8
> +#define EFI_ACPI_6_1_DCK_CAP BIT9
> +#define EFI_ACPI_6_1_RESET_REG_SUP BIT10
> +#define EFI_ACPI_6_1_SEALED_CASE BIT11
> +#define EFI_ACPI_6_1_HEADLESS BIT12
> +#define EFI_ACPI_6_1_CPU_SW_SLP BIT13
> +#define EFI_ACPI_6_1_PCI_EXP_WAK BIT14
> +#define EFI_ACPI_6_1_USE_PLATFORM_CLOCK BIT15
> +#define EFI_ACPI_6_1_S4_RTC_STS_VALID BIT16
> +#define EFI_ACPI_6_1_REMOTE_POWER_ON_CAPABLE BIT17
> +#define EFI_ACPI_6_1_FORCE_APIC_CLUSTER_MODEL BIT18
> +#define EFI_ACPI_6_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
> +#define EFI_ACPI_6_1_HW_REDUCED_ACPI BIT20
> +#define EFI_ACPI_6_1_LOW_POWER_S0_IDLE_CAPABLE BIT21
> +
> +///
> +/// Firmware ACPI Control Structure
> +///
> +typedef struct {
> + UINT32 Signature;
> + UINT32 Length;
> + UINT32 HardwareSignature;
> + UINT32 FirmwareWakingVector;
> + UINT32 GlobalLock;
> + UINT32 Flags;
> + UINT64 XFirmwareWakingVector;
> + UINT8 Version;
> + UINT8 Reserved0[3];
> + UINT32 OspmFlags;
> + UINT8 Reserved1[24];
> +} EFI_ACPI_6_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;
> +
> +///
> +/// FACS Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
> +
> +///
> +/// Firmware Control Structure Feature Flags
> +/// All other bits are reserved and must be set to 0.
> +///
> +#define EFI_ACPI_6_1_S4BIOS_F BIT0
> +#define EFI_ACPI_6_1_64BIT_WAKE_SUPPORTED_F BIT1
> +
> +///
> +/// OSPM Enabled Firmware Control Structure Flags
> +/// All other bits are reserved and must be set to 0.
> +///
> +#define EFI_ACPI_6_1_OSPM_64BIT_WAKE_F BIT0
> +
> +//
> +// Differentiated System Description Table,
> +// Secondary System Description Table
> +// and Persistent System Description Table,
> +// no definition needed as they are common description table header, the
> same with
> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
> +//
> +#define EFI_ACPI_6_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION
> 0x02
> +#define EFI_ACPI_6_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION
> 0x02
> +
> +///
> +/// Multiple APIC Description Table header definition. The rest of the
> table
> +/// must be defined in a platform specific manner.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 LocalApicAddress;
> + UINT32 Flags;
> +} EFI_ACPI_6_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
> +
> +///
> +/// MADT Revision (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x04
> +
> +///
> +/// Multiple APIC Flags
> +/// All other bits are reserved and must be set to 0.
> +///
> +#define EFI_ACPI_6_1_PCAT_COMPAT BIT0
> +
> +//
> +// Multiple APIC Description Table APIC structure types
> +// All other values between 0x0D and 0x7F are reserved and
> +// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
> +//
> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_APIC 0x00
> +#define EFI_ACPI_6_1_IO_APIC 0x01
> +#define EFI_ACPI_6_1_INTERRUPT_SOURCE_OVERRIDE 0x02
> +#define EFI_ACPI_6_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03
> +#define EFI_ACPI_6_1_LOCAL_APIC_NMI 0x04
> +#define EFI_ACPI_6_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
> +#define EFI_ACPI_6_1_IO_SAPIC 0x06
> +#define EFI_ACPI_6_1_LOCAL_SAPIC 0x07
> +#define EFI_ACPI_6_1_PLATFORM_INTERRUPT_SOURCES 0x08
> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC 0x09
> +#define EFI_ACPI_6_1_LOCAL_X2APIC_NMI 0x0A
> +#define EFI_ACPI_6_1_GIC 0x0B
> +#define EFI_ACPI_6_1_GICD 0x0C
> +#define EFI_ACPI_6_1_GIC_MSI_FRAME 0x0D
> +#define EFI_ACPI_6_1_GICR 0x0E
> +#define EFI_ACPI_6_1_GIC_ITS 0x0F
> +
> +//
> +// APIC Structure Definitions
> +//
> +
> +///
> +/// Processor Local APIC Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 AcpiProcessorUid;
> + UINT8 ApicId;
> + UINT32 Flags;
> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_APIC_STRUCTURE;
> +
> +///
> +/// Local APIC Flags. All other bits are reserved and must be 0.
> +///
> +#define EFI_ACPI_6_1_LOCAL_APIC_ENABLED BIT0
> +
> +///
> +/// IO APIC Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 IoApicId;
> + UINT8 Reserved;
> + UINT32 IoApicAddress;
> + UINT32 GlobalSystemInterruptBase;
> +} EFI_ACPI_6_1_IO_APIC_STRUCTURE;
> +
> +///
> +/// Interrupt Source Override Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 Bus;
> + UINT8 Source;
> + UINT32 GlobalSystemInterrupt;
> + UINT16 Flags;
> +} EFI_ACPI_6_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
> +
> +///
> +/// Platform Interrupt Sources Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Flags;
> + UINT8 InterruptType;
> + UINT8 ProcessorId;
> + UINT8 ProcessorEid;
> + UINT8 IoSapicVector;
> + UINT32 GlobalSystemInterrupt;
> + UINT32 PlatformInterruptSourceFlags;
> + UINT8 CpeiProcessorOverride;
> + UINT8 Reserved[31];
> +} EFI_ACPI_6_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;
> +
> +//
> +// MPS INTI flags.
> +// All other bits are reserved and must be set to 0.
> +//
> +#define EFI_ACPI_6_1_POLARITY (3 << 0)
> +#define EFI_ACPI_6_1_TRIGGER_MODE (3 << 2)
> +
> +///
> +/// Non-Maskable Interrupt Source Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Flags;
> + UINT32 GlobalSystemInterrupt;
> +} EFI_ACPI_6_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
> +
> +///
> +/// Local APIC NMI Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 AcpiProcessorUid;
> + UINT16 Flags;
> + UINT8 LocalApicLint;
> +} EFI_ACPI_6_1_LOCAL_APIC_NMI_STRUCTURE;
> +
> +///
> +/// Local APIC Address Override Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved;
> + UINT64 LocalApicAddress;
> +} EFI_ACPI_6_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
> +
> +///
> +/// IO SAPIC Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 IoApicId;
> + UINT8 Reserved;
> + UINT32 GlobalSystemInterruptBase;
> + UINT64 IoSapicAddress;
> +} EFI_ACPI_6_1_IO_SAPIC_STRUCTURE;
> +
> +///
> +/// Local SAPIC Structure
> +/// This struct followed by a null-terminated ASCII string - ACPI
> Processor UID String
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 AcpiProcessorId;
> + UINT8 LocalSapicId;
> + UINT8 LocalSapicEid;
> + UINT8 Reserved[3];
> + UINT32 Flags;
> + UINT32 ACPIProcessorUIDValue;
> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
> +
> +///
> +/// Platform Interrupt Sources Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Flags;
> + UINT8 InterruptType;
> + UINT8 ProcessorId;
> + UINT8 ProcessorEid;
> + UINT8 IoSapicVector;
> + UINT32 GlobalSystemInterrupt;
> + UINT32 PlatformInterruptSourceFlags;
> +} EFI_ACPI_6_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
> +
> +///
> +/// Platform Interrupt Source Flags.
> +/// All other bits are reserved and must be set to 0.
> +///
> +#define EFI_ACPI_6_1_CPEI_PROCESSOR_OVERRIDE BIT0
> +
> +///
> +/// Processor Local x2APIC Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 Reserved[2];
> + UINT32 X2ApicId;
> + UINT32 Flags;
> + UINT32 AcpiProcessorUid;
> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
> +
> +///
> +/// Local x2APIC NMI Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Flags;
> + UINT32 AcpiProcessorUid;
> + UINT8 LocalX2ApicLint;
> + UINT8 Reserved[3];
> +} EFI_ACPI_6_1_LOCAL_X2APIC_NMI_STRUCTURE;
> +
> +///
> +/// GIC Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved;
> + UINT32 CPUInterfaceNumber;
> + UINT32 AcpiProcessorUid;
> + UINT32 Flags;
> + UINT32 ParkingProtocolVersion;
> + UINT32 PerformanceInterruptGsiv;
> + UINT64 ParkedAddress;
> + UINT64 PhysicalBaseAddress;
> + UINT64 GICV;
> + UINT64 GICH;
> + UINT32 VGICMaintenanceInterrupt;
> + UINT64 GICRBaseAddress;
> + UINT64 MPIDR;
> + UINT8 ProcessorPowerEfficiencyClass;
> + UINT8 Reserved2[3];
> +} EFI_ACPI_6_1_GIC_STRUCTURE;
> +
> +///
> +/// GIC Flags. All other bits are reserved and must be 0.
> +///
> +#define EFI_ACPI_6_1_GIC_ENABLED BIT0
> +#define EFI_ACPI_6_1_PERFORMANCE_INTERRUPT_MODEL BIT1
> +#define EFI_ACPI_6_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2
> +
> +///
> +/// GIC Distributor Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved1;
> + UINT32 GicId;
> + UINT64 PhysicalBaseAddress;
> + UINT32 SystemVectorBase;
> + UINT8 GicVersion;
> + UINT8 Reserved2[3];
> +} EFI_ACPI_6_1_GIC_DISTRIBUTOR_STRUCTURE;
> +
> +///
> +/// GIC Version
> +///
> +#define EFI_ACPI_6_1_GIC_V1 0x01
> +#define EFI_ACPI_6_1_GIC_V2 0x02
> +#define EFI_ACPI_6_1_GIC_V3 0x03
> +#define EFI_ACPI_6_1_GIC_V4 0x04
> +
> +///
> +/// GIC MSI Frame Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved1;
> + UINT32 GicMsiFrameId;
> + UINT64 PhysicalBaseAddress;
> + UINT32 Flags;
> + UINT16 SPICount;
> + UINT16 SPIBase;
> +} EFI_ACPI_6_1_GIC_MSI_FRAME_STRUCTURE;
> +
> +///
> +/// GIC MSI Frame Flags. All other bits are reserved and must be 0.
> +///
> +#define EFI_ACPI_6_1_SPI_COUNT_BASE_SELECT BIT0
> +
> +///
> +/// GICR Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved;
> + UINT64 DiscoveryRangeBaseAddress;
> + UINT32 DiscoveryRangeLength;
> +} EFI_ACPI_6_1_GICR_STRUCTURE;
> +
> +///
> +/// GIC Interrupt Translation Service Structure
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 Reserved;
> + UINT32 GicItsId;
> + UINT64 PhysicalBaseAddress;
> + UINT32 Reserved2;
> +} EFI_ACPI_6_1_GIC_ITS_STRUCTURE;
> +
> +///
> +/// Smart Battery Description Table (SBST)
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 WarningEnergyLevel;
> + UINT32 LowEnergyLevel;
> + UINT32 CriticalEnergyLevel;
> +} EFI_ACPI_6_1_SMART_BATTERY_DESCRIPTION_TABLE;
> +
> +///
> +/// SBST Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
> +
> +///
> +/// Embedded Controller Boot Resources Table (ECDT)
> +/// The table is followed by a null terminated ASCII string that contains
> +/// a fully qualified reference to the name space object.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE EcControl;
> + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE EcData;
> + UINT32 Uid;
> + UINT8 GpeBit;
> +} EFI_ACPI_6_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
> +
> +///
> +/// ECDT Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION
> 0x01
> +
> +///
> +/// System Resource Affinity Table (SRAT). The rest of the table
> +/// must be defined in a platform specific manner.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 Reserved1; ///< Must be set to 1
> + UINT64 Reserved2;
> +} EFI_ACPI_6_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
> +
> +///
> +/// SRAT Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
> +
> +//
> +// SRAT structure types.
> +// All other values between 0x04 an 0xFF are reserved and
> +// will be ignored by OSPM.
> +//
> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
> +#define EFI_ACPI_6_1_MEMORY_AFFINITY 0x01
> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
> +#define EFI_ACPI_6_1_GICC_AFFINITY 0x03
> +
> +///
> +/// Processor Local APIC/SAPIC Affinity Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 ProximityDomain7To0;
> + UINT8 ApicId;
> + UINT32 Flags;
> + UINT8 LocalSapicEid;
> + UINT8 ProximityDomain31To8[3];
> + UINT32 ClockDomain;
> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
> +
> +///
> +/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
> +///
> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
> +
> +///
> +/// Memory Affinity Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT32 ProximityDomain;
> + UINT16 Reserved1;
> + UINT32 AddressBaseLow;
> + UINT32 AddressBaseHigh;
> + UINT32 LengthLow;
> + UINT32 LengthHigh;
> + UINT32 Reserved2;
> + UINT32 Flags;
> + UINT64 Reserved3;
> +} EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE;
> +
> +//
> +// Memory Flags. All other bits are reserved and must be 0.
> +//
> +#define EFI_ACPI_6_1_MEMORY_ENABLED (1 << 0)
> +#define EFI_ACPI_6_1_MEMORY_HOT_PLUGGABLE (1 << 1)
> +#define EFI_ACPI_6_1_MEMORY_NONVOLATILE (1 << 2)
> +
> +///
> +/// Processor Local x2APIC Affinity Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 Reserved1[2];
> + UINT32 ProximityDomain;
> + UINT32 X2ApicId;
> + UINT32 Flags;
> + UINT32 ClockDomain;
> + UINT8 Reserved2[4];
> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
> +
> +///
> +/// GICC Affinity Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT32 ProximityDomain;
> + UINT32 AcpiProcessorUid;
> + UINT32 Flags;
> + UINT32 ClockDomain;
> +} EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE;
> +
> +///
> +/// GICC Flags. All other bits are reserved and must be 0.
> +///
> +#define EFI_ACPI_6_1_GICC_ENABLED (1 << 0)
> +
> +///
> +/// System Locality Distance Information Table (SLIT).
> +/// The rest of the table is a matrix.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT64 NumberOfSystemLocalities;
> +} EFI_ACPI_6_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
> +
> +///
> +/// SLIT Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION
> 0x01
> +
> +///
> +/// Corrected Platform Error Polling Table (CPEP)
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT8 Reserved[8];
> +} EFI_ACPI_6_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
> +
> +///
> +/// CPEP Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION
> 0x01
> +
> +//
> +// CPEP processor structure types.
> +//
> +#define EFI_ACPI_6_1_CPEP_PROCESSOR_APIC_SAPIC 0x00
> +
> +///
> +/// Corrected Platform Error Polling Processor Structure Definition
> +///
> +typedef struct {
> + UINT8 Type;
> + UINT8 Length;
> + UINT8 ProcessorId;
> + UINT8 ProcessorEid;
> + UINT32 PollingInterval;
> +} EFI_ACPI_6_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
> +
> +///
> +/// Maximum System Characteristics Table (MSCT)
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 OffsetProxDomInfo;
> + UINT32 MaximumNumberOfProximityDomains;
> + UINT32 MaximumNumberOfClockDomains;
> + UINT64 MaximumPhysicalAddress;
> +} EFI_ACPI_6_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
> +
> +///
> +/// MSCT Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
> +
> +///
> +/// Maximum Proximity Domain Information Structure Definition
> +///
> +typedef struct {
> + UINT8 Revision;
> + UINT8 Length;
> + UINT32 ProximityDomainRangeLow;
> + UINT32 ProximityDomainRangeHigh;
> + UINT32 MaximumProcessorCapacity;
> + UINT64 MaximumMemoryCapacity;
> +} EFI_ACPI_6_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
> +
> +///
> +/// ACPI RAS Feature Table definition.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT8 PlatformCommunicationChannelId
> entifier[12];
> +} EFI_ACPI_6_1_RAS_FEATURE_TABLE;
> +
> +///
> +/// RASF Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_RAS_FEATURE_TABLE_REVISION 0x01
> +
> +///
> +/// ACPI RASF Platform Communication Channel Shared Memory Region
> definition.
> +///
> +typedef struct {
> + UINT32 Signature;
> + UINT16 Command;
> + UINT16 Status;
> + UINT16 Version;
> + UINT8 RASCapabilities[16];
> + UINT8 SetRASCapabilities[16];
> + UINT16 NumberOfRASFParameterBlocks;
> + UINT32 SetRASCapabilitiesStatus;
> +} EFI_ACPI_6_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
> +
> +///
> +/// ACPI RASF PCC command code
> +///
> +#define EFI_ACPI_6_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
> +
> +///
> +/// ACPI RASF Platform RAS Capabilities
> +///
> +#define
> EFI_ACPI_6_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED
> 0x01
> +#define EFI_ACPI_6_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_
> PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02
> +
> +///
> +/// ACPI RASF Parameter Block structure for PATROL_SCRUB
> +///
> +typedef struct {
> + UINT16 Type;
> + UINT16 Version;
> + UINT16 Length;
> + UINT16 PatrolScrubCommand;
> + UINT64 RequestedAddressRange[2];
> + UINT64 ActualAddressRange[2];
> + UINT16 Flags;
> + UINT8 RequestedSpeed;
> +} EFI_ACPI_6_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
> +
> +///
> +/// ACPI RASF Patrol Scrub command
> +///
> +#define EFI_ACPI_6_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS
> 0x01
> +#define EFI_ACPI_6_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER
> 0x02
> +#define EFI_ACPI_6_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER
> 0x03
> +
> +///
> +/// Memory Power State Table definition.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT8 PlatformCommunicationChannelIdentifier;
> + UINT8 Reserved[3];
> + // Memory Power Node Structure
> + // Memory Power State Characteristics
> +} EFI_ACPI_6_1_MEMORY_POWER_STATUS_TABLE;
> +
> +///
> +/// MPST Version (as defined in ACPI 6.1 spec.)
> +///
> +#define EFI_ACPI_6_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01
> +
> +///
> +/// MPST Platform Communication Channel Shared Memory Region definition.
> +///
> +typedef struct {
> + UINT32 Signature;
> + UINT16 Command;
> + UINT16 Status;
> + UINT32 MemoryPowerCommandRegister;
> + UINT32 MemoryPowerStatusRegister;
> + UINT32 PowerStateId;
> + UINT32 MemoryPowerNodeId;
> + UINT64 MemoryEnergyConsumed;
> + UINT64 ExpectedAveragePowerComsuned;
> +} EFI_ACPI_6_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
> +
> +///
> +/// ACPI MPST PCC command code
> +///
> +#define EFI_ACPI_6_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
> +
> +///
> +/// ACPI MPST Memory Power command
> +///
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE
> 0x01
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE
> 0x02
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED
> 0x03
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED
> 0x04
> +
> +///
> +/// MPST Memory Power Node Table
> +///
> +typedef struct {
> + UINT8 PowerStateValue;
> + UINT8 PowerStateInformationIndex;
> +} EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE;
> +
> +typedef struct {
> + UINT8 Flag;
> + UINT8 Reserved;
> + UINT16 MemoryPowerNodeId;
> + UINT32 Length;
> + UINT64 AddressBase;
> + UINT64 AddressLength;
> + UINT32 NumberOfPowerStates;
> + UINT32 NumberOfPhysicalComponents;
> + // EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE MemoryPowerState[
> NumberOfPowerStates];
> + // UINT16
> PhysicalComponentIdentifier[NumberOfPhysicalComponents];
> +} EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE;
> +
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
> +
> +typedef struct {
> + UINT16 MemoryPowerNodeCount;
> + UINT8 Reserved[2];
> +} EFI_ACPI_6_1_MPST_MEMORY_POWER_NODE_TABLE;
> +
> +///
> +/// MPST Memory Power State Characteristics Table
> +///
> +typedef struct {
> + UINT8 PowerStateStructureID;
> + UINT8 Flag;
> + UINT16 Reserved;
> + UINT32 AveragePowerConsumedInMPS0;
> + UINT32 RelativePowerSavingToMPS0;
> + UINT64 ExitLatencyToMPS0;
> +} EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
> +
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_
> STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_
> STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
> +#define EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_
> STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
> +
> +typedef struct {
> + UINT16 MemoryPowerStateCharacteristicsCount;
> + UINT8 Reserved[2];
> +} EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
> +
> +///
> +/// Memory Topology Table definition.
> +///
> +typedef struct {
> + EFI_ACPI_DESCRIPTION_HEADER Header;
> + UINT32 Reserved;
> +} EFI_ACPI_6_1_MEMORY_TOPOLOGY_TABLE;
> *** 1986 LINES SKIPPED ***
>
>