From 870cf728ef82c398f1a4b1e2031046a699eadb6e Mon Sep 17 00:00:00 2001 From: Sami Mujawar Date: Mon, 11 Mar 2024 15:20:39 +0000 Subject: [PATCH] DynamicTablesPkg: Move PCC Type1 info to Arch Common Move the PCC Subspace Type1 info object from Arm Namespace to the Arch Common namespace. Correspondingly also update the following modules to reflect the changes introduced by the move: - PCCT 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 | 18 +++++++++++ .../Include/ArmNameSpaceObjects.h | 30 ++++--------------- .../Acpi/Arm/AcpiPcctLibArm/PcctGenerator.c | 18 +++++------ .../DynamicPlatRepoLib/CmObjectTokenFixer.c | 11 ++++--- .../ConfigurationManagerObjectParser.c | 6 ++-- DynamicTablesPkg/Readme.md | 14 ++++----- 6 files changed, 48 insertions(+), 49 deletions(-) diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h index 4ce2d7b48e..583ea00891 100644 --- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h @@ -40,6 +40,7 @@ typedef enum ArchCommonObjectID { EArchCommonObjCacheInfo, ///< 17 - Cache Info EArchCommonObjCpcInfo, ///< 18 - Continuous Performance Control Info EArchCommonObjPccSubspaceType0Info, ///< 19 - Pcc Subspace Type 0 Info + EArchCommonObjPccSubspaceType1Info, ///< 20 - Pcc Subspace Type 1 Info EArchCommonObjMax } EARCH_COMMON_OBJECT_ID; @@ -531,6 +532,23 @@ typedef struct PccSubspaceGenericInfo { */ typedef PCC_SUBSPACE_GENERIC_INFO CM_ARCH_COMMON_PCC_SUBSPACE_TYPE0_INFO; +/** A structure that describes a + PCC Subspace of type 1 (HW-Reduced). + + ID: EArchCommonObjPccSubspaceType1Info +*/ +typedef struct CmArchCommonPccSubspaceType1Info { + /** Generic Pcc information. + + The Subspace of Type0 contains information that can be re-used + in other Subspace types. + */ + PCC_SUBSPACE_GENERIC_INFO GenericPccInfo; + + /// Platform Interrupt. + CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq; +} CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO; + #pragma pack() #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_ diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h index a28415c776..8a62d93862 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -51,13 +51,12 @@ typedef enum ArmObjectID { EArmObjCmn600Info, ///< 20 - CMN-600 Info EArmObjRmr, ///< 21 - Reserved Memory Range Node EArmObjMemoryRangeDescriptor, ///< 22 - Memory Range Descriptor - EArmObjPccSubspaceType1Info, ///< 23 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType2Info, ///< 24 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType3Info, ///< 25 - Pcc Subspace Type 3 Info - EArmObjPccSubspaceType4Info, ///< 26 - Pcc Subspace Type 4 Info - EArmObjPccSubspaceType5Info, ///< 27 - Pcc Subspace Type 5 Info - EArmObjEtInfo, ///< 28 - Embedded Trace Extension/Module Info - EArmObjPsdInfo, ///< 29 - P-State Dependency (PSD) Info + EArmObjPccSubspaceType2Info, ///< 23 - Pcc Subspace Type 2 Info + EArmObjPccSubspaceType3Info, ///< 24 - Pcc Subspace Type 3 Info + EArmObjPccSubspaceType4Info, ///< 25 - Pcc Subspace Type 4 Info + EArmObjPccSubspaceType5Info, ///< 26 - Pcc Subspace Type 5 Info + EArmObjEtInfo, ///< 27 - Embedded Trace Extension/Module Info + EArmObjPsdInfo, ///< 28 - P-State Dependency (PSD) Info EArmObjMax } EARM_OBJECT_ID; @@ -713,23 +712,6 @@ typedef struct CmArmRmrDescriptor { UINT64 Length; } CM_ARM_MEMORY_RANGE_DESCRIPTOR; -/** A structure that describes a - PCC Subspace of type 1 (HW-Reduced). - - ID: EArmObjPccSubspaceType1Info -*/ -typedef struct CmArmPccSubspaceType1Info { - /** Generic Pcc information. - - The Subspace of Type0 contains information that can be re-used - in other Subspace types. - */ - PCC_SUBSPACE_GENERIC_INFO GenericPccInfo; - - /// Platform Interrupt. - CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq; -} CM_ARM_PCC_SUBSPACE_TYPE1_INFO; - /** A structure that describes a PCC Subspace of type 2 (HW-Reduced). diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPcctLibArm/PcctGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPcctLibArm/PcctGenerator.c index 575ab31f7f..183d8cd221 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPcctLibArm/PcctGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPcctLibArm/PcctGenerator.c @@ -30,7 +30,7 @@ Requirements: The following Configuration Manager Object(s) are required by this Generator: - EArchCommonObjPccSubspaceType0Info - - EArmObjPccSubspaceType1Info + - EArchCommonObjPccSubspaceType1Info - EArmObjPccSubspaceType2Info - EArmObjPccSubspaceType3Info - EArmObjPccSubspaceType4Info @@ -50,9 +50,9 @@ GET_OBJECT_LIST ( Subspace of Type 1 Information from the Configuration Manager. */ GET_OBJECT_LIST ( - EObjNameSpaceArm, - EArmObjPccSubspaceType1Info, - CM_ARM_PCC_SUBSPACE_TYPE1_INFO + EObjNameSpaceArchCommon, + EArchCommonObjPccSubspaceType1Info, + CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO ); /** This macro expands to a function that retrieves the PCC @@ -248,7 +248,7 @@ MapPccSubspaceId ( break; case EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS: - CmObjSize = sizeof (CM_ARM_PCC_SUBSPACE_TYPE1_INFO); + CmObjSize = sizeof (CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO); break; case EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS: @@ -358,7 +358,7 @@ STATIC EFI_STATUS EFIAPI AddSubspaceStructType1 ( - IN CM_ARM_PCC_SUBSPACE_TYPE1_INFO *PccCmObj, + IN CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO *PccCmObj, IN EFI_ACPI_6_4_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS *PccAcpi ) { @@ -716,7 +716,7 @@ PopulatePcctTable ( case EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS: Status = AddSubspaceStructType1 ( - (CM_ARM_PCC_SUBSPACE_TYPE1_INFO *)CurrentPccSubspace, + (CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO *)CurrentPccSubspace, (EFI_ACPI_6_4_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS *)PccBuffer ); @@ -826,7 +826,7 @@ BuildPcctTable ( CM_ARCH_COMMON_PCC_SUBSPACE_TYPE0_INFO *PccType0; UINT32 PccType0Count; - CM_ARM_PCC_SUBSPACE_TYPE1_INFO *PccType1; + CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO *PccType1; UINT32 PccType1Count; CM_ARM_PCC_SUBSPACE_TYPE2_INFO *PccType2; UINT32 PccType2Count; @@ -876,7 +876,7 @@ BuildPcctTable ( goto error_handler; } - Status = GetEArmObjPccSubspaceType1Info ( + Status = GetEArchCommonObjPccSubspaceType1Info ( CfgMgrProtocol, CM_NULL_TOKEN, &PccType1, diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c index 1691e6015b..3a19870aad 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c @@ -167,12 +167,11 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] = { NULL, ///< 21 - Reserved Memory Range Node NULL, ///< 22 - Memory Range Descriptor NULL, ///< 23 - Pcc Subspace Type 2 Info - NULL, ///< 24 - Pcc Subspace Type 2 Info - NULL, ///< 25 - Pcc Subspace Type 3 Info - NULL, ///< 26 - Pcc Subspace Type 4 Info - NULL, ///< 27 - Pcc Subspace Type 5 Info - NULL, ///< 28 - Embedded Trace Extension/Module Info - NULL ///< 29 - P-State Dependency (PSD) Info + NULL, ///< 24 - Pcc Subspace Type 3 Info + NULL, ///< 25 - Pcc Subspace Type 4 Info + NULL, ///< 26 - Pcc Subspace Type 5 Info + NULL, ///< 27 - Embedded Trace Extension/Module Info + NULL ///< 28 - 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 e071fa460a..f8e277f180 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c @@ -589,9 +589,9 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonPccSubspaceType0InfoParser[] = { ARRAY_SIZE (CmArmPccSubspaceChannelTimingInfoParser) }, }; -/** A parser for EArmObjPccSubspaceType1Info. +/** A parser for EArchCommonObjPccSubspaceType1Info. */ -STATIC CONST CM_OBJ_PARSER CmArmPccSubspaceType1InfoParser[] = { +STATIC CONST CM_OBJ_PARSER CmArchCommonPccSubspaceType1InfoParser[] = { { "GenericPccInfo", sizeof (PCC_SUBSPACE_GENERIC_INFO), NULL, NULL, CmArchCommonPccSubspaceType0InfoParser, ARRAY_SIZE (CmArchCommonPccSubspaceType0InfoParser) }, @@ -690,6 +690,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArchCommonObjCacheInfo, CmArchCommonCacheInfoParser), CM_PARSER_ADD_OBJECT (EArchCommonObjCpcInfo, CmArchCommonCpcInfoParser), CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType0Info, CmArchCommonPccSubspaceType0InfoParser), + CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType1Info, CmArchCommonPccSubspaceType1InfoParser), CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax) }; @@ -719,7 +720,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600InfoParser), CM_PARSER_ADD_OBJECT (EArmObjRmr, CmArmRmrInfoParser), CM_PARSER_ADD_OBJECT (EArmObjMemoryRangeDescriptor, CmArmMemoryRangeDescriptorInfoParser), - CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType1Info, CmArmPccSubspaceType1InfoParser), CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType2Info, CmArmPccSubspaceType2InfoParser), CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType3Info, CmArmPccSubspaceType34InfoParser), CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType4Info, CmArmPccSubspaceType34InfoParser), diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md index 9994220359..3fa3dd9af9 100644 --- a/DynamicTablesPkg/Readme.md +++ b/DynamicTablesPkg/Readme.md @@ -463,13 +463,12 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | 20 | CMN 600 Info | | | 21 | Reserved Memory Range Node | | | 22 | Memory Range Descriptor | | -| 23 | Pcc Subspace Type 1 Info | Move to Arch Common NS | -| 24 | Pcc Subspace Type 2 Info | Move to Arch Common NS | -| 25 | Pcc Subspace Type 3 Info | Move to Arch Common NS | -| 26 | Pcc Subspace Type 4 Info | Move to Arch Common NS | -| 27 | Pcc Subspace Type 5 Info | Move to Arch Common NS | -| 28 | Embedded Trace Extension/Module Info | | -| 29 | P-State Dependency (PSD) Info | Move to Arch Common NS | +| 23 | Pcc Subspace Type 2 Info | Move to Arch Common NS | +| 24 | Pcc Subspace Type 3 Info | Move to Arch Common NS | +| 25 | Pcc Subspace Type 4 Info | Move to Arch Common NS | +| 26 | Pcc Subspace Type 5 Info | Move to Arch Common NS | +| 27 | Embedded Trace Extension/Module Info | | +| 28 | P-State Dependency (PSD) Info | Move to Arch Common NS | | `*` | All other values are reserved. | | #### Object ID's in the Arch Common Namespace: @@ -496,5 +495,6 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | 17 | Cache Info | | | 18 | Continuous Performance Control Info | | | 19 | Pcc Subspace Type 0 Info | | +| 20 | Pcc Subspace Type 1 Info | | | `*` | All other values are reserved. | |