From 0ca10ddc0f94060ec8efcf14464336ba6946aafe Mon Sep 17 00:00:00 2001 From: Sami Mujawar Date: Mon, 11 Mar 2024 11:08:56 +0000 Subject: [PATCH] DynamicTablesPkg: Move ACPI device Handle object to Arch Common Move the ACPI device Handle object from Arm Namespace to the Arch Common namespace. Correspondingly also update the following modules to reflect the changes introduced by the move: - SRAT generator - ConfigurationManagerObjectParser - Dynamic Plat Repo TokenFixer map. Cc: Pierre Gondois Cc: Yeo Reum Yun Cc: AbdulLateef Attar Cc: Jeshua Smith Cc: Jeff Brasen Cc: Girish Mahadevan Cc: Leif Lindholm Cc: Meenakshi Aggarwal Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois Reviewed-by: Sunil V L --- .../Include/ArchCommonNameSpaceObjects.h | 14 ++++++ .../Include/ArmNameSpaceObjects.h | 44 +++++++------------ .../Acpi/Arm/AcpiSratLibArm/SratGenerator.c | 12 ++--- .../DynamicPlatRepoLib/CmObjectTokenFixer.c | 29 ++++++------ .../ConfigurationManagerObjectParser.c | 6 +-- DynamicTablesPkg/Readme.md | 32 +++++++------- 6 files changed, 68 insertions(+), 69 deletions(-) diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h index 86d751bdfa..0b450e8f99 100644 --- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h @@ -32,6 +32,7 @@ typedef enum ArchCommonObjectID { EArchCommonObjPciAddressMapInfo, ///< 9 - Pci Address Map Info EArchCommonObjPciInterruptMapInfo, ///< 10 - Pci Interrupt Map Info EArchCommonObjMemoryAffinityInfo, ///< 11 - Memory Affinity Info + EArchCommonObjDeviceHandleAcpi, ///< 12 - Device Handle Acpi EArchCommonObjMax } EARCH_COMMON_OBJECT_ID; @@ -242,6 +243,19 @@ typedef struct CmArchCommonMemoryAffinityInfo { UINT32 Flags; } CM_ARCH_COMMON_MEMORY_AFFINITY_INFO; +/** A structure that describes the ACPI Device Handle (Type 0) in the + Generic Initiator Affinity structure in SRAT + + ID: EArchCommonObjDeviceHandleAcpi +*/ +typedef struct CmArchCommonDeviceHandleAcpi { + /// Hardware ID + UINT64 Hid; + + /// Unique Id + UINT32 Uid; +} CM_ARCH_COMMON_DEVICE_HANDLE_ACPI; + #pragma pack() #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_ diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h index 7905152114..64c5f26772 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -50,22 +50,21 @@ typedef enum ArmObjectID { EArmObjSmmuInterruptArray, ///< 19 - SMMU Interrupt Array EArmObjProcHierarchyInfo, ///< 20 - Processor Hierarchy Info EArmObjCacheInfo, ///< 21 - Cache Info - EArmObjDeviceHandleAcpi, ///< 22 - Device Handle Acpi - EArmObjDeviceHandlePci, ///< 23 - Device Handle Pci - EArmObjGenericInitiatorAffinityInfo, ///< 24 - Generic Initiator Affinity - EArmObjCmn600Info, ///< 25 - CMN-600 Info - EArmObjLpiInfo, ///< 26 - Lpi Info - EArmObjRmr, ///< 27 - Reserved Memory Range Node - EArmObjMemoryRangeDescriptor, ///< 28 - Memory Range Descriptor - EArmObjCpcInfo, ///< 29 - Continuous Performance Control Info - EArmObjPccSubspaceType0Info, ///< 30 - Pcc Subspace Type 0 Info - EArmObjPccSubspaceType1Info, ///< 31 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType2Info, ///< 32 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType3Info, ///< 33 - Pcc Subspace Type 3 Info - EArmObjPccSubspaceType4Info, ///< 34 - Pcc Subspace Type 4 Info - EArmObjPccSubspaceType5Info, ///< 35 - Pcc Subspace Type 5 Info - EArmObjEtInfo, ///< 36 - Embedded Trace Extension/Module Info - EArmObjPsdInfo, ///< 37 - P-State Dependency (PSD) Info + EArmObjDeviceHandlePci, ///< 22 - Device Handle Pci + EArmObjGenericInitiatorAffinityInfo, ///< 23 - Generic Initiator Affinity + EArmObjCmn600Info, ///< 24 - CMN-600 Info + EArmObjLpiInfo, ///< 25 - Lpi Info + EArmObjRmr, ///< 26 - Reserved Memory Range Node + EArmObjMemoryRangeDescriptor, ///< 27 - Memory Range Descriptor + EArmObjCpcInfo, ///< 28 - Continuous Performance Control Info + EArmObjPccSubspaceType0Info, ///< 29 - Pcc Subspace Type 0 Info + EArmObjPccSubspaceType1Info, ///< 30 - Pcc Subspace Type 2 Info + EArmObjPccSubspaceType2Info, ///< 31 - Pcc Subspace Type 2 Info + EArmObjPccSubspaceType3Info, ///< 32 - Pcc Subspace Type 3 Info + EArmObjPccSubspaceType4Info, ///< 33 - Pcc Subspace Type 4 Info + EArmObjPccSubspaceType5Info, ///< 34 - Pcc Subspace Type 5 Info + EArmObjEtInfo, ///< 35 - Embedded Trace Extension/Module Info + EArmObjPsdInfo, ///< 36 - P-State Dependency (PSD) Info EArmObjMax } EARM_OBJECT_ID; @@ -720,19 +719,6 @@ typedef struct CmArmCacheInfo { UINT32 CacheId; } CM_ARM_CACHE_INFO; -/** A structure that describes the ACPI Device Handle (Type 0) in the - Generic Initiator Affinity structure in SRAT - - ID: EArmObjDeviceHandleAcpi -*/ -typedef struct CmArmDeviceHandleAcpi { - /// Hardware ID - UINT64 Hid; - - /// Unique Id - UINT32 Uid; -} CM_ARM_DEVICE_HANDLE_ACPI; - /** A structure that describes the PCI Device Handle (Type 1) in the Generic Initiator Affinity structure in SRAT diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c index 3ba2448f23..c65a28cd14 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c @@ -34,7 +34,7 @@ - EArmObjGicItsInfo (OPTIONAL) - EArchCommonObjMemoryAffinityInfo (OPTIONAL) - EArmObjGenericInitiatorAffinityInfo (OPTIONAL) - - EArmObjDeviceHandleAcpi (OPTIONAL) + - EArchCommonObjDeviceHandleAcpi (OPTIONAL) - EArmObjDeviceHandlePci (OPTIONAL) */ @@ -82,9 +82,9 @@ GET_OBJECT_LIST ( information from the Configuration Manager. */ GET_OBJECT_LIST ( - EObjNameSpaceArm, - EArmObjDeviceHandleAcpi, - CM_ARM_DEVICE_HANDLE_ACPI + EObjNameSpaceArchCommon, + EArchCommonObjDeviceHandleAcpi, + CM_ARCH_COMMON_DEVICE_HANDLE_ACPI ); /** @@ -301,7 +301,7 @@ AddGenericInitiatorAffinity ( { EFI_STATUS Status; EFI_ACPI_6_3_GENERIC_INITIATOR_AFFINITY_STRUCTURE *GenInitAff; - CM_ARM_DEVICE_HANDLE_ACPI *DeviceHandleAcpi; + CM_ARCH_COMMON_DEVICE_HANDLE_ACPI *DeviceHandleAcpi; CM_ARM_DEVICE_HANDLE_PCI *DeviceHandlePci; UINT32 DeviceHandleCount; @@ -331,7 +331,7 @@ AddGenericInitiatorAffinity ( } if (GenInitAffInfo->DeviceHandleType == EFI_ACPI_6_3_ACPI_DEVICE_HANDLE) { - Status = GetEArmObjDeviceHandleAcpi ( + Status = GetEArchCommonObjDeviceHandleAcpi ( CfgMgrProtocol, GenInitAffInfo->DeviceHandleToken, &DeviceHandleAcpi, diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c index 654686a012..43aae42381 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c @@ -165,22 +165,21 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] = { NULL, ///< 19 - SMMU Interrupt Array TokenFixerNotImplemented, ///< 20 - Processor Hierarchy Info TokenFixerNotImplemented, ///< 21 - Cache Info - NULL, ///< 22 - Device Handle Acpi - NULL, ///< 23 - Device Handle Pci - NULL, ///< 24 - Generic Initiator Affinity - NULL, ///< 25 - CMN-600 Info - NULL, ///< 26 - Lpi Info - NULL, ///< 27 - Reserved Memory Range Node - NULL, ///< 28 - Memory Range Descriptor - NULL, ///< 29 - Continuous Performance Control Info - NULL, ///< 30 - Pcc Subspace Type 0 Info + NULL, ///< 22 - Device Handle Pci + NULL, ///< 23 - Generic Initiator Affinity + NULL, ///< 24 - CMN-600 Info + NULL, ///< 25 - Lpi Info + NULL, ///< 26 - Reserved Memory Range Node + NULL, ///< 27 - Memory Range Descriptor + NULL, ///< 28 - Continuous Performance Control Info + NULL, ///< 29 - Pcc Subspace Type 0 Info + NULL, ///< 30 - Pcc Subspace Type 2 Info NULL, ///< 31 - Pcc Subspace Type 2 Info - NULL, ///< 32 - Pcc Subspace Type 2 Info - NULL, ///< 33 - Pcc Subspace Type 3 Info - NULL, ///< 34 - Pcc Subspace Type 4 Info - NULL, ///< 35 - Pcc Subspace Type 5 Info - NULL, ///< 36 - Embedded Trace Extension/Module Info - NULL ///< 37 - P-State Dependency (PSD) Info + NULL, ///< 32 - Pcc Subspace Type 3 Info + NULL, ///< 33 - Pcc Subspace Type 4 Info + NULL, ///< 34 - Pcc Subspace Type 5 Info + NULL, ///< 35 - Embedded Trace Extension/Module Info + NULL ///< 36 - P-State Dependency (PSD) Info }; /** CmObj token fixer. diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c index b2fe74cd4f..9326ea6393 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c @@ -365,9 +365,9 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonMemoryAffinityInfoParser[] = { { "Flags", 4, "0x%x", NULL } }; -/** A parser for EArmObjDeviceHandleAcpi. +/** A parser for EArchCommonObjDeviceHandleAcpi. */ -STATIC CONST CM_OBJ_PARSER CmArmDeviceHandleAcpiParser[] = { +STATIC CONST CM_OBJ_PARSER CmArchCommonDeviceHandleAcpiParser[] = { { "Hid", 8, "0x%llx", NULL }, { "Uid", 4, "0x%x", NULL } }; @@ -682,6 +682,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArchCommonObjPciAddressMapInfo, CmArchCommonPciAddressMapInfoParser), CM_PARSER_ADD_OBJECT (EArchCommonObjPciInterruptMapInfo, CmArchCommonPciInterruptMapInfoParser), CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryAffinityInfo, CmArchCommonMemoryAffinityInfoParser), + CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandleAcpi, CmArchCommonDeviceHandleAcpiParser), CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax) }; @@ -710,7 +711,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray, CmArchCommonGenericInterruptParser), CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo, CmArmProcHierarchyInfoParser), CM_PARSER_ADD_OBJECT (EArmObjCacheInfo, CmArmCacheInfoParser), - CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi, CmArmDeviceHandleAcpiParser), CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci, CmArmDeviceHandlePciParser), CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericInitiatorAffinityInfoParser), CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600InfoParser), diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md index 55311fd4ce..f82c37f4af 100644 --- a/DynamicTablesPkg/Readme.md +++ b/DynamicTablesPkg/Readme.md @@ -462,22 +462,21 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | 19 | SMMU Interrupt Array | | | 20 | Processor Hierarchy Info | Move to Arch Common NS | | 21 | Cache Info | Move to Arch Common NS | -| 22 | Device Handle Acpi | Move to Arch Common NS | -| 23 | Device Handle PCI | Move to Arch Common NS | -| 24 | Generic Initiator Affinity Info | Move to Arch Common NS | -| 25 | CMN 600 Info | | -| 26 | Low Power Idle State Info | Move to Arch Common NS | -| 27 | Reserved Memory Range Node | | -| 28 | Memory Range Descriptor | | -| 29 | Continuous Performance Control Info | Move to Arch Common NS | -| 30 | Pcc Subspace Type 0 Info | Move to Arch Common NS | -| 31 | Pcc Subspace Type 1 Info | Move to Arch Common NS | -| 32 | Pcc Subspace Type 2 Info | Move to Arch Common NS | -| 33 | Pcc Subspace Type 3 Info | Move to Arch Common NS | -| 34 | Pcc Subspace Type 4 Info | Move to Arch Common NS | -| 35 | Pcc Subspace Type 5 Info | Move to Arch Common NS | -| 36 | Embedded Trace Extension/Module Info | | -| 37 | P-State Dependency (PSD) Info | Move to Arch Common NS | +| 22 | Device Handle PCI | Move to Arch Common NS | +| 23 | Generic Initiator Affinity Info | Move to Arch Common NS | +| 24 | CMN 600 Info | | +| 25 | Low Power Idle State Info | Move to Arch Common NS | +| 26 | Reserved Memory Range Node | | +| 27 | Memory Range Descriptor | | +| 28 | Continuous Performance Control Info | Move to Arch Common NS | +| 29 | Pcc Subspace Type 0 Info | Move to Arch Common NS | +| 30 | Pcc Subspace Type 1 Info | Move to Arch Common NS | +| 31 | Pcc Subspace Type 2 Info | Move to Arch Common NS | +| 32 | Pcc Subspace Type 3 Info | Move to Arch Common NS | +| 33 | Pcc Subspace Type 4 Info | Move to Arch Common NS | +| 34 | Pcc Subspace Type 5 Info | Move to Arch Common NS | +| 35 | Embedded Trace Extension/Module Info | | +| 36 | P-State Dependency (PSD) Info | Move to Arch Common NS | | `*` | All other values are reserved. | | #### Object ID's in the Arch Common Namespace: @@ -496,4 +495,5 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | 9 | PCI Address Map Info | | | 10 | PCI Interrupt Map Info | | | 11 | Memory Affinity Info | | +| 12 | Device Handle Acpi | | | `*` | All other values are reserved. | |