[edk2-devel] [edk2-platforms][PATCH V3 1/9] Platform/Sgi: Update ACPI version to v6.4
PierreGondois
pierre.gondois at arm.com
Thu Jun 23 09:35:40 UTC 2022
Hello Pranav,
On 6/9/22 18:56, Pranav Madhu via groups.io wrote:
> Update the common ACPI tables used by all the Neoverse Reference Design
> platforms to ACPI version v6.4. Significant changes introduced are
> update API/macro definitions to incorporate with the extra fields
> introduced in ACPI 6.4, such as SPE overflow interrupt number field to
> GICC structure of MADT table and adding cache ID field to the cache
> structure of PPTT table.
>
> Signed-off-by: Pranav Madhu <pranav.madhu at arm.com>
> ---
> Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h | 227 ++++++++++----------
> Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc | 30 +--
> Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc | 38 ++--
> Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc | 69 +++---
> Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc | 26 +--
> Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc | 29 ++-
> 6 files changed, 227 insertions(+), 192 deletions(-)
>
> diff --git a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> index e9b6923cb035..8393897cd4e8 100644
> --- a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> +++ b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> @@ -1,6 +1,6 @@
> /** @file
> *
> -* Copyright (c) 2018-2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> *
> * SPDX-License-Identifier: BSD-2-Clause-Patent
> *
> @@ -41,134 +41,143 @@
> #define OSC_CAP_PLAT_COORDINATED_LPI (1U << 7)
> #define OSC_CAP_OS_INITIATED_LPI (1U << 8)
>
> +// Cache type identifier used to calculate unique cache ID for PPTT
> +typedef enum {
> + L1DataCache,
> + L1InstructionCache,
> + L2Cache,
> + L3Cache,
> +} RD_PPTT_CACHE;
> +
Would it make sense to also have one unique macro to generate the
cache id ? This would avoid to have multiple definitions for
each platform and sometimes multiple definitions for the same
platform (e.g. RDE1EDGE_PPTT_[CLUSTER|CORE]_CACHE_ID()):
/** Helper macro to calculate a unique cache ID.
@param [in] PackageId Package instance number. -1 to ignore.
@param [in] ClusterId Cluster instance number. -1 to ignore.
@param [in] CoreId Core instance number. -1 to ignore.
@param [in] CacheType Cache type. -1 to ignore.
**/
#define PPTT_CACHE_ID(PackageId, ClusterId, CoreId, CacheType) \
(((PackageId) != -1) ? ((PackageId) << 28) : (0xF << 28)) | \
(((ClusterId) != -1) ? ((ClusterId) << 20) : (0xFF << 20)) | \
(((CoreId) != -1) ? ((CoreId) << 8) : (0x3FF << 8)) | \
(((CacheType) != -1) ? (CacheType) : 0xF)
Other than this,
Reviewed-by: Pierre Gondois <pierre.gondois at arm.com>
> #pragma pack(1)
> // PPTT processor core structure
> typedef struct {
> - EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR Core;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR Core;
> UINT32 ResourceOffset[2];
> - EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE DCache;
> - EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE ICache;
> - EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE L2Cache;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE DCache;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE ICache;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE L2Cache;
> } RD_PPTT_CORE;
>
> // PPTT processor cluster structure
> typedef struct {
> - EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR Cluster;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR Cluster;
> UINT32 ResourceOffset;
> - EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE L3Cache;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE L3Cache;
> RD_PPTT_CORE Core[CORE_COUNT];
> } RD_PPTT_CLUSTER;
>
> // PPTT processor cluster structure without cache
> typedef struct {
> - EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR Cluster;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR Cluster;
> RD_PPTT_CORE Core[CORE_COUNT];
> } RD_PPTT_MINIMAL_CLUSTER;
>
> // PPTT processor package structure
> typedef struct {
> - EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR Package;
> + EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR Package;
> RD_PPTT_MINIMAL_CLUSTER Cluster[CLUSTER_COUNT];
> } RD_PPTT_PACKAGE;
> #pragma pack ()
>
> //
> // PPTT processor structure flags for different SoC components as defined in
> -// ACPI 6.3 specification
> +// ACPI 6.4 specification
> //
>
> // Processor structure flags for SoC package
> #define PPTT_PROCESSOR_PACKAGE_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF, \
> - EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL \
> + EFI_ACPI_6_4_PPTT_PACKAGE_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF, \
> + EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL \
> }
>
> // Processor structure flags for cluster
> #define PPTT_PROCESSOR_CLUSTER_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF, \
> - EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL \
> + EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF, \
> + EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL \
> }
>
> // Processor structure flags for cluster with multi-thread core
> #define PPTT_PROCESSOR_CLUSTER_THREADED_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF, \
> - EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL \
> + EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF, \
> + EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL \
> }
>
> // Processor structure flags for single-thread core
> #define PPTT_PROCESSOR_CORE_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_LEAF \
> + EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_LEAF \
> }
>
> // Processor structure flags for multi-thread core
> #define PPTT_PROCESSOR_CORE_THREADED_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF, \
> - EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL \
> + EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF, \
> + EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL \
> }
>
> // Processor structure flags for CPU thread
> #define PPTT_PROCESSOR_THREAD_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID, \
> - EFI_ACPI_6_3_PPTT_PROCESSOR_IS_THREAD, \
> - EFI_ACPI_6_3_PPTT_NODE_IS_LEAF \
> + EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID, \
> + EFI_ACPI_6_4_PPTT_PROCESSOR_IS_THREAD, \
> + EFI_ACPI_6_4_PPTT_NODE_IS_LEAF \
> }
>
> -// PPTT cache structure flags as defined in ACPI 6.3 Specification
> +// PPTT cache structure flags as defined in ACPI 6.4 Specification
> #define PPTT_CACHE_STRUCTURE_FLAGS \
> { \
> - EFI_ACPI_6_3_PPTT_CACHE_SIZE_VALID, \
> - EFI_ACPI_6_3_PPTT_NUMBER_OF_SETS_VALID, \
> - EFI_ACPI_6_3_PPTT_ASSOCIATIVITY_VALID, \
> - EFI_ACPI_6_3_PPTT_ALLOCATION_TYPE_VALID, \
> - EFI_ACPI_6_3_PPTT_CACHE_TYPE_VALID, \
> - EFI_ACPI_6_3_PPTT_WRITE_POLICY_VALID, \
> - EFI_ACPI_6_3_PPTT_LINE_SIZE_VALID \
> + EFI_ACPI_6_4_PPTT_CACHE_SIZE_VALID, \
> + EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_VALID, \
> + EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_VALID, \
> + EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_VALID, \
> + EFI_ACPI_6_4_PPTT_CACHE_TYPE_VALID, \
> + EFI_ACPI_6_4_PPTT_WRITE_POLICY_VALID, \
> + EFI_ACPI_6_4_PPTT_LINE_SIZE_VALID, \
> + EFI_ACPI_6_4_PPTT_CACHE_ID_VALID \
> }
>
> // PPTT cache attributes for data cache
> #define PPTT_DATA_CACHE_ATTR \
> { \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_DATA, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_DATA, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> }
>
> // PPTT cache attributes for instruction cache
> #define PPTT_INST_CACHE_ATTR \
> { \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> }
>
> // PPTT cache attributes for unified cache
> #define PPTT_UNIFIED_CACHE_ATTR \
> { \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED, \
> - EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED, \
> + EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK \
> }
>
> // A macro to initialise the common header part of EFI ACPI tables as defined by
> @@ -185,12 +194,13 @@ typedef struct {
> EFI_ACPI_ARM_CREATOR_REVISION /* UINT32 CreatorRevision */ \
> }
>
> -// EFI_ACPI_6_2_GIC_STRUCTURE
> -#define EFI_ACPI_6_2_GICC_STRUCTURE_INIT(GicId, AcpiCpuUid, Mpidr, Flags, \
> - PmuIrq, GicBase, GicVBase, GicHBase, GsivId, GicRBase, Efficiency) \
> +// EFI_ACPI_6_4_GIC_STRUCTURE
> +#define EFI_ACPI_6_4_GICC_STRUCTURE_INIT(GicId, AcpiCpuUid, Mpidr, Flags, \
> + PmuIrq, GicBase, GicVBase, GicHBase, GsivId, GicRBase, Efficiency, \
> + SpeOverflowInterrupt) \
> { \
> - EFI_ACPI_6_2_GIC, /* Type */ \
> - sizeof (EFI_ACPI_6_2_GIC_STRUCTURE), /* Length */ \
> + EFI_ACPI_6_4_GIC, /* Type */ \
> + sizeof (EFI_ACPI_6_4_GIC_STRUCTURE), /* Length */ \
> EFI_ACPI_RESERVED_WORD, /* Reserved */ \
> GicId, /* CPUInterfaceNumber */ \
> AcpiCpuUid, /* AcpiProcessorUid */ \
> @@ -205,19 +215,16 @@ typedef struct {
> GicRBase, /* GICRBaseAddress */ \
> Mpidr, /* MPIDR */ \
> Efficiency, /* ProcessorPowerEfficiencyClass */ \
> - { \
> - EFI_ACPI_RESERVED_BYTE, /* Reserved2[0] */ \
> - EFI_ACPI_RESERVED_BYTE, /* Reserved2[1] */ \
> - EFI_ACPI_RESERVED_BYTE /* Reserved2[2] */ \
> - } \
> + EFI_ACPI_RESERVED_BYTE, /* Reserved2 */ \
> + SpeOverflowInterrupt /* SpeOverflowInterrupt */ \
> }
>
> -// EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE
> -#define EFI_ACPI_6_2_GIC_DISTRIBUTOR_INIT(GicDistHwId, GicDistBase, \
> +// EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE
> +#define EFI_ACPI_6_4_GIC_DISTRIBUTOR_INIT(GicDistHwId, GicDistBase, \
> GicDistVector, GicVersion) \
> { \
> - EFI_ACPI_6_2_GICD, /* Type */ \
> - sizeof (EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE), \
> + EFI_ACPI_6_4_GICD, /* Type */ \
> + sizeof (EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE), \
> EFI_ACPI_RESERVED_WORD, /* Reserved1 */ \
> GicDistHwId, /* GicId */ \
> GicDistBase, /* PhysicalBaseAddress */ \
> @@ -230,43 +237,43 @@ typedef struct {
> } \
> }
>
> -// EFI_ACPI_6_2_GICR_STRUCTURE
> -#define EFI_ACPI_6_2_GIC_REDISTRIBUTOR_INIT(RedisRegionAddr, RedisDiscLength) \
> +// EFI_ACPI_6_4_GICR_STRUCTURE
> +#define EFI_ACPI_6_4_GIC_REDISTRIBUTOR_INIT(RedisRegionAddr, RedisDiscLength) \
> { \
> - EFI_ACPI_6_2_GICR, /* Type */ \
> - sizeof (EFI_ACPI_6_2_GICR_STRUCTURE), /* Length */ \
> + EFI_ACPI_6_4_GICR, /* Type */ \
> + sizeof (EFI_ACPI_6_4_GICR_STRUCTURE), /* Length */ \
> EFI_ACPI_RESERVED_WORD, /* Reserved */ \
> RedisRegionAddr, /* DiscoveryRangeBaseAddress */ \
> RedisDiscLength /* DiscoveryRangeLength */ \
> }
>
> -// EFI_ACPI_6_2_GIC_ITS_STRUCTURE
> -#define EFI_ACPI_6_2_GIC_ITS_INIT(GicItsId, GicItsBase) \
> +// EFI_ACPI_6_4_GIC_ITS_STRUCTURE
> +#define EFI_ACPI_6_4_GIC_ITS_INIT(GicItsId, GicItsBase) \
> { \
> - EFI_ACPI_6_2_GIC_ITS, /* Type */ \
> - sizeof (EFI_ACPI_6_2_GIC_ITS_STRUCTURE), \
> + EFI_ACPI_6_4_GIC_ITS, /* Type */ \
> + sizeof (EFI_ACPI_6_4_GIC_ITS_STRUCTURE), \
> EFI_ACPI_RESERVED_WORD, /* Reserved */ \
> GicItsId, /* GicItsId */ \
> GicItsBase, /* PhysicalBaseAddress */ \
> EFI_ACPI_RESERVED_DWORD /* DiscoveryRangeLength */ \
> }
>
> -// EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE
> -#define EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE_INIT( \
> +// EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE
> +#define EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE_INIT( \
> ProximityDomain, Base, Length, Flags) \
> { \
> - 1, sizeof (EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE), ProximityDomain, \
> + 1, sizeof (EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE), ProximityDomain, \
> EFI_ACPI_RESERVED_WORD, (Base) & 0xffffffff, \
> (Base) >> 32, (Length) & 0xffffffff, \
> (Length) >> 32, EFI_ACPI_RESERVED_DWORD, Flags, \
> EFI_ACPI_RESERVED_QWORD \
> }
>
> -// EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE
> -#define EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE_INIT( \
> +// EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE
> +#define EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE_INIT( \
> ProximityDomain, ACPIProcessorUID, Flags, ClockDomain) \
> { \
> - 3, sizeof (EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE), ProximityDomain, \
> + 3, sizeof (EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE), ProximityDomain, \
> ACPIProcessorUID, Flags, ClockDomain \
> }
>
> @@ -274,16 +281,16 @@ typedef struct {
> // HMAT related structures
> //
> // Memory Proximity Domain Attributes Structure
> -// Refer Section 5.2.27.3 in ACPI Specification, Version 6.3
> -#define EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_INIT( \
> +// Refer Section 5.2.27.3 in ACPI Specification, Version 6.4
> +#define EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_INIT( \
> Flags, ProximityDomainForAttachedIntiator, ProximityDomainForMemory) \
> { \
> - EFI_ACPI_6_3_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES, \
> + EFI_ACPI_6_4_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES, \
> { \
> EFI_ACPI_RESERVED_BYTE, \
> EFI_ACPI_RESERVED_BYTE \
> }, \
> - sizeof (EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES), \
> + sizeof (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES), \
> { \
> Flags, \
> 0 \
> @@ -319,28 +326,27 @@ typedef struct {
> }
>
> // System Locality Latency and Bandwidth Information Structure
> -// Refer Section 5.2.27.4 in ACPI Specification, Version 6.3
> -#define EFI_ACPI_6_3_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_INIT( \
> - Flags, DataType, NumInitiatorProximityDomains, \
> +// Refer Section 5.2.27.4 in ACPI Specification, Version 6.4
> +#define EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_INIT( \
> + Flags, DataType, MinTransferSize, NumInitiatorProximityDomains, \
> NumTargetProximityDomains, EntryBaseUnit) \
> { \
> - EFI_ACPI_6_3_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO, \
> + EFI_ACPI_6_4_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO, \
> { \
> EFI_ACPI_RESERVED_BYTE, \
> EFI_ACPI_RESERVED_BYTE \
> }, \
> - sizeof (EFI_ACPI_6_3_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO) + \
> + sizeof (EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO) + \
> (4 * NumInitiatorProximityDomains) + (4 * NumTargetProximityDomains) + \
> (2 * NumInitiatorProximityDomains * NumTargetProximityDomains), \
> { \
> Flags, \
> + 0, \
> 0 \
> }, \
> + MinTransferSize, \
> DataType, \
> - { \
> - EFI_ACPI_RESERVED_BYTE, \
> - EFI_ACPI_RESERVED_BYTE \
> - }, \
> + EFI_ACPI_RESERVED_BYTE, \
> NumInitiatorProximityDomains, \
> NumTargetProximityDomains, \
> { \
> @@ -353,17 +359,17 @@ typedef struct {
> }
>
> // Memory Side Cache Information Structure
> -// Refer Section 5.2.27.5 in ACPI Specification, Version 6.3
> -#define EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_INIT( \
> +// Refer Section 5.2.27.5 in ACPI Specification, Version 6.4
> +#define EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_INIT( \
> MemoryProximityDomain, MemorySideCacheSize, CacheAttributes, \
> NumberOfSmbiosHandles) \
> { \
> - EFI_ACPI_6_3_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO, \
> + EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO, \
> { \
> EFI_ACPI_RESERVED_BYTE, \
> EFI_ACPI_RESERVED_BYTE \
> }, \
> - sizeof (EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO) + \
> + sizeof (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO) + \
> (NumberOfSmbiosHandles * 2), \
> MemoryProximityDomain, \
> { \
> @@ -382,7 +388,7 @@ typedef struct {
> }
>
> /** A macro to initialise the Memory Side Cache Information Attributes.
> - See Table 5.124 in ACPI Specification, Version 6.3
> + See Table 5.130 in ACPI Specification, Version 6.4
>
> @param [in] TotalCacheLevels Total Cache Levels for this Memory Proximity.
> @param [in] CacheLevel Cache Level described in this structure.
> @@ -397,11 +403,11 @@ typedef struct {
> TotalCacheLevels, CacheLevel, CacheAssociativity, WritePolicy, CacheLineSize \
> }
>
> -// EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR
> -#define EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT(Length, Flag, Parent, \
> +// EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR
> +#define EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_INIT(Length, Flag, Parent, \
> ACPIProcessorID, NumberOfPrivateResource) \
> { \
> - EFI_ACPI_6_3_PPTT_TYPE_PROCESSOR, /* Type 0 */ \
> + EFI_ACPI_6_4_PPTT_TYPE_PROCESSOR, /* Type 0 */ \
> Length, /* Length */ \
> { \
> EFI_ACPI_RESERVED_BYTE, \
> @@ -413,12 +419,12 @@ typedef struct {
> NumberOfPrivateResource /* Resource count */ \
> }
>
> -// EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE
> -#define EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT(Flag, NextLevelCache, Size, \
> - NoOfSets, Associativity, Attributes, LineSize) \
> +// EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE
> +#define EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_INIT(Flag, NextLevelCache, Size, \
> + NoOfSets, Associativity, Attributes, LineSize, CacheId) \
> { \
> - EFI_ACPI_6_3_PPTT_TYPE_CACHE, /* Type 1 */ \
> - sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE), /* Length */ \
> + EFI_ACPI_6_4_PPTT_TYPE_CACHE, /* Type 1 */ \
> + sizeof (EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE), /* Length */ \
> { \
> EFI_ACPI_RESERVED_BYTE, \
> EFI_ACPI_RESERVED_BYTE, \
> @@ -429,7 +435,8 @@ typedef struct {
> NoOfSets, /* Num of sets */ \
> Associativity, /* Num of ways */ \
> Attributes, /* Cache attributes */ \
> - LineSize /* Line size in bytes */ \
> + LineSize, /* Line size in bytes */ \
> + CacheId /* Cache id */ \
> }
>
> /** Helper macro for CPPC _CPC object initialization. Use of this macro is
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc b/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
> index 279f847cce4c..b85e7272fd82 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
> @@ -1,16 +1,22 @@
> /** @file
> -* Debug Port Table 2 (DBG2)
> -*
> -* Copyright (c) 2018, ARM Limited. All rights reserved.
> -*
> -* SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> + Debug Port Table 2 (DBPG2)
> +
> + Debug Port Table 2 is used in platform firmware to describe the debug
> + ports available on the system to the OS. The reference design platforms use
> + the non-secure UART port in the compute subsystem as the debug port.
> +
> + Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + @par Specification Reference:
> + - https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup
> + /acpi-debug-port-table
> **/
>
> -#include "SgiAcpiHeader.h"
> -#include <Library/AcpiLib.h>
> -#include <IndustryStandard/Acpi62.h>
> #include <IndustryStandard/DebugPort2Table.h>
> +#include <Library/AcpiLib.h>
> +#include "SgiAcpiHeader.h"
>
> #define SGI_DBG2_NUM_DEBUG_PORTS 1
> #define SGI_DBG2_NUM_GAS 1
> @@ -21,7 +27,7 @@
>
> typedef struct {
> EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device;
> - EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister;
> + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister;
> UINT32 AddressSize;
> UINT8 NameSpaceString[SGI_DBG2_NS_STR_LENGTH];
> } DBG2_DEBUG_DEVICE_INFORMATION;
> @@ -48,7 +54,7 @@ typedef struct {
> OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, BaseAddressRegister), /* UINT16 BaseAddressRegister Offset */ \
> OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, AddressSize) /* UINT16 AddressSize Offset */ \
> }, \
> - ARM_GAS32 (UartBase), /* EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
> + ARM_GAS32 (UartBase), /* EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
> UartAddrLen, /* UINT32 AddressSize */ \
> UartNameStr /* UINT8 NameSpaceString[MAX_DBG2_NAME_LEN] */ \
> }
> @@ -56,7 +62,7 @@ typedef struct {
> STATIC DBG2_TABLE Dbg2 = {
> {
> ARM_ACPI_HEADER (
> - EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE,
> + EFI_ACPI_6_4_DEBUG_PORT_2_TABLE_SIGNATURE,
> DBG2_TABLE,
> EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION
> ),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc b/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
> index 9472aff2e054..5ad448d9c9d2 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
> @@ -1,26 +1,32 @@
> /** @file
> -* Fixed ACPI Description Table (FADT)
> -*
> -* Copyright (c) 2018, ARM Limited. All rights reserved.
> -*
> -* SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> + Fixed ACPI Description Table (FADT)
> +
> + FADT defines various fixed hardware ACPI information vital to an ACPI
> + compatible OS. FADT also has a pointer to the DSDT that contains the
> + Differentiated Definition Block, which in turn provides variable information
> + to an ACPI-compatible OS concerning the base system design.
> +
> + Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + @par Specification Reference:
> + - ACPI 6.4, Chapter 5, Section 5.2.9, Fixed ACPI Description Table
> **/
>
> -#include "SgiAcpiHeader.h"
> #include <Library/AcpiLib.h>
> -#include <IndustryStandard/Acpi.h>
> +#include "SgiAcpiHeader.h"
>
> -STATIC EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
> +STATIC EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
> ARM_ACPI_HEADER (
> - EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
> - EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE,
> - EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE,
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
> ),
> 0, // UINT32 FirmwareCtrl
> 0, // UINT32 Dsdt
> EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0
> - EFI_ACPI_6_2_PM_PROFILE_ENTERPRISE_SERVER, // UINT8 PreferredPmProfile
> + EFI_ACPI_6_4_PM_PROFILE_ENTERPRISE_SERVER, // UINT8 PreferredPmProfile
> 0, // UINT16 SciInt
> 0, // UINT32 SmiCmd
> 0, // UINT8 AcpiEnable
> @@ -54,11 +60,11 @@ STATIC EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
> 0, // UINT8 Century
> 0, // UINT16 IaPcBootArch
> 0, // UINT8 Reserved1
> - EFI_ACPI_6_2_HW_REDUCED_ACPI | EFI_ACPI_6_2_LOW_POWER_S0_IDLE_CAPABLE, // UINT32 Flags
> + EFI_ACPI_6_4_HW_REDUCED_ACPI | EFI_ACPI_6_4_LOW_POWER_S0_IDLE_CAPABLE, // UINT32 Flags
> NULL_GAS, // GAS ResetReg
> 0, // UINT8 ResetValue
> - EFI_ACPI_6_2_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags
> - EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision
> + EFI_ACPI_6_4_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision
> 0, // UINT64 XFirmwareCtrl
> 0, // UINT64 XDsdt
> NULL_GAS, // GAS XPm1aEvtBlk
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc b/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
> index b53cbb228f92..70765f87e537 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
> @@ -1,16 +1,21 @@
> /** @file
> -* Generic Timer Description Table (GTDT)
> -*
> -* Copyright (c) 2018, ARM Limited. All rights reserved.
> -*
> -* SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> + Generic Timer Description Table (GTDT)
> +
> + GTDT provides OSPM with information about a system’s Generic Timers
> + configuration. This table lists the watchdog and generic timer instances
> + available on the reference design platforms.
> +
> + Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + @par Specification Reference:
> + - ACPI 6.4, Chapter 5, Section 5.2.24, Generic Timer Description Table
> **/
>
> -#include "SgiAcpiHeader.h"
> #include <Library/AcpiLib.h>
> #include <Library/PcdLib.h>
> -#include <IndustryStandard/Acpi62.h>
> +#include "SgiAcpiHeader.h"
>
> #define SGI_PLATFORM_WATCHDOG_COUNT 2
> #define SGI_PLATFORM_TIMER_COUNT (SGI_PLATFORM_WATCHDOG_COUNT + 1)
> @@ -18,7 +23,7 @@
>
> #define SYSTEM_TIMER_BASE_ADDRESS 0xFFFFFFFFFFFFFFFF
> #define GTDT_GLOBAL_FLAGS 0
> -#define GTDT_GTIMER_FLAGS EFI_ACPI_6_2_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY
> +#define GTDT_GTIMER_FLAGS EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY
>
> #define SGI_GT_BLOCK_CTL_BASE 0x2A810000
> #define SGI_GT_BLOCK_FRAME1_CTL_BASE 0x2A820000
> @@ -30,18 +35,18 @@
> #define SGI_GT_BLOCK_FRAME0_GSIV FixedPcdGet32 (PcdGtFrame0Gsiv)
>
> #define SGI_GTX_TIMER_FLAGS 0
> -#define GTX_TIMER_SECURE EFI_ACPI_6_2_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER
> +#define GTX_TIMER_SECURE EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER
> #define GTX_TIMER_NON_SECURE 0
> -#define GTX_TIMER_SAVE_CONTEXT EFI_ACPI_6_2_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY
> +#define GTX_TIMER_SAVE_CONTEXT EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY
> #define SGI_GTX_COMMON_FLAGS_S (GTX_TIMER_SAVE_CONTEXT | GTX_TIMER_SECURE)
> #define SGI_GTX_COMMON_FLAGS_NS (GTX_TIMER_SAVE_CONTEXT | GTX_TIMER_NON_SECURE)
>
> -#define EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT( \
> +#define EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT( \
> RefreshFramePhysicalAddress, ControlFramePhysicalAddress, \
> WatchdogTimerGSIV, WatchdogTimerFlags) \
> { \
> - EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG, \
> - sizeof (EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), \
> + EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG, \
> + sizeof (EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE), \
> EFI_ACPI_RESERVED_WORD, \
> RefreshFramePhysicalAddress, \
> ControlFramePhysicalAddress, \
> @@ -52,20 +57,20 @@
> #pragma pack (1)
>
> typedef struct {
> - EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt;
> - EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE GtBlock;
> - EFI_ACPI_6_2_GTDT_GT_BLOCK_TIMER_STRUCTURE Frames[SGI_TIMER_FRAMES_COUNT];
> - EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE Watchdogs[SGI_PLATFORM_WATCHDOG_COUNT];
> -} EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES;
> + EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt;
> + EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE GtBlock;
> + EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE Frames[SGI_TIMER_FRAMES_COUNT];
> + EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE Watchdogs[SGI_PLATFORM_WATCHDOG_COUNT];
> +} EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES;
>
> #pragma pack ()
>
> -STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
> +STATIC EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
> {
> ARM_ACPI_HEADER (
> - EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
> - EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES,
> - EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION
> + EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
> + EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES,
> + EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION
> ),
> SYSTEM_TIMER_BASE_ADDRESS, // UINT64 PhysicalAddress
> 0, // UINT32 Reserved
> @@ -79,17 +84,19 @@ STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
> GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL2TimerFlags
> 0xFFFFFFFFFFFFFFFF, // UINT64 CntReadBasePhysicalAddress
> SGI_PLATFORM_TIMER_COUNT, // UINT32 PlatformTimerCount
> - sizeof (EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE) // UINT32 PlatfromTimerOffset
> + sizeof (EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE), // UINT32 PlatfromTimerOffset
> + 0, // UINT32 VirtualPL2TimerGSIV
> + 0 // UINT32 VirtualPL2TimerFlags
> },
> {
> - EFI_ACPI_6_2_GTDT_GT_BLOCK, // UINT8 Type
> - sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE) + // UINT16 Length
> - sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
> + EFI_ACPI_6_4_GTDT_GT_BLOCK, // UINT8 Type
> + sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE) + // UINT16 Length
> + sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
> SGI_TIMER_FRAMES_COUNT,
> EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved
> SGI_GT_BLOCK_CTL_BASE, // UINT64 CntCtlBase
> SGI_TIMER_FRAMES_COUNT, // UINT32 GTBlockTimerCount
> - sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE) // UINT32 GTBlockTimerOffset
> + sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE) // UINT32 GTBlockTimerOffset
> },
> {
> {
> @@ -124,17 +131,17 @@ STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
> }
> },
> {
> - EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT (
> + EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT (
> FixedPcdGet32 (PcdGenericWatchdogRefreshBase),
> FixedPcdGet32 (PcdGenericWatchdogControlBase),
> FixedPcdGet32 (PcdWdogWS0Gsiv),
> 0
> ),
> - EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT (
> + EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT (
> FixedPcdGet32 (PcdGenericWatchdogRefreshBase),
> FixedPcdGet32 (PcdGenericWatchdogControlBase),
> FixedPcdGet32 (PcdWdogWS1Gsiv),
> - EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER
> + EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER
> )
> }
> };
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc b/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
> index 090297d9541a..96fb6281ea53 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
> @@ -1,22 +1,24 @@
> /** @file
> -* Memory mapped configuration space base address description table (MCFG)
> -*
> -* Copyright (c) 2018, ARM Ltd. All rights reserved.
> -*
> -* SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> + Memory mapped configuration space base address description table (MCFG)
> +
> + The MCFG table provides the address of the PCI configuration space, which
> + is required by the OS to perform the PCIe bus enumeration.
> +
> + Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + @par Specification Reference:
> + - http://www.pcisig.com/home
> **/
>
> -#include <IndustryStandard/Acpi62.h>
> #include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h>
> +#include <Library/AcpiLib.h>
> +#include <Library/ArmLib.h>
> #include <Library/PcdLib.h>
> #include "SgiAcpiHeader.h"
> #include "SgiPlatform.h"
>
> -#include <Library/AcpiLib.h>
> -#include <Library/ArmLib.h>
> -#include <IndustryStandard/Acpi.h>
> -
> #pragma pack(1)
> typedef struct
> {
> @@ -28,7 +30,7 @@ typedef struct
> EFI_ACPI_PCI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE Mcfg = {
> {
> ARM_ACPI_HEADER (
> - EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
> + EFI_ACPI_6_4_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
> EFI_ACPI_PCI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE,
> EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION
> ),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc b/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
> index 632144530076..6467fcdf4fd0 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
> @@ -1,20 +1,27 @@
> /** @file
> -* Serial Port Console Redirection Table (SPCR)
> -*
> -* Copyright (c) 2018, ARM Limited. All rights reserved.
> -*
> -* SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> + Serial Port Console Redirection Table (SPCR)
> +
> + SPCR table provides information about the configuration and use of the serial
> + port or non-legacy UART interface. This table list the non-secure UART
> + instance in the compute subsystem on the reference design platforms as the
> + available serial port.
> +
> + Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + @par Specification Reference:
> + - https://docs.microsoft.com/en-us/windows-hardware/drivers/serports/
> + serial-port-console-redirection-table
> **/
>
> -#include "SgiAcpiHeader.h"
> -#include <Library/AcpiLib.h>
> -#include <IndustryStandard/Acpi62.h>
> #include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
> +#include <Library/AcpiLib.h>
> +#include "SgiAcpiHeader.h"
>
> STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = {
> ARM_ACPI_HEADER (
> - EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
> + EFI_ACPI_6_4_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
> EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE,
> EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION
> ),
> @@ -26,7 +33,7 @@ STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = {
> EFI_ACPI_RESERVED_BYTE,
> EFI_ACPI_RESERVED_BYTE
> },
> - // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddress;
> + // EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE BaseAddress;
> ARM_GAS32 (FixedPcdGet64 (PcdSerialDbgRegisterBase)),
> // UINT8 InterruptType;
> EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC,
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90715): https://edk2.groups.io/g/devel/message/90715
Mute This Topic: https://groups.io/mt/91650532/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list