Date: Fri, 26 Jun 2026 01:03:12 +0200 From: Oliver Pinter <oliver.pntr@gmail.com> To: Warner Losh <imp@freebsd.org> Cc: "src-committers@freebsd.org" <src-committers@freebsd.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org> Subject: Re: git: e985c628a0e4 - main - edk2: Bring in some more files from edk2-stable202502 Message-ID: <CAPjTQNGNc0fn_Gpu36xVbLPpF4-XSj1vBtJPt_3H-EvbX68egA@mail.gmail.com> In-Reply-To: <6a39c063.3059b.7ef016f@gitrepo.freebsd.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] On Tuesday, June 23, 2026, Warner Losh <imp@freebsd.org> wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id= > e985c628a0e4082d9b953897d6f56c81d177cea7 > > commit e985c628a0e4082d9b953897d6f56c81d177cea7 > Author: Warner Losh <imp@FreeBSD.org> > AuthorDate: 2026-06-22 22:06:24 +0000 > Commit: Warner Losh <imp@FreeBSD.org> > 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 *** > > [-- Attachment #2 --] <br><br>On Tuesday, June 23, 2026, Warner Losh <<a href="mailto:imp@freebsd.org">imp@freebsd.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The branch main has been updated by imp:<br> <br> URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=e985c628a0e4082d9b953897d6f56c81d177cea7" target="_blank">https://cgit.FreeBSD.org/src/<wbr>commit/?id=<wbr>e985c628a0e4082d9b953897d6f56c<wbr>81d177cea7</a><br> <br> commit e985c628a0e4082d9b953897d6f56c<wbr>81d177cea7<br> Author: Warner Losh <imp@FreeBSD.org><br> AuthorDate: 2026-06-22 22:06:24 +0000<br> Commit: Warner Losh <imp@FreeBSD.org><br> CommitDate: 2026-06-22 23:06:14 +0000<br> <br> edk2: Bring in some more files from edk2-stable202502<br> <br> These are needed for memdisk support, so import them separately.<br> These are from 202502, like all the other files here.<br> <br> Sponsored by: Netflix<br> ---<br> sys/contrib/edk2/Include/<wbr>IndustryStandard/Acpi61.h | 2442 ++++++++++++++++++++<br> .../Include/Protocol/<wbr>AcpiSystemDescriptionTable.h | 263 +++<br> sys/contrib/edk2/Include/<wbr>Protocol/AcpiTable.h | 121 +<br> sys/contrib/edk2/Include/<wbr>Protocol/RamDisk.h | 100 +<br> 4 files changed, 2926 insertions(+)<br> <br> diff --git a/sys/contrib/edk2/Include/<wbr>IndustryStandard/Acpi61.h b/sys/contrib/edk2/Include/<wbr>IndustryStandard/Acpi61.h<br> new file mode 100644<br> index 000000000000..ff52bc6a7cba<br> --- /dev/null<br> +++ b/sys/contrib/edk2/Include/<wbr>IndustryStandard/Acpi61.h<br> @@ -0,0 +1,2442 @@<br> +/** @file<br> + ACPI 6.1 definitions from the ACPI Specification Revision 6.1 January, 2016.<br> +<br> + Copyright (c) 2016 - 2022, Intel Corporation. All rights reserved.<BR></blockquote><div><br></div><div>These BRs looks weird.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> + (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR><br> + Copyright (c) 2020, ARM Ltd. All rights reserved.<BR><br> + SPDX-License-Identifier: BSD-2-Clause-Patent<br> +**/<br> +<br> +#ifndef _ACPI_6_1_H_<br> +#define _ACPI_6_1_H_<br> +<br> +#include <IndustryStandard/Acpi60.h><br> +<br> +///<br> +/// _PSD Revision for ACPI 6.1<br> +///<br> +#define EFI_ACPI_6_1_AML_PSD_REVISION 0<br> +<br> +///<br> +/// _CPC Revision for ACPI 6.1<br> +///<br> +#define EFI_ACPI_6_1_AML_CPC_REVISION 2<br> +<br> +//<br> +// Ensure proper structure formats<br> +//<br> +#pragma pack(1)<br> +<br> +///<br> +/// ACPI 6.1 Generic Address Space definition<br> +///<br> +typedef struct {<br> + UINT8 AddressSpaceId;<br> + UINT8 RegisterBitWidth;<br> + UINT8 RegisterBitOffset;<br> + UINT8 AccessSize;<br> + UINT64 Address;<br> +} EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE;<br> +<br> +//<br> +// Generic Address Space Address IDs<br> +//<br> +#define EFI_ACPI_6_1_SYSTEM_MEMORY 0<br> +#define EFI_ACPI_6_1_SYSTEM_IO 1<br> +#define EFI_ACPI_6_1_PCI_<wbr>CONFIGURATION_SPACE 2<br> +#define EFI_ACPI_6_1_EMBEDDED_<wbr>CONTROLLER 3<br> +#define EFI_ACPI_6_1_SMBUS 4<br> +#define EFI_ACPI_6_1_PLATFORM_<wbr>COMMUNICATION_CHANNEL 0x0A<br> +#define EFI_ACPI_6_1_FUNCTIONAL_FIXED_<wbr>HARDWARE 0x7F<br> +<br> +//<br> +// Generic Address Space Access Sizes<br> +//<br> +#define EFI_ACPI_6_1_UNDEFINED 0<br> +#define EFI_ACPI_6_1_BYTE 1<br> +#define EFI_ACPI_6_1_WORD 2<br> +#define EFI_ACPI_6_1_DWORD 3<br> +#define EFI_ACPI_6_1_QWORD 4<br> +<br> +//<br> +// ACPI 6.1 table structures<br> +//<br> +<br> +///<br> +/// Root System Description Pointer Structure<br> +///<br> +typedef struct {<br> + UINT64 Signature;<br> + UINT8 Checksum;<br> + UINT8 OemId[6];<br> + UINT8 Revision;<br> + UINT32 RsdtAddress;<br> + UINT32 Length;<br> + UINT64 XsdtAddress;<br> + UINT8 ExtendedChecksum;<br> + UINT8 Reserved[3];<br> +} EFI_ACPI_6_1_ROOT_SYSTEM_<wbr>DESCRIPTION_POINTER;<br> +<br> +///<br> +/// RSD_PTR Revision (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_ROOT_SYSTEM_<wbr>DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.1) says current value is 2<br> +<br> +///<br> +/// Common table header, this prefaces all ACPI tables, including FACS, but<br> +/// excluding the RSD PTR structure<br> +///<br> +typedef struct {<br> + UINT32 Signature;<br> + UINT32 Length;<br> +} EFI_ACPI_6_1_COMMON_HEADER;<br> +<br> +//<br> +// Root System Description Table<br> +// No definition needed as it is a common description table header, the same with<br> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.<br> +//<br> +<br> +///<br> +/// RSDT Revision (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_ROOT_SYSTEM_<wbr>DESCRIPTION_TABLE_REVISION 0x01<br> +<br> +//<br> +// Extended System Description Table<br> +// No definition needed as it is a common description table header, the same with<br> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.<br> +//<br> +<br> +///<br> +/// XSDT Revision (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_EXTENDED_SYSTEM_<wbr>DESCRIPTION_TABLE_REVISION 0x01<br> +<br> +///<br> +/// Fixed ACPI Description Table Structure (FADT)<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 FirmwareCtrl;<br> + UINT32 Dsdt;<br> + UINT8 Reserved0;<br> + UINT8 PreferredPmProfile;<br> + UINT16 SciInt;<br> + UINT32 SmiCmd;<br> + UINT8 AcpiEnable;<br> + UINT8 AcpiDisable;<br> + UINT8 S4BiosReq;<br> + UINT8 PstateCnt;<br> + UINT32 Pm1aEvtBlk;<br> + UINT32 Pm1bEvtBlk;<br> + UINT32 Pm1aCntBlk;<br> + UINT32 Pm1bCntBlk;<br> + UINT32 Pm2CntBlk;<br> + UINT32 PmTmrBlk;<br> + UINT32 Gpe0Blk;<br> + UINT32 Gpe1Blk;<br> + UINT8 Pm1EvtLen;<br> + UINT8 Pm1CntLen;<br> + UINT8 Pm2CntLen;<br> + UINT8 PmTmrLen;<br> + UINT8 Gpe0BlkLen;<br> + UINT8 Gpe1BlkLen;<br> + UINT8 Gpe1Base;<br> + UINT8 CstCnt;<br> + UINT16 PLvl2Lat;<br> + UINT16 PLvl3Lat;<br> + UINT16 FlushSize;<br> + UINT16 FlushStride;<br> + UINT8 DutyOffset;<br> + UINT8 DutyWidth;<br> + UINT8 DayAlrm;<br> + UINT8 MonAlrm;<br> + UINT8 Century;<br> + UINT16 IaPcBootArch;<br> + UINT8 Reserved1;<br> + UINT32 Flags;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE ResetReg;<br> + UINT8 ResetValue;<br> + UINT16 ArmBootArch;<br> + UINT8 MinorVersion;<br> + UINT64 XFirmwareCtrl;<br> + UINT64 XDsdt;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPm1aEvtBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPm1bEvtBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPm1aCntBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPm1bCntBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPm2CntBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XPmTmrBlk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XGpe0Blk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE XGpe1Blk;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE SleepControlReg;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE SleepStatusReg;<br> + UINT64 HypervisorVendorIdentity;<br> +} EFI_ACPI_6_1_FIXED_ACPI_<wbr>DESCRIPTION_TABLE;<br> +<br> +///<br> +/// FADT Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_FIXED_ACPI_<wbr>DESCRIPTION_TABLE_REVISION 0x06<br> +#define EFI_ACPI_6_1_FIXED_ACPI_<wbr>DESCRIPTION_TABLE_MINOR_<wbr>REVISION 0x01<br> +<br> +//<br> +// Fixed ACPI Description Table Preferred Power Management Profile<br> +//<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>UNSPECIFIED 0<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>DESKTOP 1<br> +#define EFI_ACPI_6_1_PM_PROFILE_MOBILE 2<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>WORKSTATION 3<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>ENTERPRISE_SERVER 4<br> +#define EFI_ACPI_6_1_PM_PROFILE_SOHO_<wbr>SERVER 5<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>APPLIANCE_PC 6<br> +#define EFI_ACPI_6_1_PM_PROFILE_<wbr>PERFORMANCE_SERVER 7<br> +#define EFI_ACPI_6_1_PM_PROFILE_TABLET 8<br> +<br> +//<br> +// Fixed ACPI Description Table Boot Architecture Flags<br> +// All other bits are reserved and must be set to 0.<br> +//<br> +#define EFI_ACPI_6_1_LEGACY_DEVICES BIT0<br> +#define EFI_ACPI_6_1_8042 BIT1<br> +#define EFI_ACPI_6_1_VGA_NOT_PRESENT BIT2<br> +#define EFI_ACPI_6_1_MSI_NOT_SUPPORTED BIT3<br> +#define EFI_ACPI_6_1_PCIE_ASPM_<wbr>CONTROLS BIT4<br> +#define EFI_ACPI_6_1_CMOS_RTC_NOT_<wbr>PRESENT BIT5<br> +<br> +//<br> +// Fixed ACPI Description Table Arm Boot Architecture Flags<br> +// All other bits are reserved and must be set to 0.<br> +//<br> +#define EFI_ACPI_6_1_ARM_PSCI_<wbr>COMPLIANT BIT0<br> +#define EFI_ACPI_6_1_ARM_PSCI_USE_HVC BIT1<br> +<br> +//<br> +// Fixed ACPI Description Table Fixed Feature Flags<br> +// All other bits are reserved and must be set to 0.<br> +//<br> +#define EFI_ACPI_6_1_WBINVD BIT0<br> +#define EFI_ACPI_6_1_WBINVD_FLUSH BIT1<br> +#define EFI_ACPI_6_1_PROC_C1 BIT2<br> +#define EFI_ACPI_6_1_P_LVL2_UP BIT3<br> +#define EFI_ACPI_6_1_PWR_BUTTON BIT4<br> +#define EFI_ACPI_6_1_SLP_BUTTON BIT5<br> +#define EFI_ACPI_6_1_FIX_RTC BIT6<br> +#define EFI_ACPI_6_1_RTC_S4 BIT7<br> +#define EFI_ACPI_6_1_TMR_VAL_EXT BIT8<br> +#define EFI_ACPI_6_1_DCK_CAP BIT9<br> +#define EFI_ACPI_6_1_RESET_REG_SUP BIT10<br> +#define EFI_ACPI_6_1_SEALED_CASE BIT11<br> +#define EFI_ACPI_6_1_HEADLESS BIT12<br> +#define EFI_ACPI_6_1_CPU_SW_SLP BIT13<br> +#define EFI_ACPI_6_1_PCI_EXP_WAK BIT14<br> +#define EFI_ACPI_6_1_USE_PLATFORM_<wbr>CLOCK BIT15<br> +#define EFI_ACPI_6_1_S4_RTC_STS_VALID BIT16<br> +#define EFI_ACPI_6_1_REMOTE_POWER_ON_<wbr>CAPABLE BIT17<br> +#define EFI_ACPI_6_1_FORCE_APIC_<wbr>CLUSTER_MODEL BIT18<br> +#define EFI_ACPI_6_1_FORCE_APIC_<wbr>PHYSICAL_DESTINATION_MODE BIT19<br> +#define EFI_ACPI_6_1_HW_REDUCED_ACPI BIT20<br> +#define EFI_ACPI_6_1_LOW_POWER_S0_<wbr>IDLE_CAPABLE BIT21<br> +<br> +///<br> +/// Firmware ACPI Control Structure<br> +///<br> +typedef struct {<br> + UINT32 Signature;<br> + UINT32 Length;<br> + UINT32 HardwareSignature;<br> + UINT32 FirmwareWakingVector;<br> + UINT32 GlobalLock;<br> + UINT32 Flags;<br> + UINT64 XFirmwareWakingVector;<br> + UINT8 Version;<br> + UINT8 Reserved0[3];<br> + UINT32 OspmFlags;<br> + UINT8 Reserved1[24];<br> +} EFI_ACPI_6_1_FIRMWARE_ACPI_<wbr>CONTROL_STRUCTURE;<br> +<br> +///<br> +/// FACS Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_FIRMWARE_ACPI_<wbr>CONTROL_STRUCTURE_VERSION 0x02<br> +<br> +///<br> +/// Firmware Control Structure Feature Flags<br> +/// All other bits are reserved and must be set to 0.<br> +///<br> +#define EFI_ACPI_6_1_S4BIOS_F BIT0<br> +#define EFI_ACPI_6_1_64BIT_WAKE_<wbr>SUPPORTED_F BIT1<br> +<br> +///<br> +/// OSPM Enabled Firmware Control Structure Flags<br> +/// All other bits are reserved and must be set to 0.<br> +///<br> +#define EFI_ACPI_6_1_OSPM_64BIT_WAKE_F BIT0<br> +<br> +//<br> +// Differentiated System Description Table,<br> +// Secondary System Description Table<br> +// and Persistent System Description Table,<br> +// no definition needed as they are common description table header, the same with<br> +// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.<br> +//<br> +#define EFI_ACPI_6_1_DIFFERENTIATED_<wbr>SYSTEM_DESCRIPTION_TABLE_<wbr>REVISION 0x02<br> +#define EFI_ACPI_6_1_SECONDARY_SYSTEM_<wbr>DESCRIPTION_TABLE_REVISION 0x02<br> +<br> +///<br> +/// Multiple APIC Description Table header definition. The rest of the table<br> +/// must be defined in a platform specific manner.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 LocalApicAddress;<br> + UINT32 Flags;<br> +} EFI_ACPI_6_1_MULTIPLE_APIC_<wbr>DESCRIPTION_TABLE_HEADER;<br> +<br> +///<br> +/// MADT Revision (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_MULTIPLE_APIC_<wbr>DESCRIPTION_TABLE_REVISION 0x04<br> +<br> +///<br> +/// Multiple APIC Flags<br> +/// All other bits are reserved and must be set to 0.<br> +///<br> +#define EFI_ACPI_6_1_PCAT_COMPAT BIT0<br> +<br> +//<br> +// Multiple APIC Description Table APIC structure types<br> +// All other values between 0x0D and 0x7F are reserved and<br> +// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.<br> +//<br> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>APIC 0x00<br> +#define EFI_ACPI_6_1_IO_APIC 0x01<br> +#define EFI_ACPI_6_1_INTERRUPT_SOURCE_<wbr>OVERRIDE 0x02<br> +#define EFI_ACPI_6_1_NON_MASKABLE_<wbr>INTERRUPT_SOURCE 0x03<br> +#define EFI_ACPI_6_1_LOCAL_APIC_NMI 0x04<br> +#define EFI_ACPI_6_1_LOCAL_APIC_<wbr>ADDRESS_OVERRIDE 0x05<br> +#define EFI_ACPI_6_1_IO_SAPIC 0x06<br> +#define EFI_ACPI_6_1_LOCAL_SAPIC 0x07<br> +#define EFI_ACPI_6_1_PLATFORM_<wbr>INTERRUPT_SOURCES 0x08<br> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>X2APIC 0x09<br> +#define EFI_ACPI_6_1_LOCAL_X2APIC_NMI 0x0A<br> +#define EFI_ACPI_6_1_GIC 0x0B<br> +#define EFI_ACPI_6_1_GICD 0x0C<br> +#define EFI_ACPI_6_1_GIC_MSI_FRAME 0x0D<br> +#define EFI_ACPI_6_1_GICR 0x0E<br> +#define EFI_ACPI_6_1_GIC_ITS 0x0F<br> +<br> +//<br> +// APIC Structure Definitions<br> +//<br> +<br> +///<br> +/// Processor Local APIC Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 AcpiProcessorUid;<br> + UINT8 ApicId;<br> + UINT32 Flags;<br> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>APIC_STRUCTURE;<br> +<br> +///<br> +/// Local APIC Flags. All other bits are reserved and must be 0.<br> +///<br> +#define EFI_ACPI_6_1_LOCAL_APIC_<wbr>ENABLED BIT0<br> +<br> +///<br> +/// IO APIC Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 IoApicId;<br> + UINT8 Reserved;<br> + UINT32 IoApicAddress;<br> + UINT32 GlobalSystemInterruptBase;<br> +} EFI_ACPI_6_1_IO_APIC_<wbr>STRUCTURE;<br> +<br> +///<br> +/// Interrupt Source Override Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 Bus;<br> + UINT8 Source;<br> + UINT32 GlobalSystemInterrupt;<br> + UINT16 Flags;<br> +} EFI_ACPI_6_1_INTERRUPT_SOURCE_<wbr>OVERRIDE_STRUCTURE;<br> +<br> +///<br> +/// Platform Interrupt Sources Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Flags;<br> + UINT8 InterruptType;<br> + UINT8 ProcessorId;<br> + UINT8 ProcessorEid;<br> + UINT8 IoSapicVector;<br> + UINT32 GlobalSystemInterrupt;<br> + UINT32 PlatformInterruptSourceFlags;<br> + UINT8 CpeiProcessorOverride;<br> + UINT8 Reserved[31];<br> +} EFI_ACPI_6_1_PLATFORM_<wbr>INTERRUPT_APIC_STRUCTURE;<br> +<br> +//<br> +// MPS INTI flags.<br> +// All other bits are reserved and must be set to 0.<br> +//<br> +#define EFI_ACPI_6_1_POLARITY (3 << 0)<br> +#define EFI_ACPI_6_1_TRIGGER_MODE (3 << 2)<br> +<br> +///<br> +/// Non-Maskable Interrupt Source Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Flags;<br> + UINT32 GlobalSystemInterrupt;<br> +} EFI_ACPI_6_1_NON_MASKABLE_<wbr>INTERRUPT_SOURCE_STRUCTURE;<br> +<br> +///<br> +/// Local APIC NMI Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 AcpiProcessorUid;<br> + UINT16 Flags;<br> + UINT8 LocalApicLint;<br> +} EFI_ACPI_6_1_LOCAL_APIC_NMI_<wbr>STRUCTURE;<br> +<br> +///<br> +/// Local APIC Address Override Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved;<br> + UINT64 LocalApicAddress;<br> +} EFI_ACPI_6_1_LOCAL_APIC_<wbr>ADDRESS_OVERRIDE_STRUCTURE;<br> +<br> +///<br> +/// IO SAPIC Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 IoApicId;<br> + UINT8 Reserved;<br> + UINT32 GlobalSystemInterruptBase;<br> + UINT64 IoSapicAddress;<br> +} EFI_ACPI_6_1_IO_SAPIC_<wbr>STRUCTURE;<br> +<br> +///<br> +/// Local SAPIC Structure<br> +/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 AcpiProcessorId;<br> + UINT8 LocalSapicId;<br> + UINT8 LocalSapicEid;<br> + UINT8 Reserved[3];<br> + UINT32 Flags;<br> + UINT32 ACPIProcessorUIDValue;<br> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>SAPIC_STRUCTURE;<br> +<br> +///<br> +/// Platform Interrupt Sources Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Flags;<br> + UINT8 InterruptType;<br> + UINT8 ProcessorId;<br> + UINT8 ProcessorEid;<br> + UINT8 IoSapicVector;<br> + UINT32 GlobalSystemInterrupt;<br> + UINT32 PlatformInterruptSourceFlags;<br> +} EFI_ACPI_6_1_PLATFORM_<wbr>INTERRUPT_SOURCES_STRUCTURE;<br> +<br> +///<br> +/// Platform Interrupt Source Flags.<br> +/// All other bits are reserved and must be set to 0.<br> +///<br> +#define EFI_ACPI_6_1_CPEI_PROCESSOR_<wbr>OVERRIDE BIT0<br> +<br> +///<br> +/// Processor Local x2APIC Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 Reserved[2];<br> + UINT32 X2ApicId;<br> + UINT32 Flags;<br> + UINT32 AcpiProcessorUid;<br> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>X2APIC_STRUCTURE;<br> +<br> +///<br> +/// Local x2APIC NMI Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Flags;<br> + UINT32 AcpiProcessorUid;<br> + UINT8 LocalX2ApicLint;<br> + UINT8 Reserved[3];<br> +} EFI_ACPI_6_1_LOCAL_X2APIC_NMI_<wbr>STRUCTURE;<br> +<br> +///<br> +/// GIC Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved;<br> + UINT32 CPUInterfaceNumber;<br> + UINT32 AcpiProcessorUid;<br> + UINT32 Flags;<br> + UINT32 ParkingProtocolVersion;<br> + UINT32 PerformanceInterruptGsiv;<br> + UINT64 ParkedAddress;<br> + UINT64 PhysicalBaseAddress;<br> + UINT64 GICV;<br> + UINT64 GICH;<br> + UINT32 VGICMaintenanceInterrupt;<br> + UINT64 GICRBaseAddress;<br> + UINT64 MPIDR;<br> + UINT8 ProcessorPowerEfficiencyClass;<br> + UINT8 Reserved2[3];<br> +} EFI_ACPI_6_1_GIC_STRUCTURE;<br> +<br> +///<br> +/// GIC Flags. All other bits are reserved and must be 0.<br> +///<br> +#define EFI_ACPI_6_1_GIC_ENABLED BIT0<br> +#define EFI_ACPI_6_1_PERFORMANCE_<wbr>INTERRUPT_MODEL BIT1<br> +#define EFI_ACPI_6_1_VGIC_MAINTENANCE_<wbr>INTERRUPT_MODE_FLAGS BIT2<br> +<br> +///<br> +/// GIC Distributor Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved1;<br> + UINT32 GicId;<br> + UINT64 PhysicalBaseAddress;<br> + UINT32 SystemVectorBase;<br> + UINT8 GicVersion;<br> + UINT8 Reserved2[3];<br> +} EFI_ACPI_6_1_GIC_DISTRIBUTOR_<wbr>STRUCTURE;<br> +<br> +///<br> +/// GIC Version<br> +///<br> +#define EFI_ACPI_6_1_GIC_V1 0x01<br> +#define EFI_ACPI_6_1_GIC_V2 0x02<br> +#define EFI_ACPI_6_1_GIC_V3 0x03<br> +#define EFI_ACPI_6_1_GIC_V4 0x04<br> +<br> +///<br> +/// GIC MSI Frame Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved1;<br> + UINT32 GicMsiFrameId;<br> + UINT64 PhysicalBaseAddress;<br> + UINT32 Flags;<br> + UINT16 SPICount;<br> + UINT16 SPIBase;<br> +} EFI_ACPI_6_1_GIC_MSI_FRAME_<wbr>STRUCTURE;<br> +<br> +///<br> +/// GIC MSI Frame Flags. All other bits are reserved and must be 0.<br> +///<br> +#define EFI_ACPI_6_1_SPI_COUNT_BASE_<wbr>SELECT BIT0<br> +<br> +///<br> +/// GICR Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved;<br> + UINT64 DiscoveryRangeBaseAddress;<br> + UINT32 DiscoveryRangeLength;<br> +} EFI_ACPI_6_1_GICR_STRUCTURE;<br> +<br> +///<br> +/// GIC Interrupt Translation Service Structure<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT16 Reserved;<br> + UINT32 GicItsId;<br> + UINT64 PhysicalBaseAddress;<br> + UINT32 Reserved2;<br> +} EFI_ACPI_6_1_GIC_ITS_<wbr>STRUCTURE;<br> +<br> +///<br> +/// Smart Battery Description Table (SBST)<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 WarningEnergyLevel;<br> + UINT32 LowEnergyLevel;<br> + UINT32 CriticalEnergyLevel;<br> +} EFI_ACPI_6_1_SMART_BATTERY_<wbr>DESCRIPTION_TABLE;<br> +<br> +///<br> +/// SBST Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_SMART_BATTERY_<wbr>DESCRIPTION_TABLE_REVISION 0x01<br> +<br> +///<br> +/// Embedded Controller Boot Resources Table (ECDT)<br> +/// The table is followed by a null terminated ASCII string that contains<br> +/// a fully qualified reference to the name space object.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE EcControl;<br> + EFI_ACPI_6_1_GENERIC_ADDRESS_<wbr>STRUCTURE EcData;<br> + UINT32 Uid;<br> + UINT8 GpeBit;<br> +} EFI_ACPI_6_1_EMBEDDED_<wbr>CONTROLLER_BOOT_RESOURCES_<wbr>TABLE;<br> +<br> +///<br> +/// ECDT Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_EMBEDDED_<wbr>CONTROLLER_BOOT_RESOURCES_<wbr>TABLE_REVISION 0x01<br> +<br> +///<br> +/// System Resource Affinity Table (SRAT). The rest of the table<br> +/// must be defined in a platform specific manner.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 Reserved1; ///< Must be set to 1<br> + UINT64 Reserved2;<br> +} EFI_ACPI_6_1_SYSTEM_RESOURCE_<wbr>AFFINITY_TABLE_HEADER;<br> +<br> +///<br> +/// SRAT Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_SYSTEM_RESOURCE_<wbr>AFFINITY_TABLE_REVISION 0x03<br> +<br> +//<br> +// SRAT structure types.<br> +// All other values between 0x04 an 0xFF are reserved and<br> +// will be ignored by OSPM.<br> +//<br> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>APIC_SAPIC_AFFINITY 0x00<br> +#define EFI_ACPI_6_1_MEMORY_AFFINITY 0x01<br> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>X2APIC_AFFINITY 0x02<br> +#define EFI_ACPI_6_1_GICC_AFFINITY 0x03<br> +<br> +///<br> +/// Processor Local APIC/SAPIC Affinity Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 ProximityDomain7To0;<br> + UINT8 ApicId;<br> + UINT32 Flags;<br> + UINT8 LocalSapicEid;<br> + UINT8 ProximityDomain31To8[3];<br> + UINT32 ClockDomain;<br> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>APIC_SAPIC_AFFINITY_STRUCTURE;<br> +<br> +///<br> +/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.<br> +///<br> +#define EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>APIC_SAPIC_ENABLED (1 << 0)<br> +<br> +///<br> +/// Memory Affinity Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT32 ProximityDomain;<br> + UINT16 Reserved1;<br> + UINT32 AddressBaseLow;<br> + UINT32 AddressBaseHigh;<br> + UINT32 LengthLow;<br> + UINT32 LengthHigh;<br> + UINT32 Reserved2;<br> + UINT32 Flags;<br> + UINT64 Reserved3;<br> +} EFI_ACPI_6_1_MEMORY_AFFINITY_<wbr>STRUCTURE;<br> +<br> +//<br> +// Memory Flags. All other bits are reserved and must be 0.<br> +//<br> +#define EFI_ACPI_6_1_MEMORY_ENABLED (1 << 0)<br> +#define EFI_ACPI_6_1_MEMORY_HOT_<wbr>PLUGGABLE (1 << 1)<br> +#define EFI_ACPI_6_1_MEMORY_<wbr>NONVOLATILE (1 << 2)<br> +<br> +///<br> +/// Processor Local x2APIC Affinity Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 Reserved1[2];<br> + UINT32 ProximityDomain;<br> + UINT32 X2ApicId;<br> + UINT32 Flags;<br> + UINT32 ClockDomain;<br> + UINT8 Reserved2[4];<br> +} EFI_ACPI_6_1_PROCESSOR_LOCAL_<wbr>X2APIC_AFFINITY_STRUCTURE;<br> +<br> +///<br> +/// GICC Affinity Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT32 ProximityDomain;<br> + UINT32 AcpiProcessorUid;<br> + UINT32 Flags;<br> + UINT32 ClockDomain;<br> +} EFI_ACPI_6_1_GICC_AFFINITY_<wbr>STRUCTURE;<br> +<br> +///<br> +/// GICC Flags. All other bits are reserved and must be 0.<br> +///<br> +#define EFI_ACPI_6_1_GICC_ENABLED (1 << 0)<br> +<br> +///<br> +/// System Locality Distance Information Table (SLIT).<br> +/// The rest of the table is a matrix.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT64 NumberOfSystemLocalities;<br> +} EFI_ACPI_6_1_SYSTEM_LOCALITY_<wbr>DISTANCE_INFORMATION_TABLE_<wbr>HEADER;<br> +<br> +///<br> +/// SLIT Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_SYSTEM_LOCALITY_<wbr>DISTANCE_INFORMATION_TABLE_<wbr>REVISION 0x01<br> +<br> +///<br> +/// Corrected Platform Error Polling Table (CPEP)<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT8 Reserved[8];<br> +} EFI_ACPI_6_1_CORRECTED_<wbr>PLATFORM_ERROR_POLLING_TABLE_<wbr>HEADER;<br> +<br> +///<br> +/// CPEP Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_CORRECTED_<wbr>PLATFORM_ERROR_POLLING_TABLE_<wbr>REVISION 0x01<br> +<br> +//<br> +// CPEP processor structure types.<br> +//<br> +#define EFI_ACPI_6_1_CPEP_PROCESSOR_<wbr>APIC_SAPIC 0x00<br> +<br> +///<br> +/// Corrected Platform Error Polling Processor Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Type;<br> + UINT8 Length;<br> + UINT8 ProcessorId;<br> + UINT8 ProcessorEid;<br> + UINT32 PollingInterval;<br> +} EFI_ACPI_6_1_CPEP_PROCESSOR_<wbr>APIC_SAPIC_STRUCTURE;<br> +<br> +///<br> +/// Maximum System Characteristics Table (MSCT)<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 OffsetProxDomInfo;<br> + UINT32 MaximumNumberOfProximityDomain<wbr>s;<br> + UINT32 MaximumNumberOfClockDomains;<br> + UINT64 MaximumPhysicalAddress;<br> +} EFI_ACPI_6_1_MAXIMUM_SYSTEM_<wbr>CHARACTERISTICS_TABLE_HEADER;<br> +<br> +///<br> +/// MSCT Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_MAXIMUM_SYSTEM_<wbr>CHARACTERISTICS_TABLE_REVISION 0x01<br> +<br> +///<br> +/// Maximum Proximity Domain Information Structure Definition<br> +///<br> +typedef struct {<br> + UINT8 Revision;<br> + UINT8 Length;<br> + UINT32 ProximityDomainRangeLow;<br> + UINT32 ProximityDomainRangeHigh;<br> + UINT32 MaximumProcessorCapacity;<br> + UINT64 MaximumMemoryCapacity;<br> +} EFI_ACPI_6_1_MAXIMUM_<wbr>PROXIMITY_DOMAIN_INFORMATION_<wbr>STRUCTURE;<br> +<br> +///<br> +/// ACPI RAS Feature Table definition.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT8 PlatformCommunicationChannelId<wbr>entifier[12];<br> +} EFI_ACPI_6_1_RAS_FEATURE_<wbr>TABLE;<br> +<br> +///<br> +/// RASF Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_RAS_FEATURE_<wbr>TABLE_REVISION 0x01<br> +<br> +///<br> +/// ACPI RASF Platform Communication Channel Shared Memory Region definition.<br> +///<br> +typedef struct {<br> + UINT32 Signature;<br> + UINT16 Command;<br> + UINT16 Status;<br> + UINT16 Version;<br> + UINT8 RASCapabilities[16];<br> + UINT8 SetRASCapabilities[16];<br> + UINT16 NumberOfRASFParameterBlocks;<br> + UINT32 SetRASCapabilitiesStatus;<br> +} EFI_ACPI_6_1_RASF_PLATFORM_<wbr>COMMUNICATION_CHANNEL_SHARED_<wbr>MEMORY_REGION;<br> +<br> +///<br> +/// ACPI RASF PCC command code<br> +///<br> +#define EFI_ACPI_6_1_RASF_PCC_COMMAND_<wbr>CODE_EXECUTE_RASF_COMMAND 0x01<br> +<br> +///<br> +/// ACPI RASF Platform RAS Capabilities<br> +///<br> +#define EFI_ACPI_6_1_RASF_PLATFORM_<wbr>RAS_CAPABILITY_HARDWARE_BASED_<wbr>PATROL_SCRUB_SUPPOTED 0x01<br> +#define EFI_ACPI_6_1_RASF_PLATFORM_<wbr>RAS_CAPABILITY_HARDWARE_BASED_<wbr>PATROL_SCRUB_SUPPOTED_AND_<wbr>EXPOSED_TO_SOFTWARE 0x02<br> +<br> +///<br> +/// ACPI RASF Parameter Block structure for PATROL_SCRUB<br> +///<br> +typedef struct {<br> + UINT16 Type;<br> + UINT16 Version;<br> + UINT16 Length;<br> + UINT16 PatrolScrubCommand;<br> + UINT64 RequestedAddressRange[2];<br> + UINT64 ActualAddressRange[2];<br> + UINT16 Flags;<br> + UINT8 RequestedSpeed;<br> +} EFI_ACPI_6_1_RASF_PATROL_<wbr>SCRUB_PLATFORM_BLOCK_<wbr>STRUCTURE;<br> +<br> +///<br> +/// ACPI RASF Patrol Scrub command<br> +///<br> +#define EFI_ACPI_6_1_RASF_PATROL_<wbr>SCRUB_COMMAND_GET_PATROL_<wbr>PARAMETERS 0x01<br> +#define EFI_ACPI_6_1_RASF_PATROL_<wbr>SCRUB_COMMAND_START_PATROL_<wbr>SCRUBBER 0x02<br> +#define EFI_ACPI_6_1_RASF_PATROL_<wbr>SCRUB_COMMAND_STOP_PATROL_<wbr>SCRUBBER 0x03<br> +<br> +///<br> +/// Memory Power State Table definition.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT8 PlatformCommunicationChannelId<wbr>entifier;<br> + UINT8 Reserved[3];<br> + // Memory Power Node Structure<br> + // Memory Power State Characteristics<br> +} EFI_ACPI_6_1_MEMORY_POWER_<wbr>STATUS_TABLE;<br> +<br> +///<br> +/// MPST Version (as defined in ACPI 6.1 spec.)<br> +///<br> +#define EFI_ACPI_6_1_MEMORY_POWER_<wbr>STATE_TABLE_REVISION 0x01<br> +<br> +///<br> +/// MPST Platform Communication Channel Shared Memory Region definition.<br> +///<br> +typedef struct {<br> + UINT32 Signature;<br> + UINT16 Command;<br> + UINT16 Status;<br> + UINT32 MemoryPowerCommandRegister;<br> + UINT32 MemoryPowerStatusRegister;<br> + UINT32 PowerStateId;<br> + UINT32 MemoryPowerNodeId;<br> + UINT64 MemoryEnergyConsumed;<br> + UINT64 ExpectedAveragePowerComsuned;<br> +} EFI_ACPI_6_1_MPST_PLATFORM_<wbr>COMMUNICATION_CHANNEL_SHARED_<wbr>MEMORY_REGION;<br> +<br> +///<br> +/// ACPI MPST PCC command code<br> +///<br> +#define EFI_ACPI_6_1_MPST_PCC_COMMAND_<wbr>CODE_EXECUTE_MPST_COMMAND 0x03<br> +<br> +///<br> +/// ACPI MPST Memory Power command<br> +///<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_COMMAND_GET_MEMORY_<wbr>POWER_STATE 0x01<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_COMMAND_SET_MEMORY_<wbr>POWER_STATE 0x02<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_COMMAND_GET_AVERAGE_<wbr>POWER_CONSUMED 0x03<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_COMMAND_GET_MEMORY_<wbr>ENERGY_CONSUMED 0x04<br> +<br> +///<br> +/// MPST Memory Power Node Table<br> +///<br> +typedef struct {<br> + UINT8 PowerStateValue;<br> + UINT8 PowerStateInformationIndex;<br> +} EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE;<br> +<br> +typedef struct {<br> + UINT8 Flag;<br> + UINT8 Reserved;<br> + UINT16 MemoryPowerNodeId;<br> + UINT32 Length;<br> + UINT64 AddressBase;<br> + UINT64 AddressLength;<br> + UINT32 NumberOfPowerStates;<br> + UINT32 NumberOfPhysicalComponents;<br> + // EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE MemoryPowerState[<wbr>NumberOfPowerStates];<br> + // UINT16 PhysicalComponentIdentifier[<wbr>NumberOfPhysicalComponents];<br> +} EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STRUCTURE;<br> +<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STRUCTURE_FLAG_ENABLE 0x01<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STRUCTURE_FLAG_POWER_<wbr>MANAGED 0x02<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STRUCTURE_FLAG_HOT_<wbr>PLUGGABLE 0x04<br> +<br> +typedef struct {<br> + UINT16 MemoryPowerNodeCount;<br> + UINT8 Reserved[2];<br> +} EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_NODE_TABLE;<br> +<br> +///<br> +/// MPST Memory Power State Characteristics Table<br> +///<br> +typedef struct {<br> + UINT8 PowerStateStructureID;<br> + UINT8 Flag;<br> + UINT16 Reserved;<br> + UINT32 AveragePowerConsumedInMPS0;<br> + UINT32 RelativePowerSavingToMPS0;<br> + UINT64 ExitLatencyToMPS0;<br> +} EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE_CHARACTERISTICS_<wbr>STRUCTURE;<br> +<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE_CHARACTERISTICS_<wbr>STRUCTURE_FLAG_MEMORY_CONTENT_<wbr>PRESERVED 0x01<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE_CHARACTERISTICS_<wbr>STRUCTURE_FLAG_AUTONOMOUS_<wbr>MEMORY_POWER_STATE_ENTRY 0x02<br> +#define EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE_CHARACTERISTICS_<wbr>STRUCTURE_FLAG_AUTONOMOUS_<wbr>MEMORY_POWER_STATE_EXIT 0x04<br> +<br> +typedef struct {<br> + UINT16 MemoryPowerStateCharacteristic<wbr>sCount;<br> + UINT8 Reserved[2];<br> +} EFI_ACPI_6_1_MPST_MEMORY_<wbr>POWER_STATE_CHARACTERISTICS_<wbr>TABLE;<br> +<br> +///<br> +/// Memory Topology Table definition.<br> +///<br> +typedef struct {<br> + EFI_ACPI_DESCRIPTION_HEADER Header;<br> + UINT32 Reserved;<br> +} EFI_ACPI_6_1_MEMORY_TOPOLOGY_<wbr>TABLE;<br> *** 1986 LINES SKIPPED ***<br> <br> </blockquote>home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPjTQNGNc0fn_Gpu36xVbLPpF4-XSj1vBtJPt_3H-EvbX68egA>
