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 ***
>
>

Reply via email to