Skip site navigation (1)Skip section navigation (2)
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 &lt;<a href="mailto:imp@freebsd.org">imp@freebsd.org</a>&gt; 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 &lt;imp@FreeBSD.org&gt;<br>
AuthorDate: 2026-06-22 22:06:24 +0000<br>
Commit:     Warner Losh &lt;imp@FreeBSD.org&gt;<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.&lt;BR&gt;</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&lt;BR&gt;<br>
+  Copyright (c) 2020, ARM Ltd. All rights reserved.&lt;BR&gt;<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 &lt;IndustryStandard/Acpi60.h&gt;<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 ///&lt; 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 &lt;&lt; 0)<br>
+#define EFI_ACPI_6_1_TRIGGER_MODE  (3 &lt;&lt; 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; ///&lt; 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 &lt;&lt; 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 &lt;&lt; 0)<br>
+#define EFI_ACPI_6_1_MEMORY_HOT_<wbr>PLUGGABLE  (1 &lt;&lt; 1)<br>
+#define EFI_ACPI_6_1_MEMORY_<wbr>NONVOLATILE    (1 &lt;&lt; 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 &lt;&lt; 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>