public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first)
@ 2024-03-21 15:53 PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 01/16] DynamicTablesPkg/SsdtCpuTopology: Update function's parameter description PierreGondois
                   ` (16 more replies)
  0 siblings, 17 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

Following [1] and [2], other architectures than Arm aim to leverage
the DynamicTablesPkg. The package uses namespaces/domains to split
objects IDs. Currently most of the objects are part of the Arm
namespace. Some objects are generic enough to be re-used by other
architectures.

In [2], an Arch Common namespace Id was created and some objects
present in the Arm namespace were identified to be moved to this
Arch Common namespace.
Continue the effort by moving these objects to this new namespace.

Some platforms rely on the DynamicTablesPkg and its namespace
organization. Additional patches matching this change for the:
- Juno
- VExpress
platforms will be submitted along this patchset.

As the actual patchset is more than 20 patches, split it in
two parts to avoid being detected as a spam/fraudulous activity.

[1] Branch to reorg Dynamic Tables & support other arch
https://edk2.groups.io/g/devel/topic/104054584#116308
[2] DynamicTablesPkg: Arch Common Namespace
https://edk2.groups.io/g/devel/message/116330

Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: Sunil V L <sunilvl@ventanamicro.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>


Pierre Gondois (1):
  DynamicTablesPkg/SsdtCpuTopology: Update function's parameter
    description

Sami Mujawar (15):
  DynamicTablesPkg: Replace ProcNodeIdInfo with EArmObjReserved29
  DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array
  DynamicTablesPkg: Introduce an Arch Common Namespace header file
  DynamicTablesPkg: Add support for ArchCommon objects in CmObjParser
  DynamicTablesPkg: TokenFixer: Return Non Arm NS objs as unsupported
  DynamicTablesPkg: Update DynamicPlatRepo for Arch Common namespace
  DynamicTablesPkg: Update documentation for CM_OBJECT_ID
  DynamicTablesPkg: Drop Cpu Info object ID from Arm Namespace
  DynamicTablesPkg: Drop Reserved29 object ID from Arm Namespace
  ArmVirtPkg: Kvmtool: Update ConfigMgr to support ArchCommon
  DynamicTablesPkg & ArmVirtPkg: Move Power Mgmt Profile Info Object
  DynamicTablesPkg: Move Hypervisor Vendor Id to Arch Common
  DynamicTablesPkg: Move FADT Fixed Features Flags to Arch Common
  DynamicTablesPkg: Move Cm Reference object to Arch Common
  DynamicTablesPkg & ArmVirtPkg: Move Pci Config Space Info

 .../KvmtoolCfgMgrDxe/ConfigurationManager.c   |  80 ++++-
 .../KvmtoolCfgMgrDxe/ConfigurationManager.h   |  20 +-
 DynamicTablesPkg/DynamicTablesPkg.ci.yaml     |   1 +
 .../Include/ArchCommonNameSpaceObjects.h      | 147 +++++++++
 .../Include/ArmNameSpaceObjects.h             | 204 +++---------
 .../Include/ConfigurationManagerObject.h      |  36 +--
 .../Include/Library/SsdtPcieSupportLib.h      |  12 +-
 .../Include/Library/SsdtSerialPortFixupLib.h  |  16 +-
 .../Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c   |  20 +-
 .../Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c   |  44 +--
 .../Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c   |  28 +-
 .../Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c   |  20 +-
 .../Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c   |  18 +-
 .../SsdtCpuTopologyGenerator.c                |  17 +-
 .../SsdtCpuTopologyGenerator.h                |  10 +-
 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    |  60 ++--
 .../SsdtSerialPortGenerator.c                 |  24 +-
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   |  88 +++---
 .../DynamicPlatRepoLib/DynamicPlatRepo.c      | 291 +++++++++++++-----
 .../DynamicPlatRepoInternal.h                 |  11 +-
 .../Common/DynamicPlatRepoLib/TokenMapper.c   |   9 +-
 .../SsdtPcieSupportLib/SsdtPcieSupportLib.c   |  12 +-
 .../SsdtSerialPortFixupLib.c                  |  46 +--
 .../ConfigurationManagerObjectParser.c        | 224 ++++++--------
 .../ConfigurationManagerObjectParser.h        |  15 +
 .../FdtHwInfoParserLib/CmObjectDescUtility.c  |  10 +-
 .../FdtHwInfoParserLib/CmObjectDescUtility.h  |   6 +-
 .../Pci/ArmPciConfigSpaceParser.c             |  20 +-
 .../Pci/ArmPciConfigSpaceParser.h             |  10 +-
 .../Serial/ArmSerialPortParser.c              |  79 ++---
 .../Serial/ArmSerialPortParser.h              |   8 +-
 DynamicTablesPkg/Readme.md                    |  96 +++---
 32 files changed, 948 insertions(+), 734 deletions(-)
 create mode 100644 DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h

-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116961): https://edk2.groups.io/g/devel/message/116961
Mute This Topic: https://groups.io/mt/105067964/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 01/16] DynamicTablesPkg/SsdtCpuTopology: Update function's parameter description
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 02/16] DynamicTablesPkg: Replace ProcNodeIdInfo with EArmObjReserved29 PierreGondois
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

The parameters of CreateAmlProcessorContainer() were not
updated in:
commit 5fb3f5723a1e ("DynamicTablesPkg: Allow for specified CPU names")

This causes the EccCheck CI test to fail. Fix this.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
index 9e3efb49e630..cc6400e9e0df 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
@@ -980,7 +980,8 @@ CreateAmlCpuFromProcHierarchy (
                                       container node to.
   @param [in]  ProcHierarchyNodeInfo  CM_ARM_PROC_HIERARCHY_INFO object used
                                       to create the node.
-  @param [in]  ProcContainerIndex     Index used to generate the node name.
+  @param [in]  ProcContainerName      Name of the processor container.
+  @param [in]  ProcContainerUid       Uid of the processor container.
   @param [out] ProcContainerNodePtr   If success, contains the created processor
                                       container node.
 
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116962): https://edk2.groups.io/g/devel/message/116962
Mute This Topic: https://groups.io/mt/105067965/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 02/16] DynamicTablesPkg: Replace ProcNodeIdInfo with EArmObjReserved29
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 01/16] DynamicTablesPkg/SsdtCpuTopology: Update function's parameter description PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 03/16] DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array PierreGondois
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

The CM_ARM_PROC_NODE_ID_INFO was dropped by the patch at
"b2bbe3df5470 DynamicTablesPkg: Remove PPTT ID structure
from ACPI 6.4 generator" and the EArmObjProcNodeIdInfo was
made EArmObjReserved29.

Since ProcNodeIdInfo is no longer used drop the CM object
parser code from EArmObjProcNodeIdInfo and specify a null
entry for EArmObjReserved29.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c       |  2 +-
 .../ConfigurationManagerObjectParser.c            | 15 +--------------
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 345acab53f74..9a6ab2a274aa 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -172,7 +172,7 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///< 26 - SMMU Interrupt Array
   TokenFixerNotImplemented,         ///< 27 - Processor Hierarchy Info
   TokenFixerNotImplemented,         ///< 28 - Cache Info
-  TokenFixerNotImplemented,         ///< 29 - Processor Node ID Info
+  TokenFixerNotImplemented,         ///< 29 - Reserved
   NULL,                             ///< 30 - CM Object Reference
   NULL,                             ///< 31 - Memory Affinity Info
   NULL,                             ///< 32 - Device Handle Acpi
diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index 69b6eba23cf4..f96b05b1c0b9 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -350,18 +350,6 @@ STATIC CONST CM_OBJ_PARSER  CmArmCacheInfoParser[] = {
   { "CacheId",               4,                        "0x%x", NULL },
 };
 
-/** A parser for EArmObjProcNodeIdInfo.
-*/
-STATIC CONST CM_OBJ_PARSER  CmArmProcNodeIdInfoParser[] = {
-  { "Token",    sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
-  { "VendorId", 4,                        "0x%p", NULL },
-  { "Level1Id", 8,                        "0x%x", NULL },
-  { "Level2Id", 8,                        "0x%x", NULL },
-  { "MajorRev", 2,                        "0x%x", NULL },
-  { "MinorRev", 2,                        "0x%x", NULL },
-  { "SpinRev",  2,                        "0x%x", NULL }
-};
-
 /** A parser for EArmObjCmRef.
 */
 STATIC CONST CM_OBJ_PARSER  CmArmObjRefParser[] = {
@@ -735,8 +723,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
     ARRAY_SIZE (CmArmProcHierarchyInfoParser) },
   { "EArmObjCacheInfo",                    CmArmCacheInfoParser,
     ARRAY_SIZE (CmArmCacheInfoParser) },
-  { "EArmObjProcNodeIdInfo",               CmArmProcNodeIdInfoParser,
-    ARRAY_SIZE (CmArmProcNodeIdInfoParser) },
+  { "EArmObjReserved29",                   NULL,                                  0                                },
   { "EArmObjCmRef",                        CmArmObjRefParser,                     ARRAY_SIZE (CmArmObjRefParser)   },
   { "EArmObjMemoryAffinityInfo",           CmArmMemoryAffinityInfoParser,
     ARRAY_SIZE (CmArmMemoryAffinityInfoParser) },
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116963): https://edk2.groups.io/g/devel/message/116963
Mute This Topic: https://groups.io/mt/105067967/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 03/16] DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 01/16] DynamicTablesPkg/SsdtCpuTopology: Update function's parameter description PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 02/16] DynamicTablesPkg: Replace ProcNodeIdInfo with EArmObjReserved29 PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 04/16] DynamicTablesPkg: Introduce an Arch Common Namespace header file PierreGondois
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Add ObjectId to CM_OBJ_PARSER_ARRAY so that the code can validate
the entries in the Cm object parser array. Also introduce helper
macros to populate the Cm Object Parser Arrays.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../ConfigurationManagerObjectParser.c        | 165 +++++++-----------
 .../ConfigurationManagerObjectParser.h        |  15 ++
 2 files changed, 75 insertions(+), 105 deletions(-)

diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index f96b05b1c0b9..68d6c57acfc0 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -670,103 +670,58 @@ STATIC CONST CM_OBJ_PARSER  CmArmPsdInfoParser[] = {
 /** A parser for Arm namespace objects.
 */
 STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
-  { "EArmObjReserved",                     NULL,                                  0                                },
-  { "EArmObjBootArchInfo",                 CmArmBootArchInfoParser,
-    ARRAY_SIZE (CmArmBootArchInfoParser) },
-  { "EArmObjCpuInfo",                      NULL,                                  0                                },
-  { "EArmObjPowerManagementProfileInfo",   CmArmPowerManagementProfileInfoParser,
-    ARRAY_SIZE (CmArmPowerManagementProfileInfoParser) },
-  { "EArmObjGicCInfo",                     CmArmGicCInfoParser,                   ARRAY_SIZE (CmArmGicCInfoParser) },
-  { "EArmObjGicDInfo",                     CmArmGicDInfoParser,                   ARRAY_SIZE (CmArmGicDInfoParser) },
-  { "EArmObjGicMsiFrameInfo",              CmArmGicMsiFrameInfoParser,
-    ARRAY_SIZE (CmArmGicMsiFrameInfoParser) },
-  { "EArmObjGicRedistributorInfo",         CmArmGicRedistInfoParser,
-    ARRAY_SIZE (CmArmGicRedistInfoParser) },
-  { "EArmObjGicItsInfo",                   CmArmGicItsInfoParser,
-    ARRAY_SIZE (CmArmGicItsInfoParser) },
-  { "EArmObjSerialConsolePortInfo",        CmArmSerialPortInfoParser,
-    ARRAY_SIZE (CmArmSerialPortInfoParser) },
-  { "EArmObjSerialDebugPortInfo",          CmArmSerialPortInfoParser,
-    ARRAY_SIZE (CmArmSerialPortInfoParser) },
-  { "EArmObjGenericTimerInfo",             CmArmGenericTimerInfoParser,
-    ARRAY_SIZE (CmArmGenericTimerInfoParser) },
-  { "EArmObjPlatformGTBlockInfo",          CmArmGTBlockInfoParser,
-    ARRAY_SIZE (CmArmGTBlockInfoParser) },
-  { "EArmObjGTBlockTimerFrameInfo",        CmArmGTBlockTimerFrameInfoParser,
-    ARRAY_SIZE (CmArmGTBlockTimerFrameInfoParser) },
-  { "EArmObjPlatformGenericWatchdogInfo",  CmArmGenericWatchdogInfoParser,
-    ARRAY_SIZE (CmArmGenericWatchdogInfoParser) },
-  { "EArmObjPciConfigSpaceInfo",           CmArmPciConfigSpaceInfoParser,
-    ARRAY_SIZE (CmArmPciConfigSpaceInfoParser) },
-  { "EArmObjHypervisorVendorIdentity",     CmArmHypervisorVendorIdParser,
-    ARRAY_SIZE (CmArmHypervisorVendorIdParser) },
-  { "EArmObjFixedFeatureFlags",            CmArmFixedFeatureFlagsParser,
-    ARRAY_SIZE (CmArmFixedFeatureFlagsParser) },
-  { "EArmObjItsGroup",                     CmArmItsGroupNodeParser,
-    ARRAY_SIZE (CmArmItsGroupNodeParser) },
-  { "EArmObjNamedComponent",               CmArmNamedComponentNodeParser,
-    ARRAY_SIZE (CmArmNamedComponentNodeParser) },
-  { "EArmObjRootComplex",                  CmArmRootComplexNodeParser,
-    ARRAY_SIZE (CmArmRootComplexNodeParser) },
-  { "EArmObjSmmuV1SmmuV2",                 CmArmSmmuV1SmmuV2NodeParser,
-    ARRAY_SIZE (CmArmSmmuV1SmmuV2NodeParser) },
-  { "EArmObjSmmuV3",                       CmArmSmmuV3NodeParser,
-    ARRAY_SIZE (CmArmSmmuV3NodeParser) },
-  { "EArmObjPmcg",                         CmArmPmcgNodeParser,                   ARRAY_SIZE (CmArmPmcgNodeParser) },
-  { "EArmObjGicItsIdentifierArray",        CmArmGicItsIdentifierParser,
-    ARRAY_SIZE (CmArmGicItsIdentifierParser) },
-  { "EArmObjIdMappingArray",               CmArmIdMappingParser,
-    ARRAY_SIZE (CmArmIdMappingParser) },
-  { "EArmObjSmmuInterruptArray",           CmArmGenericInterruptParser,
-    ARRAY_SIZE (CmArmGenericInterruptParser) },
-  { "EArmObjProcHierarchyInfo",            CmArmProcHierarchyInfoParser,
-    ARRAY_SIZE (CmArmProcHierarchyInfoParser) },
-  { "EArmObjCacheInfo",                    CmArmCacheInfoParser,
-    ARRAY_SIZE (CmArmCacheInfoParser) },
-  { "EArmObjReserved29",                   NULL,                                  0                                },
-  { "EArmObjCmRef",                        CmArmObjRefParser,                     ARRAY_SIZE (CmArmObjRefParser)   },
-  { "EArmObjMemoryAffinityInfo",           CmArmMemoryAffinityInfoParser,
-    ARRAY_SIZE (CmArmMemoryAffinityInfoParser) },
-  { "EArmObjDeviceHandleAcpi",             CmArmDeviceHandleAcpiParser,
-    ARRAY_SIZE (CmArmDeviceHandleAcpiParser) },
-  { "EArmObjDeviceHandlePci",              CmArmDeviceHandlePciParser,
-    ARRAY_SIZE (CmArmDeviceHandlePciParser) },
-  { "EArmObjGenericInitiatorAffinityInfo",
-    CmArmGenericInitiatorAffinityInfoParser,
-    ARRAY_SIZE (CmArmGenericInitiatorAffinityInfoParser) },
-  { "EArmObjSerialPortInfo",               CmArmSerialPortInfoParser,
-    ARRAY_SIZE (CmArmSerialPortInfoParser) },
-  { "EArmObjCmn600Info",                   CmArmCmn600InfoParser,
-    ARRAY_SIZE (CmArmCmn600InfoParser) },
-  { "EArmObjLpiInfo",                      CmArmLpiInfoParser,
-    ARRAY_SIZE (CmArmLpiInfoParser) },
-  { "EArmObjPciAddressMapInfo",            CmArmPciAddressMapInfoParser,
-    ARRAY_SIZE (CmArmPciAddressMapInfoParser) },
-  { "EArmObjPciInterruptMapInfo",          CmPciInterruptMapInfoParser,
-    ARRAY_SIZE (CmPciInterruptMapInfoParser) },
-  { "EArmObjRmr",                          CmArmRmrInfoParser,
-    ARRAY_SIZE (CmArmRmrInfoParser) },
-  { "EArmObjMemoryRangeDescriptor",        CmArmMemoryRangeDescriptorInfoParser,
-    ARRAY_SIZE (CmArmMemoryRangeDescriptorInfoParser) },
-  { "EArmObjCpcInfo",                      CmArmCpcInfoParser,
-    ARRAY_SIZE (CmArmCpcInfoParser) },
-  { "EArmObjPccSubspaceType0Info",         CmArmPccSubspaceType0InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
-  { "EArmObjPccSubspaceType1Info",         CmArmPccSubspaceType1InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType1InfoParser) },
-  { "EArmObjPccSubspaceType2Info",         CmArmPccSubspaceType2InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType2InfoParser) },
-  { "EArmObjPccSubspaceType3Info",         CmArmPccSubspaceType34InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
-  { "EArmObjPccSubspaceType4Info",         CmArmPccSubspaceType34InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
-  { "EArmObjPccSubspaceType5Info",         CmArmPccSubspaceType5InfoParser,
-    ARRAY_SIZE (CmArmPccSubspaceType5InfoParser) },
-  { "EArmObjEtInfo",                       CmArmEtInfo,
-    ARRAY_SIZE (CmArmEtInfo) },
-  { "EArmObjPsdInfo",                      CmArmPsdInfoParser,
-    ARRAY_SIZE (CmArmPsdInfoParser) },
-  { "EArmObjMax",                          NULL,                                  0                                },
+  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),
+  CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo,                CmArmBootArchInfoParser),
+  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjCpuInfo),
+  CM_PARSER_ADD_OBJECT (EArmObjPowerManagementProfileInfo,  CmArmPowerManagementProfileInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicCInfo,                    CmArmGicCInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicDInfo,                    CmArmGicDInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo,             CmArmGicMsiFrameInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo,        CmArmGicRedistInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo,                  CmArmGicItsInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSerialConsolePortInfo,       CmArmSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSerialDebugPortInfo,         CmArmSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo,            CmArmGenericTimerInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo,         CmArmGTBlockInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,       CmArmGTBlockTimerFrameInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWatchdogInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo,          CmArmPciConfigSpaceInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjHypervisorVendorIdentity,    CmArmHypervisorVendorIdParser),
+  CM_PARSER_ADD_OBJECT (EArmObjFixedFeatureFlags,           CmArmFixedFeatureFlagsParser),
+  CM_PARSER_ADD_OBJECT (EArmObjItsGroup,                    CmArmItsGroupNodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjNamedComponent,              CmArmNamedComponentNodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjRootComplex,                 CmArmRootComplexNodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSmmuV1SmmuV2,                CmArmSmmuV1SmmuV2NodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSmmuV3,                      CmArmSmmuV3NodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPmcg,                        CmArmPmcgNodeParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGicItsIdentifierArray,       CmArmGicItsIdentifierParser),
+  CM_PARSER_ADD_OBJECT (EArmObjIdMappingArray,              CmArmIdMappingParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray,          CmArmGenericInterruptParser),
+  CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo,           CmArmProcHierarchyInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjCacheInfo,                   CmArmCacheInfoParser),
+  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved29),
+  CM_PARSER_ADD_OBJECT (EArmObjCmRef,                       CmArmObjRefParser),
+  CM_PARSER_ADD_OBJECT (EArmObjMemoryAffinityInfo,          CmArmMemoryAffinityInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi,            CmArmDeviceHandleAcpiParser),
+  CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci,             CmArmDeviceHandlePciParser),
+  CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericInitiatorAffinityInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjSerialPortInfo,              CmArmSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjCmn600Info,                  CmArmCmn600InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjLpiInfo,                     CmArmLpiInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPciAddressMapInfo,           CmArmPciAddressMapInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPciInterruptMapInfo,         CmPciInterruptMapInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjRmr,                         CmArmRmrInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjMemoryRangeDescriptor,       CmArmMemoryRangeDescriptorInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjCpcInfo,                     CmArmCpcInfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType0Info,        CmArmPccSubspaceType0InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType1Info,        CmArmPccSubspaceType1InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType2Info,        CmArmPccSubspaceType2InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType3Info,        CmArmPccSubspaceType34InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType4Info,        CmArmPccSubspaceType34InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType5Info,        CmArmPccSubspaceType5InfoParser),
+  CM_PARSER_ADD_OBJECT (EArmObjEtInfo,                      CmArmEtInfo),
+  CM_PARSER_ADD_OBJECT (EArmObjPsdInfo,                     CmArmPsdInfoParser),
+  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjMax)
 };
 
 /** A parser for EStdObjCfgMgrInfo.
@@ -798,13 +753,10 @@ STATIC CONST CM_OBJ_PARSER  StdObjSmbiosTableInfoParser[] = {
 /** A parser for Standard namespace objects.
 */
 STATIC CONST CM_OBJ_PARSER_ARRAY  StdNamespaceObjectParser[] = {
-  { "EStdObjCfgMgrInfo",      StdObjCfgMgrInfoParser,
-    ARRAY_SIZE (StdObjCfgMgrInfoParser) },
-  { "EStdObjAcpiTableList",   StdObjAcpiTableInfoParser,
-    ARRAY_SIZE (StdObjAcpiTableInfoParser) },
-  { "EStdObjSmbiosTableList", StdObjSmbiosTableInfoParser,
-    ARRAY_SIZE (StdObjSmbiosTableInfoParser) },
-  { "EStdObjMax",             NULL,                       0}
+  CM_PARSER_ADD_OBJECT (EStdObjCfgMgrInfo,      StdObjCfgMgrInfoParser),
+  CM_PARSER_ADD_OBJECT (EStdObjAcpiTableList,   StdObjAcpiTableInfoParser),
+  CM_PARSER_ADD_OBJECT (EStdObjSmbiosTableList, StdObjSmbiosTableInfoParser),
+  CM_PARSER_ADD_OBJECT_RESERVED (EStdObjMax)
 };
 
 /** Print string data.
@@ -975,7 +927,7 @@ PrintCmObjDesc (
     *RemainingSize -= Parser[Index].Length;
     if (*RemainingSize < 0) {
       DEBUG ((
-        DEBUG_INFO,
+        DEBUG_ERROR,
         "\nERROR: %a: Buffer overrun\n",
         Parser[Index].NameStr
         ));
@@ -1118,6 +1070,9 @@ ParseCmObjDesc (
       ObjIndex + 1,
       ObjectCount
       ));
+
+    ASSERT (ObjId == ParserArray->ObjectId);
+
     if (ParserArray->Parser == NULL) {
       DEBUG ((DEBUG_ERROR, "Parser not implemented\n"));
       RemainingSize = 0;
diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.h b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.h
index 3204f5314340..d996d05a55dd 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.h
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.h
@@ -11,6 +11,18 @@
 
 #define OUTPUT_FIELD_COLUMN_WIDTH  32
 
+/** A helper macro for populating the Reserved objects
+  like EArmObjReserved, EArmObjMax, etc. in the CM_OBJ_PARSER_ARRAY.
+**/
+#define CM_PARSER_ADD_OBJECT_RESERVED(ObjectId) \
+                  {ObjectId, #ObjectId, NULL, 0}
+
+/** A helper macro for populating the Cm Arm objects
+  in the CM_OBJ_PARSER_ARRAY.
+**/
+#define CM_PARSER_ADD_OBJECT(ObjectId, Parser) \
+                  {ObjectId, #ObjectId, Parser, ARRAY_SIZE(Parser) }
+
 /** Function prototype to format a field print.
 
   @param [in] Format  Format string for tracing the data as specified by
@@ -58,6 +70,9 @@ struct CmObjParser {
   with their object names.
 */
 typedef struct CmObjParserArray {
+  /// Object ID
+  CONST UINTN            ObjectId;
+
   /// Object name
   CONST CHAR8            *ObjectName;
 
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116964): https://edk2.groups.io/g/devel/message/116964
Mute This Topic: https://groups.io/mt/105067968/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 04/16] DynamicTablesPkg: Introduce an Arch Common Namespace header file
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (2 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 03/16] DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 05/16] DynamicTablesPkg: Add support for ArchCommon objects in CmObjParser PierreGondois
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Introduce a new header file for defining the Arch Common Namespace
objects. Also include it in the Configuration Manager Object header
file so that the required definitions are propagated.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 DynamicTablesPkg/DynamicTablesPkg.ci.yaml     |  1 +
 .../Include/ArchCommonNameSpaceObjects.h      | 27 +++++++++++++++++++
 .../Include/ConfigurationManagerObject.h      |  1 +
 3 files changed, 29 insertions(+)
 create mode 100644 DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h

diff --git a/DynamicTablesPkg/DynamicTablesPkg.ci.yaml b/DynamicTablesPkg/DynamicTablesPkg.ci.yaml
index 42829f393e69..07768ed648ea 100644
--- a/DynamicTablesPkg/DynamicTablesPkg.ci.yaml
+++ b/DynamicTablesPkg/DynamicTablesPkg.ci.yaml
@@ -104,6 +104,7 @@
            "CCIDX",
            "CCSIDR",
            "countof",
+           "EArch",
            "edynamic",
            "EOBJECT",
            "invoc",
diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
new file mode 100644
index 000000000000..e4205d6ba6bc
--- /dev/null
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -0,0 +1,27 @@
+/** @file
+
+  Copyright (c) 2024, Arm Limited. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Glossary:
+    - Cm or CM   - Configuration Manager
+    - Obj or OBJ - Object
+    - Std or STD - Standard
+**/
+
+#ifndef ARCH_COMMON_NAMESPACE_OBJECTS_H_
+#define ARCH_COMMON_NAMESPACE_OBJECTS_H_
+
+#include <AcpiObjects.h>
+#include <StandardNameSpaceObjects.h>
+
+/** The EARCH_COMMON_OBJECT_ID enum describes the Object IDs
+    in the Arch Common Namespace
+*/
+typedef enum ArchCommonObjectID {
+  EArchCommonObjReserved,                       ///<  0 - Reserved
+  EArchCommonObjMax
+} EARCH_COMMON_OBJECT_ID;
+
+#endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ConfigurationManagerObject.h b/DynamicTablesPkg/Include/ConfigurationManagerObject.h
index 4255c82b42ae..04b365f3d0b7 100644
--- a/DynamicTablesPkg/Include/ConfigurationManagerObject.h
+++ b/DynamicTablesPkg/Include/ConfigurationManagerObject.h
@@ -12,6 +12,7 @@
 #ifndef CONFIGURATION_MANAGER_OBJECT_H_
 #define CONFIGURATION_MANAGER_OBJECT_H_
 
+#include <ArchCommonNameSpaceObjects.h>
 #include <ArmNameSpaceObjects.h>
 #include <StandardNameSpaceObjects.h>
 
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116965): https://edk2.groups.io/g/devel/message/116965
Mute This Topic: https://groups.io/mt/105067970/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 05/16] DynamicTablesPkg: Add support for ArchCommon objects in CmObjParser
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (3 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 04/16] DynamicTablesPkg: Introduce an Arch Common Namespace header file PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 06/16] DynamicTablesPkg: TokenFixer: Return Non Arm NS objs as unsupported PierreGondois
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Update the Cm Object Parser to support parsing of Arch Common
namespace objects.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../ConfigurationManagerObjectParser.c        | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index 68d6c57acfc0..6f5dbdfd2d86 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -667,6 +667,13 @@ STATIC CONST CM_OBJ_PARSER  CmArmPsdInfoParser[] = {
   { "NumProc",   4, "0x%x", NULL },
 };
 
+/** A parser for Arch Common namespace objects.
+*/
+STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
+  CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjReserved),
+  CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
+};
+
 /** A parser for Arm namespace objects.
 */
 STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
@@ -1050,6 +1057,21 @@ ParseCmObjDesc (
 
       ParserArray = &ArmNamespaceObjectParser[ObjId];
       break;
+
+    case EObjNameSpaceArchCommon:
+      if (ObjId >= EArchCommonObjMax) {
+        ASSERT (0);
+        return;
+      }
+
+      if (ObjId >= ARRAY_SIZE (ArchCommonNamespaceObjectParser)) {
+        DEBUG ((DEBUG_ERROR, "ObjId 0x%x is missing from the ArchCommonNamespaceObjectParser array\n", ObjId));
+        ASSERT (0);
+        return;
+      }
+
+      ParserArray = &ArchCommonNamespaceObjectParser[ObjId];
+      break;
     default:
       // Not supported
       DEBUG ((DEBUG_ERROR, "NameSpaceId 0x%x, ObjId 0x%x is not supported by the parser\n", NameSpaceId, ObjId));
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116966): https://edk2.groups.io/g/devel/message/116966
Mute This Topic: https://groups.io/mt/105067971/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 06/16] DynamicTablesPkg: TokenFixer: Return Non Arm NS objs as unsupported
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (4 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 05/16] DynamicTablesPkg: Add support for ArchCommon objects in CmObjParser PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 07/16] DynamicTablesPkg: Update DynamicPlatRepo for Arch Common namespace PierreGondois
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Update the Token Fixer to return objects other than Arm Namespace
objects as unsupported.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Common/DynamicPlatRepoLib/CmObjectTokenFixer.c    | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 9a6ab2a274aa..bbbb81ea31b0 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -209,12 +209,15 @@ FixupCmObjectSelfToken (
   CM_OBJECT_TOKEN_FIXER  TokenFixerFunc;
   CM_OBJECT_ID           ArmNamespaceObjId;
 
+  if (CmObjDesc == NULL) {
+    ASSERT (0);
+    return EFI_INVALID_PARAMETER;
+  }
+
   // Only support Arm objects for now.
-  if ((CmObjDesc == NULL)   ||
-      (GET_CM_NAMESPACE_ID (CmObjDesc->ObjectId) != EObjNameSpaceArm))
-  {
+  if (GET_CM_NAMESPACE_ID (CmObjDesc->ObjectId) != EObjNameSpaceArm) {
     ASSERT (0);
-    return EFI_INVALID_PARAMETER;
+    return EFI_UNSUPPORTED;
   }
 
   ArmNamespaceObjId = GET_CM_OBJECT_ID (CmObjDesc->ObjectId);
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116967): https://edk2.groups.io/g/devel/message/116967
Mute This Topic: https://groups.io/mt/105067972/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 07/16] DynamicTablesPkg: Update DynamicPlatRepo for Arch Common namespace
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (5 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 06/16] DynamicTablesPkg: TokenFixer: Return Non Arm NS objs as unsupported PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 08/16] DynamicTablesPkg: Update documentation for CM_OBJECT_ID PierreGondois
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Update DynamicPlatRepo to reflect the introduction of the Arch
Common namespace. Also, update the TokenFixer map to reflect the
current state of the ArmNamespace Objects and add a note in the
documentation header for the EARM_OBJECT_ID enum, that the Token
fixer map needs updating whenever the ArmObjectId space is updated.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArmNameSpaceObjects.h             |   6 +
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   |  11 +
 .../DynamicPlatRepoLib/DynamicPlatRepo.c      | 287 +++++++++++++-----
 .../DynamicPlatRepoInternal.h                 |  11 +-
 4 files changed, 240 insertions(+), 75 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 4a419a8fcd95..853d722b8c79 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -20,6 +20,12 @@
 
 /** The EARM_OBJECT_ID enum describes the Object IDs
     in the ARM Namespace
+
+  Note: Whenever an entry in this enum is updated,
+        the following data structures must also be
+        updated:
+        - CM_OBJECT_TOKEN_FIXER TokenFixer[] in
+          Library\Common\DynamicPlatRepoLib\CmObjectTokenFixer.c
 */
 typedef enum ArmObjectID {
   EArmObjReserved,                                             ///<  0 - Reserved
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index bbbb81ea31b0..df9452efe5bb 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -183,6 +183,17 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///< 37 - Lpi Info
   NULL,                             ///< 38 - Pci Address Map Info
   NULL,                             ///< 39 - Pci Interrupt Map Info
+  NULL,                             ///< 40 - Reserved Memory Range Node
+  NULL,                             ///< 41 - Memory Range Descriptor
+  NULL,                             ///< 42 - Continuous Performance Control Info
+  NULL,                             ///< 43 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 44 - Pcc Subspace Type 2 Info
+  NULL,                             ///< 45 - Pcc Subspace Type 2 Info
+  NULL,                             ///< 46 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 47 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 48 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 49 - Embedded Trace Extension/Module Info
+  NULL                              ///< 50 - P-State Dependency (PSD) Info
 };
 
 /** CmObj token fixer.
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
index bdeb5c78aeb3..e4fa1233708e 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
@@ -127,10 +127,12 @@ DynPlatRepoAddObject (
   OUT       CM_OBJECT_TOKEN                   *Token OPTIONAL
   )
 {
-  EFI_STATUS       Status;
-  CM_OBJ_NODE      *ObjNode;
-  CM_OBJECT_ID     ArmNamespaceObjId;
-  CM_OBJECT_TOKEN  NewToken;
+  EFI_STATUS            Status;
+  CM_OBJ_NODE           *ObjNode;
+  CM_OBJECT_ID          ObjId;
+  CM_OBJECT_TOKEN       NewToken;
+  LIST_ENTRY            *ObjList;
+  EOBJECT_NAMESPACE_ID  NamespaceId;
 
   // The dynamic repository must be able to receive objects.
   if ((This == NULL)      ||
@@ -142,15 +144,33 @@ DynPlatRepoAddObject (
   }
 
   // Check the CmObjDesc:
-  //  - only Arm objects are supported for now.
+  //  - only Arm objects and Arch Common objects are supported for now.
   //  - only EArmObjCmRef objects can be added as arrays.
-  ArmNamespaceObjId = GET_CM_OBJECT_ID (CmObjDesc->ObjectId);
-  if ((CmObjDesc->Size == 0)              ||
-      (CmObjDesc->Count == 0)             ||
-      (ArmNamespaceObjId >= EArmObjMax)   ||
-      ((CmObjDesc->Count > 1)  && (ArmNamespaceObjId != EArmObjCmRef))  ||
-      (GET_CM_NAMESPACE_ID (CmObjDesc->ObjectId) != EObjNameSpaceArm))
-  {
+  if ((CmObjDesc->Size == 0) || (CmObjDesc->Count == 0)) {
+    ASSERT (0);
+    return EFI_INVALID_PARAMETER;
+  }
+
+  ObjId       = GET_CM_OBJECT_ID (CmObjDesc->ObjectId);
+  NamespaceId = GET_CM_NAMESPACE_ID (CmObjDesc->ObjectId);
+
+  if (EObjNameSpaceArm == NamespaceId) {
+    if ((ObjId >= EArmObjMax) ||
+        ((CmObjDesc->Count > 1)  && (ObjId != EArmObjCmRef)))
+    {
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    ObjList = &This->ArmCmObjList[ObjId];
+  } else if (EObjNameSpaceArchCommon == NamespaceId) {
+    if (ObjId >= EArchCommonObjMax) {
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    ObjList = &This->ArchCommonCmObjList[ObjId];
+  } else {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
   }
@@ -166,15 +186,17 @@ DynPlatRepoAddObject (
   }
 
   // Fixup self-token if necessary.
-  Status = FixupCmObjectSelfToken (&ObjNode->CmObjDesc, NewToken);
-  if (EFI_ERROR (Status)) {
-    FreeCmObjNode (ObjNode);
-    ASSERT (0);
-    return Status;
+  if (EObjNameSpaceArm == NamespaceId) {
+    Status = FixupCmObjectSelfToken (&ObjNode->CmObjDesc, NewToken);
+    if (EFI_ERROR (Status)) {
+      FreeCmObjNode (ObjNode);
+      ASSERT (0);
+      return Status;
+    }
   }
 
   // Add to link list.
-  InsertTailList (&This->ArmCmObjList[ArmNamespaceObjId], &ObjNode->Link);
+  InsertTailList (ObjList, &ObjNode->Link);
   This->ObjectCount += 1;
 
   if (Token != NULL) {
@@ -184,11 +206,14 @@ DynPlatRepoAddObject (
   return EFI_SUCCESS;
 }
 
-/** Group lists of CmObjNode from the ArmNameSpace to one array.
+/** Group lists of CmObjNode from the Arm Namespace or ArchCommon namespace
+    to one array.
 
   @param [in]  This         This dynamic platform repository.
-  @param [in]  ArmObjIndex  Index in EARM_OBJECT_ID
-                            (must be < EArmObjMax).
+  @param [in]  NamespaceId  The namespace ID which can be EObjNameSpaceArm or
+                            EObjNameSpaceArchCommon.
+  @param [in]  ObjIndex     Index in EARM_OBJECT_ID (must be < EArmObjMax) or
+                            EARCH_COMMON_OBJECT_ID (must be <EArchCommonObjMax).
 
   @retval EFI_SUCCESS           Success.
   @retval EFI_INVALID_PARAMETER A parameter is invalid.
@@ -200,7 +225,8 @@ EFI_STATUS
 EFIAPI
 GroupCmObjNodes (
   IN  DYNAMIC_PLATFORM_REPOSITORY_INFO  *This,
-  IN  UINT32                            ArmObjIndex
+  IN  EOBJECT_NAMESPACE_ID              NamespaceId,
+  IN  UINT32                            ObjIndex
   )
 {
   EFI_STATUS         Status;
@@ -212,19 +238,38 @@ GroupCmObjNodes (
   CM_OBJ_DESCRIPTOR  *CmObjDesc;
   LIST_ENTRY         *ListHead;
   LIST_ENTRY         *Link;
+  CM_OBJ_DESCRIPTOR  *ObjArray;
 
-  if ((This == NULL)  ||
-      (ArmObjIndex >= EArmObjMax))
-  {
+  if (This == NULL) {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
   }
 
-  Count    = 0;
-  Size     = 0;
-  CmObjId  = CREATE_CM_ARM_OBJECT_ID (ArmObjIndex);
-  ListHead = &This->ArmCmObjList[ArmObjIndex];
-  Link     = GetFirstNode (ListHead);
+  if (NamespaceId == EObjNameSpaceArm) {
+    if (ObjIndex >= EArmObjMax) {
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    ListHead = &This->ArmCmObjList[ObjIndex];
+    ObjArray = &This->ArmCmObjArray[ObjIndex];
+  } else if (NamespaceId == EObjNameSpaceArchCommon) {
+    if (ObjIndex >= EArchCommonObjMax) {
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    ListHead = &This->ArchCommonCmObjList[ObjIndex];
+    ObjArray = &This->ArchCommonCmObjArray[ObjIndex];
+  } else {
+    ASSERT (0);
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Count   = 0;
+  Size    = 0;
+  CmObjId = CREATE_CM_OBJECT_ID (NamespaceId, ObjIndex);
+  Link    = GetFirstNode (ListHead);
 
   // Compute the total count and size of the CmObj in the list.
   while (Link != ListHead) {
@@ -235,7 +280,10 @@ GroupCmObjNodes (
       return EFI_INVALID_PARAMETER;
     }
 
-    if ((CmObjDesc->Count != 1) && (ArmObjIndex != EArmObjCmRef)) {
+    if ((CmObjDesc->Count != 1) &&
+        ((NamespaceId != EObjNameSpaceArm) ||
+         (ObjIndex != EArmObjCmRef)))
+    {
       // We expect each descriptor to contain an individual object.
       // EArmObjCmRef objects are counted as groups, so +1 as well.
       ASSERT (0);
@@ -286,7 +334,7 @@ GroupCmObjNodes (
     Link  = GetNextNode (ListHead, Link);
   } // while
 
-  CmObjDesc           = &This->ArmCmObjArray[ArmObjIndex];
+  CmObjDesc           = ObjArray;
   CmObjDesc->ObjectId = CmObjId;
   CmObjDesc->Size     = (UINT32)Size;
   CmObjDesc->Count    = (UINT32)Count;
@@ -317,7 +365,7 @@ DynamicPlatRepoFinalise (
   )
 {
   EFI_STATUS  Status;
-  UINTN       ArmObjIndex;
+  UINTN       ObjIndex;
 
   if ((This == NULL)  ||
       (This->RepoState != DynRepoTransient))
@@ -340,18 +388,29 @@ DynamicPlatRepoFinalise (
   //  - Convert the list of nodes to an array
   //    (the array is wrapped in a CmObjDesc).
   //  - Add the Token/CmObj binding to the token mapper.
-  for (ArmObjIndex = 0; ArmObjIndex < EArmObjMax; ArmObjIndex++) {
-    Status = GroupCmObjNodes (This, (UINT32)ArmObjIndex);
+  for (ObjIndex = 0; ObjIndex < EArmObjMax; ObjIndex++) {
+    Status = GroupCmObjNodes (This, EObjNameSpaceArm, (UINT32)ObjIndex);
     if (EFI_ERROR (Status)) {
       ASSERT (0);
-      // Free the TokenMapper.
-      // Ignore the returned Status since we already failed.
-      TokenMapperShutdown (&This->TokenMapper);
-      return Status;
+      goto error_handler;
+    }
+  } // for
+
+  for (ObjIndex = 0; ObjIndex < EArchCommonObjMax; ObjIndex++) {
+    Status = GroupCmObjNodes (This, EObjNameSpaceArchCommon, (UINT32)ObjIndex);
+    if (EFI_ERROR (Status)) {
+      ASSERT (0);
+      goto error_handler;
     }
   } // for
 
   return EFI_SUCCESS;
+
+error_handler:
+  // Free the TokenMapper.
+  // Ignore the returned Status since we already failed.
+  TokenMapperShutdown (&This->TokenMapper);
+  return Status;
 }
 
 /** Get a CmObj from the dynamic repository.
@@ -376,9 +435,10 @@ DynamicPlatRepoGetObject (
   IN  OUT CM_OBJ_DESCRIPTOR                 *CmObjDesc
   )
 {
-  EFI_STATUS         Status;
-  CM_OBJ_DESCRIPTOR  *Desc;
-  CM_OBJECT_ID       ArmNamespaceObjId;
+  EFI_STATUS            Status;
+  CM_OBJ_DESCRIPTOR     *Desc;
+  CM_OBJECT_ID          ObjId;
+  EOBJECT_NAMESPACE_ID  NamespaceId;
 
   if ((This == NULL)      ||
       (CmObjDesc == NULL) ||
@@ -388,8 +448,28 @@ DynamicPlatRepoGetObject (
     return EFI_INVALID_PARAMETER;
   }
 
-  ArmNamespaceObjId = GET_CM_OBJECT_ID (CmObjectId);
-  if (ArmNamespaceObjId >= EArmObjMax) {
+  NamespaceId = GET_CM_NAMESPACE_ID (CmObjectId);
+  ObjId       = GET_CM_OBJECT_ID (CmObjectId);
+
+  if (NamespaceId == EObjNameSpaceArm) {
+    if ((ObjId >= EArmObjMax) ||
+        ((ObjId == EArmObjCmRef) &&
+         (Token == CM_NULL_TOKEN)))
+    {
+      // EArmObjCmRef object must be requested using a valid token.
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    Desc = &This->ArmCmObjArray[ObjId];
+  } else if (NamespaceId == EObjNameSpaceArchCommon) {
+    if (ObjId >= EArchCommonObjMax) {
+      ASSERT (0);
+      return EFI_INVALID_PARAMETER;
+    }
+
+    Desc = &This->ArchCommonCmObjArray[ObjId];
+  } else {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
   }
@@ -406,14 +486,6 @@ DynamicPlatRepoGetObject (
     return Status;
   }
 
-  if (ArmNamespaceObjId == EArmObjCmRef) {
-    // EArmObjCmRef object must be requested using a valid token.
-    ASSERT (0);
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Desc = &This->ArmCmObjArray[ArmNamespaceObjId];
-
   // Nothing here.
   if (Desc->Count == 0) {
     return EFI_NOT_FOUND;
@@ -462,6 +534,10 @@ DynamicPlatRepoInit (
     InitializeListHead (&Repo->ArmCmObjList[Index]);
   }
 
+  for (Index = 0; Index < EArchCommonObjMax; Index++) {
+    InitializeListHead (&Repo->ArchCommonCmObjList[Index]);
+  }
+
   Repo->ObjectCount = 0;
   Repo->RepoState   = DynRepoTransient;
 
@@ -470,6 +546,88 @@ DynamicPlatRepoInit (
   return EFI_SUCCESS;
 }
 
+/** Free Arm Namespace objects.
+
+  Free all the memory allocated for the Arm namespace objects in the
+  dynamic platform repository.
+
+  @param [in]  DynPlatRepo    The dynamic platform repository.
+
+**/
+STATIC
+VOID
+EFIAPI
+DynamicPlatRepoFreeArmObjects (
+  IN  DYNAMIC_PLATFORM_REPOSITORY_INFO  *DynPlatRepo
+  )
+{
+  UINT32             Index;
+  LIST_ENTRY         *ListHead;
+  CM_OBJ_DESCRIPTOR  *CmObjDesc;
+  VOID               *Data;
+
+  ASSERT (DynPlatRepo != NULL);
+
+  // Free the list of objects.
+  for (Index = 0; Index < EArmObjMax; Index++) {
+    // Free all the nodes with this object Id.
+    ListHead = &DynPlatRepo->ArmCmObjList[Index];
+    while (!IsListEmpty (ListHead)) {
+      FreeCmObjNode ((CM_OBJ_NODE *)GetFirstNode (ListHead));
+    } // while
+  } // for
+
+  // Free the arrays.
+  CmObjDesc = DynPlatRepo->ArmCmObjArray;
+  for (Index = 0; Index < EArmObjMax; Index++) {
+    Data = CmObjDesc[Index].Data;
+    if (Data != NULL) {
+      FreePool (Data);
+    }
+  } // for
+}
+
+/** Free Arch Common Namespace objects.
+
+  Free all the memory allocated for the Arch Common namespace objects in the
+  dynamic platform repository.
+
+  @param [in]  DynPlatRepo    The dynamic platform repository.
+
+**/
+STATIC
+VOID
+EFIAPI
+DynamicPlatRepoFreeArchCommonObjects (
+  IN  DYNAMIC_PLATFORM_REPOSITORY_INFO  *DynPlatRepo
+  )
+{
+  UINT32             Index;
+  LIST_ENTRY         *ListHead;
+  CM_OBJ_DESCRIPTOR  *CmObjDesc;
+  VOID               *Data;
+
+  ASSERT (DynPlatRepo != NULL);
+
+  // Free the list of objects.
+  for (Index = 0; Index < EArchCommonObjMax; Index++) {
+    // Free all the nodes with this object Id.
+    ListHead = &DynPlatRepo->ArchCommonCmObjList[Index];
+    while (!IsListEmpty (ListHead)) {
+      FreeCmObjNode ((CM_OBJ_NODE *)GetFirstNode (ListHead));
+    } // while
+  } // for
+
+  // Free the arrays.
+  CmObjDesc = DynPlatRepo->ArchCommonCmObjArray;
+  for (Index = 0; Index < EArchCommonObjMax; Index++) {
+    Data = CmObjDesc[Index].Data;
+    if (Data != NULL) {
+      FreePool (Data);
+    }
+  } // for
+}
+
 /** Shutdown the dynamic platform repository.
 
   Free all the memory allocated for the dynamic platform repository.
@@ -485,34 +643,15 @@ DynamicPlatRepoShutdown (
   IN  DYNAMIC_PLATFORM_REPOSITORY_INFO  *DynPlatRepo
   )
 {
-  EFI_STATUS         Status;
-  UINT32             Index;
-  LIST_ENTRY         *ListHead;
-  CM_OBJ_DESCRIPTOR  *CmObjDesc;
-  VOID               *Data;
+  EFI_STATUS  Status;
 
   if (DynPlatRepo == NULL) {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
   }
 
-  // Free the list of objects.
-  for (Index = 0; Index < EArmObjMax; Index++) {
-    // Free all the nodes with this object Id.
-    ListHead = &DynPlatRepo->ArmCmObjList[Index];
-    while (!IsListEmpty (ListHead)) {
-      FreeCmObjNode ((CM_OBJ_NODE *)GetFirstNode (ListHead));
-    } // while
-  } // for
-
-  // Free the arrays.
-  CmObjDesc = DynPlatRepo->ArmCmObjArray;
-  for (Index = 0; Index < EArmObjMax; Index++) {
-    Data = CmObjDesc[Index].Data;
-    if (Data != NULL) {
-      FreePool (Data);
-    }
-  } // for
+  DynamicPlatRepoFreeArmObjects (DynPlatRepo);
+  DynamicPlatRepoFreeArchCommonObjects (DynPlatRepo);
 
   // Free the TokenMapper
   Status = TokenMapperShutdown (&DynPlatRepo->TokenMapper);
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
index eaee5d4ce9d9..0c842bc2d535 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
@@ -67,7 +67,16 @@ typedef struct DynamicPlatformRepositoryInfo {
   /// This array is populated when the Repo is finalized.
   CM_OBJ_DESCRIPTOR      ArmCmObjArray[EArmObjMax];
 
-  /// A token mapper for the objects in the ArmNamespaceObjectArray
+  /// Link lists of CmObj from the ArchCommon Namespace
+  /// that are added in the Transient state.
+  LIST_ENTRY             ArchCommonCmObjList[EArchCommonObjMax];
+
+  /// Structure Members used in Finalized state.
+  /// An array of CmObj Descriptors from the ArchCommon Namespace
+  /// This array is populated when the Repo is finalized.
+  CM_OBJ_DESCRIPTOR      ArchCommonCmObjArray[EArchCommonObjMax];
+
+  /// A token mapper for the objects in the <Arm|ArchCommon>CmObjArray
   /// The Token mapper is populated when the Repo is finalized in
   /// a call to DynamicPlatRepoFinalise ().
   TOKEN_MAPPER           TokenMapper;
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116968): https://edk2.groups.io/g/devel/message/116968
Mute This Topic: https://groups.io/mt/105067975/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 08/16] DynamicTablesPkg: Update documentation for CM_OBJECT_ID
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (6 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 07/16] DynamicTablesPkg: Update DynamicPlatRepo for Arch Common namespace PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 09/16] DynamicTablesPkg: Drop Cpu Info object ID from Arm Namespace PierreGondois
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Remove the partial listing of the Arm Namespace object IDs
from and add a reference to the enum EARM_OBJECT_ID that is
used to describe the object in the ARM Namespace.

Also document that the Arch Common namespace objects will be
described using the enum EARCH_COMMON_OBJECT_ID.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ConfigurationManagerObject.h      | 35 +++----------------
 1 file changed, 4 insertions(+), 31 deletions(-)

diff --git a/DynamicTablesPkg/Include/ConfigurationManagerObject.h b/DynamicTablesPkg/Include/ConfigurationManagerObject.h
index 04b365f3d0b7..dd730ca677f5 100644
--- a/DynamicTablesPkg/Include/ConfigurationManagerObject.h
+++ b/DynamicTablesPkg/Include/ConfigurationManagerObject.h
@@ -51,38 +51,11 @@ Object ID's in the Standard Namespace:
   1 - ACPI Table List
   2 - SMBIOS Table List
 
+Object ID's in the Arch Common Namespace:
+   See EARCH_COMMON_OBJECT_ID.
+
 Object ID's in the ARM Namespace:
-   0 - Reserved
-   1 - Boot Architecture Info
-   2 - CPU Info
-   3 - Power Management Profile Info
-   4 - GICC Info
-   5 - GICD Info
-   6 - GIC MSI Frame Info
-   7 - GIC Redistributor Info
-   8 - GIC ITS Info
-   9 - Serial Console Port Info
-  10 - Serial Debug Port Info
-  11 - Generic Timer Info
-  12 - Platform GT Block Info
-  13 - Generic Timer Block Frame Info
-  14 - Platform Generic Watchdog
-  15 - PCI Configuration Space Info
-  16 - Hypervisor Vendor Id
-  17 - Fixed feature flags for FADT
-  18 - ITS Group
-  19 - Named Component
-  20 - Root Complex
-  21 - SMMUv1 or SMMUv2
-  22 - SMMUv3
-  23 - PMCG
-  24 - GIC ITS Identifier Array
-  25 - ID Mapping Array
-  26 - SMMU Interrupt Array
-  27 - Processor Hierarchy Info
-  28 - Cache Info
-  29 - Processor Hierarchy Node ID Info
-  30 - CM Object Reference
+   See EARM_OBJECT_ID.
 */
 typedef UINT32 CM_OBJECT_ID;
 
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116969): https://edk2.groups.io/g/devel/message/116969
Mute This Topic: https://groups.io/mt/105067978/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 09/16] DynamicTablesPkg: Drop Cpu Info object ID from Arm Namespace
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (7 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 08/16] DynamicTablesPkg: Update documentation for CM_OBJECT_ID PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 10/16] DynamicTablesPkg: Drop Reserved29 " PierreGondois
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

The Arm Namespace Object ID for CPU info was not used.
Therefore, drop the EArmObjCpuInfo object ID. Also remove
- the partial listing of the Arm Namespace object IDs from
  ConfigurationManagerObject.h and add a reference to the
  location where they are defined.
- the parsing code in Configuration Manager ObjectParser.
- update the Dynamic Plat Repo TokenFixer map.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArmNameSpaceObjects.h             | 97 +++++++++----------
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 93 +++++++++---------
 .../ConfigurationManagerObjectParser.c        |  1 -
 DynamicTablesPkg/Readme.md                    | 97 +++++++++----------
 4 files changed, 142 insertions(+), 146 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 853d722b8c79..2eeff594fc59 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -30,55 +30,54 @@
 typedef enum ArmObjectID {
   EArmObjReserved,                                             ///<  0 - Reserved
   EArmObjBootArchInfo,                                         ///<  1 - Boot Architecture Info
-  EArmObjCpuInfo,                                              ///<  2 - CPU Info
-  EArmObjPowerManagementProfileInfo,                           ///<  3 - Power Management Profile Info
-  EArmObjGicCInfo,                                             ///<  4 - GIC CPU Interface Info
-  EArmObjGicDInfo,                                             ///<  5 - GIC Distributor Info
-  EArmObjGicMsiFrameInfo,                                      ///<  6 - GIC MSI Frame Info
-  EArmObjGicRedistributorInfo,                                 ///<  7 - GIC Redistributor Info
-  EArmObjGicItsInfo,                                           ///<  8 - GIC ITS Info
-  EArmObjSerialConsolePortInfo,                                ///<  9 - Serial Console Port Info
-  EArmObjSerialDebugPortInfo,                                  ///< 10 - Serial Debug Port Info
-  EArmObjGenericTimerInfo,                                     ///< 11 - Generic Timer Info
-  EArmObjPlatformGTBlockInfo,                                  ///< 12 - Platform GT Block Info
-  EArmObjGTBlockTimerFrameInfo,                                ///< 13 - Generic Timer Block Frame Info
-  EArmObjPlatformGenericWatchdogInfo,                          ///< 14 - Platform Generic Watchdog
-  EArmObjPciConfigSpaceInfo,                                   ///< 15 - PCI Configuration Space Info
-  EArmObjHypervisorVendorIdentity,                             ///< 16 - Hypervisor Vendor Id
-  EArmObjFixedFeatureFlags,                                    ///< 17 - Fixed feature flags for FADT
-  EArmObjItsGroup,                                             ///< 18 - ITS Group
-  EArmObjNamedComponent,                                       ///< 19 - Named Component
-  EArmObjRootComplex,                                          ///< 20 - Root Complex
-  EArmObjSmmuV1SmmuV2,                                         ///< 21 - SMMUv1 or SMMUv2
-  EArmObjSmmuV3,                                               ///< 22 - SMMUv3
-  EArmObjPmcg,                                                 ///< 23 - PMCG
-  EArmObjGicItsIdentifierArray,                                ///< 24 - GIC ITS Identifier Array
-  EArmObjIdMappingArray,                                       ///< 25 - ID Mapping Array
-  EArmObjSmmuInterruptArray,                                   ///< 26 - SMMU Interrupt Array
-  EArmObjProcHierarchyInfo,                                    ///< 27 - Processor Hierarchy Info
-  EArmObjCacheInfo,                                            ///< 28 - Cache Info
-  EArmObjReserved29,                                           ///< 29 - Reserved
-  EArmObjCmRef,                                                ///< 30 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 31 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 32 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 33 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 34 - Generic Initiator Affinity
-  EArmObjSerialPortInfo,                                       ///< 35 - Generic Serial Port Info
-  EArmObjCmn600Info,                                           ///< 36 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 37 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 38 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 39 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 40 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 41 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 42 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 43 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 44 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 45 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 46 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 47 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 48 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 49 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 50 - P-State Dependency (PSD) Info
+  EArmObjPowerManagementProfileInfo,                           ///<  2 - Power Management Profile Info
+  EArmObjGicCInfo,                                             ///<  3 - GIC CPU Interface Info
+  EArmObjGicDInfo,                                             ///<  4 - GIC Distributor Info
+  EArmObjGicMsiFrameInfo,                                      ///<  5 - GIC MSI Frame Info
+  EArmObjGicRedistributorInfo,                                 ///<  6 - GIC Redistributor Info
+  EArmObjGicItsInfo,                                           ///<  7 - GIC ITS Info
+  EArmObjSerialConsolePortInfo,                                ///<  8 - Serial Console Port Info
+  EArmObjSerialDebugPortInfo,                                  ///<  9 - Serial Debug Port Info
+  EArmObjGenericTimerInfo,                                     ///< 10 - Generic Timer Info
+  EArmObjPlatformGTBlockInfo,                                  ///< 11 - Platform GT Block Info
+  EArmObjGTBlockTimerFrameInfo,                                ///< 12 - Generic Timer Block Frame Info
+  EArmObjPlatformGenericWatchdogInfo,                          ///< 13 - Platform Generic Watchdog
+  EArmObjPciConfigSpaceInfo,                                   ///< 14 - PCI Configuration Space Info
+  EArmObjHypervisorVendorIdentity,                             ///< 15 - Hypervisor Vendor Id
+  EArmObjFixedFeatureFlags,                                    ///< 16 - Fixed feature flags for FADT
+  EArmObjItsGroup,                                             ///< 17 - ITS Group
+  EArmObjNamedComponent,                                       ///< 18 - Named Component
+  EArmObjRootComplex,                                          ///< 19 - Root Complex
+  EArmObjSmmuV1SmmuV2,                                         ///< 20 - SMMUv1 or SMMUv2
+  EArmObjSmmuV3,                                               ///< 21 - SMMUv3
+  EArmObjPmcg,                                                 ///< 22 - PMCG
+  EArmObjGicItsIdentifierArray,                                ///< 23 - GIC ITS Identifier Array
+  EArmObjIdMappingArray,                                       ///< 24 - ID Mapping Array
+  EArmObjSmmuInterruptArray,                                   ///< 25 - SMMU Interrupt Array
+  EArmObjProcHierarchyInfo,                                    ///< 26 - Processor Hierarchy Info
+  EArmObjCacheInfo,                                            ///< 27 - Cache Info
+  EArmObjReserved29,                                           ///< 28 - Reserved
+  EArmObjCmRef,                                                ///< 29 - CM Object Reference
+  EArmObjMemoryAffinityInfo,                                   ///< 30 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 31 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 32 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 33 - Generic Initiator Affinity
+  EArmObjSerialPortInfo,                                       ///< 34 - Generic Serial Port Info
+  EArmObjCmn600Info,                                           ///< 35 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 36 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 37 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 38 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 39 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 40 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 41 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 42 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 43 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 44 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 45 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 46 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 47 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 48 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 49 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index df9452efe5bb..07e26a4f4e4c 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -145,55 +145,54 @@ CONST
 CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///<  0 - Reserved
   NULL,                             ///<  1 - Boot Architecture Info
-  NULL,                             ///<  2 - CPU Info
-  NULL,                             ///<  3 - Power Management Profile Info
-  NULL,                             ///<  4 - GIC CPU Interface Info
-  NULL,                             ///<  5 - GIC Distributor Info
-  NULL,                             ///<  6 - GIC MSI Frame Info
-  NULL,                             ///<  7 - GIC Redistributor Info
-  NULL,                             ///<  8 - GIC ITS Info
-  NULL,                             ///<  9 - Serial Console Port Info
-  NULL,                             ///< 10 - Serial Debug Port Info
-  NULL,                             ///< 11 - Generic Timer Info
-  NULL,                             ///< 12 - Platform GT Block Info
-  NULL,                             ///< 13 - Generic Timer Block Frame Info
-  NULL,                             ///< 14 - Platform Generic Watchdog
-  NULL,                             ///< 15 - PCI Configuration Space Info
-  NULL,                             ///< 16 - Hypervisor Vendor Id
-  NULL,                             ///< 17 - Fixed feature flags for FADT
-  TokenFixerItsGroup,               ///< 18 - ITS Group
-  TokenFixerNamedComponentNode,     ///< 19 - Named Component
-  TokenFixerRootComplexNode,        ///< 20 - Root Complex
-  TokenFixerNotImplemented,         ///< 21 - SMMUv1 or SMMUv2
-  TokenFixerSmmuV3Node,             ///< 22 - SMMUv3
-  TokenFixerNotImplemented,         ///< 23 - PMCG
-  NULL,                             ///< 24 - GIC ITS Identifier Array
-  NULL,                             ///< 25 - ID Mapping Array
-  NULL,                             ///< 26 - SMMU Interrupt Array
-  TokenFixerNotImplemented,         ///< 27 - Processor Hierarchy Info
-  TokenFixerNotImplemented,         ///< 28 - Cache Info
+  NULL,                             ///<  2 - Power Management Profile Info
+  NULL,                             ///<  3 - GIC CPU Interface Info
+  NULL,                             ///<  4 - GIC Distributor Info
+  NULL,                             ///<  5 - GIC MSI Frame Info
+  NULL,                             ///<  6 - GIC Redistributor Info
+  NULL,                             ///<  7 - GIC ITS Info
+  NULL,                             ///<  8 - Serial Console Port Info
+  NULL,                             ///<  9 - Serial Debug Port Info
+  NULL,                             ///< 10 - Generic Timer Info
+  NULL,                             ///< 11 - Platform GT Block Info
+  NULL,                             ///< 12 - Generic Timer Block Frame Info
+  NULL,                             ///< 13 - Platform Generic Watchdog
+  NULL,                             ///< 14 - PCI Configuration Space Info
+  NULL,                             ///< 15 - Hypervisor Vendor Id
+  NULL,                             ///< 16 - Fixed feature flags for FADT
+  TokenFixerItsGroup,               ///< 17 - ITS Group
+  TokenFixerNamedComponentNode,     ///< 18 - Named Component
+  TokenFixerRootComplexNode,        ///< 19 - Root Complex
+  TokenFixerNotImplemented,         ///< 20 - SMMUv1 or SMMUv2
+  TokenFixerSmmuV3Node,             ///< 21 - SMMUv3
+  TokenFixerNotImplemented,         ///< 22 - PMCG
+  NULL,                             ///< 23 - GIC ITS Identifier Array
+  NULL,                             ///< 24 - ID Mapping Array
+  NULL,                             ///< 25 - SMMU Interrupt Array
+  TokenFixerNotImplemented,         ///< 26 - Processor Hierarchy Info
+  TokenFixerNotImplemented,         ///< 27 - Cache Info
   TokenFixerNotImplemented,         ///< 29 - Reserved
-  NULL,                             ///< 30 - CM Object Reference
-  NULL,                             ///< 31 - Memory Affinity Info
-  NULL,                             ///< 32 - Device Handle Acpi
-  NULL,                             ///< 33 - Device Handle Pci
-  NULL,                             ///< 34 - Generic Initiator Affinity
-  NULL,                             ///< 35 - Generic Serial Port Info
-  NULL,                             ///< 36 - CMN-600 Info
-  NULL,                             ///< 37 - Lpi Info
-  NULL,                             ///< 38 - Pci Address Map Info
-  NULL,                             ///< 39 - Pci Interrupt Map Info
-  NULL,                             ///< 40 - Reserved Memory Range Node
-  NULL,                             ///< 41 - Memory Range Descriptor
-  NULL,                             ///< 42 - Continuous Performance Control Info
-  NULL,                             ///< 43 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 29 - CM Object Reference
+  NULL,                             ///< 30 - Memory Affinity Info
+  NULL,                             ///< 31 - Device Handle Acpi
+  NULL,                             ///< 32 - Device Handle Pci
+  NULL,                             ///< 33 - Generic Initiator Affinity
+  NULL,                             ///< 34 - Generic Serial Port Info
+  NULL,                             ///< 35 - CMN-600 Info
+  NULL,                             ///< 36 - Lpi Info
+  NULL,                             ///< 37 - Pci Address Map Info
+  NULL,                             ///< 38 - Pci Interrupt Map Info
+  NULL,                             ///< 39 - Reserved Memory Range Node
+  NULL,                             ///< 40 - Memory Range Descriptor
+  NULL,                             ///< 41 - Continuous Performance Control Info
+  NULL,                             ///< 42 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 43 - Pcc Subspace Type 2 Info
   NULL,                             ///< 44 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 45 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 46 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 47 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 48 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 49 - Embedded Trace Extension/Module Info
-  NULL                              ///< 50 - P-State Dependency (PSD) Info
+  NULL,                             ///< 45 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 46 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 47 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 48 - Embedded Trace Extension/Module Info
+  NULL                              ///< 49 - 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 6f5dbdfd2d86..af5884832cda 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -679,7 +679,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
 STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),
   CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo,                CmArmBootArchInfoParser),
-  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjCpuInfo),
   CM_PARSER_ADD_OBJECT (EArmObjPowerManagementProfileInfo,  CmArmPowerManagementProfileInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicCInfo,                    CmArmGicCInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicDInfo,                    CmArmGicDInfoParser),
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 24b5b149a9b7..80759f953487 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -442,55 +442,54 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 | ---:  | :--------------------------               | :---     |
 |   0   | Reserved                                  | |
 |   1   | Boot Architecture Info                    | |
-|   2   | CPU Info                                  | Unused can be dropped|
-|   3   | Power Management Profile Info             | Move to Arch Common NS |
-|   4   | GICC Info                                 | |
-|   5   | GICD Info                                 | |
-|   6   | GIC MSI Frame Info                        | |
-|   7   | GIC Redistributor Info                    | |
-|   8   | GIC ITS Info                              | |
-|   9   | Serial Console Port Info                  | Move to Arch Common NS |
-|  10   | Serial Debug Port Info                    | Move to Arch Common NS |
-|  11   | Generic Timer Info                        | |
-|  12   | Platform GT Block Info                    | |
-|  13   | Generic Timer Block Frame Info            | |
-|  14   | Platform Generic Watchdog                 | |
-|  15   | PCI Configuration Space Info              | Move to Arch Common NS |
-|  16   | Hypervisor Vendor Id                      | Move to Arch Common NS |
-|  17   | Fixed feature flags for FADT              | Move to Arch Common NS |
-|  18   | ITS Group                                 | |
-|  19   | Named Component                           | |
-|  20   | Root Complex                              | |
-|  21   | SMMUv1 or SMMUv2                          | |
-|  22   | SMMUv3                                    | |
-|  23   | PMCG                                      | |
-|  24   | GIC ITS Identifier Array                  | |
-|  25   | ID Mapping Array                          | |
-|  26   | SMMU Interrupt Array                      | |
-|  27   | Processor Hierarchy Info                  | Move to Arch Common NS |
-|  28   | Cache Info                                | Move to Arch Common NS |
-|  29   | Reserved29                                | Unused to be dropped.|
-|  30   | CM Object Reference                       | Move to Arch Common NS |
-|  31   | Memory Affinity Info                      | Move to Arch Common NS |
-|  32   | Device Handle Acpi                        | Move to Arch Common NS |
-|  33   | Device Handle PCI                         | Move to Arch Common NS |
-|  34   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  35   | Serial Port Info                          | Move to Arch Common NS |
-|  36   | CMN 600 Info                              | |
-|  37   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  38   | PCI Address Map Info                      | Move to Arch Common NS |
-|  39   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  40   | Reserved Memory Range Node                | |
-|  41   | Memory Range Descriptor                   | |
-|  42   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  43   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  44   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  45   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  46   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  47   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  48   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  49   | Embedded Trace Extension/Module Info      | |
-|  50   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|   2   | Power Management Profile Info             | Move to Arch Common NS |
+|   3   | GICC Info                                 | |
+|   4   | GICD Info                                 | |
+|   5   | GIC MSI Frame Info                        | |
+|   6   | GIC Redistributor Info                    | |
+|   7   | GIC ITS Info                              | |
+|   8   | Serial Console Port Info                  | Move to Arch Common NS |
+|   9   | Serial Debug Port Info                    | Move to Arch Common NS |
+|  10   | Generic Timer Info                        | |
+|  11   | Platform GT Block Info                    | |
+|  12   | Generic Timer Block Frame Info            | |
+|  13   | Platform Generic Watchdog                 | |
+|  14   | PCI Configuration Space Info              | Move to Arch Common NS |
+|  15   | Hypervisor Vendor Id                      | Move to Arch Common NS |
+|  16   | Fixed feature flags for FADT              | Move to Arch Common NS |
+|  17   | ITS Group                                 | |
+|  18   | Named Component                           | |
+|  19   | Root Complex                              | |
+|  20   | SMMUv1 or SMMUv2                          | |
+|  21   | SMMUv3                                    | |
+|  22   | PMCG                                      | |
+|  23   | GIC ITS Identifier Array                  | |
+|  24   | ID Mapping Array                          | |
+|  25   | SMMU Interrupt Array                      | |
+|  26   | Processor Hierarchy Info                  | Move to Arch Common NS |
+|  27   | Cache Info                                | Move to Arch Common NS |
+|  28   | Reserved29                                | Unused to be dropped.|
+|  29   | CM Object Reference                       | Move to Arch Common NS |
+|  30   | Memory Affinity Info                      | Move to Arch Common NS |
+|  31   | Device Handle Acpi                        | Move to Arch Common NS |
+|  32   | Device Handle PCI                         | Move to Arch Common NS |
+|  33   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  34   | Serial Port Info                          | Move to Arch Common NS |
+|  35   | CMN 600 Info                              | |
+|  36   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  37   | PCI Address Map Info                      | Move to Arch Common NS |
+|  38   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  39   | Reserved Memory Range Node                | |
+|  40   | Memory Range Descriptor                   | |
+|  41   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  42   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  43   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  44   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  45   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  46   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  47   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  48   | Embedded Trace Extension/Module Info      | |
+|  49   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
 |  `*`  | All other values are reserved.            | |
 
 #### Object ID's in the Arch Common Namespace:
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116970): https://edk2.groups.io/g/devel/message/116970
Mute This Topic: https://groups.io/mt/105067979/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 10/16] DynamicTablesPkg: Drop Reserved29 object ID from Arm Namespace
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (8 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 09/16] DynamicTablesPkg: Drop Cpu Info object ID from Arm Namespace PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 11/16] ArmVirtPkg: Kvmtool: Update ConfigMgr to support ArchCommon PierreGondois
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

The Arm Namespace Object ID Reserved29 was a reserved ID
that was never used. Therefore, drop the EArmObjReserved29
object ID also update the Dynamic Plat Repo TokenFixer map
and the Configuration Manager Object Parser.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArmNameSpaceObjects.h             | 43 +++++++++----------
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 41 +++++++++---------
 .../ConfigurationManagerObjectParser.c        |  1 -
 DynamicTablesPkg/Readme.md                    | 43 +++++++++----------
 4 files changed, 62 insertions(+), 66 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 2eeff594fc59..f7e1a0933f7b 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -56,28 +56,27 @@ typedef enum ArmObjectID {
   EArmObjSmmuInterruptArray,                                   ///< 25 - SMMU Interrupt Array
   EArmObjProcHierarchyInfo,                                    ///< 26 - Processor Hierarchy Info
   EArmObjCacheInfo,                                            ///< 27 - Cache Info
-  EArmObjReserved29,                                           ///< 28 - Reserved
-  EArmObjCmRef,                                                ///< 29 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 30 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 31 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 32 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 33 - Generic Initiator Affinity
-  EArmObjSerialPortInfo,                                       ///< 34 - Generic Serial Port Info
-  EArmObjCmn600Info,                                           ///< 35 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 36 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 37 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 38 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 39 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 40 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 41 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 42 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 43 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 44 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 45 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 46 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 47 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 48 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 49 - P-State Dependency (PSD) Info
+  EArmObjCmRef,                                                ///< 28 - CM Object Reference
+  EArmObjMemoryAffinityInfo,                                   ///< 29 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 30 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 31 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 32 - Generic Initiator Affinity
+  EArmObjSerialPortInfo,                                       ///< 33 - Generic Serial Port Info
+  EArmObjCmn600Info,                                           ///< 34 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 35 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 36 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 37 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 38 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 39 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 40 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 41 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 42 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 43 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 44 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 45 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 46 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 47 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 48 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 07e26a4f4e4c..833fa2d6a24b 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -171,28 +171,27 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///< 25 - SMMU Interrupt Array
   TokenFixerNotImplemented,         ///< 26 - Processor Hierarchy Info
   TokenFixerNotImplemented,         ///< 27 - Cache Info
-  TokenFixerNotImplemented,         ///< 29 - Reserved
-  NULL,                             ///< 29 - CM Object Reference
-  NULL,                             ///< 30 - Memory Affinity Info
-  NULL,                             ///< 31 - Device Handle Acpi
-  NULL,                             ///< 32 - Device Handle Pci
-  NULL,                             ///< 33 - Generic Initiator Affinity
-  NULL,                             ///< 34 - Generic Serial Port Info
-  NULL,                             ///< 35 - CMN-600 Info
-  NULL,                             ///< 36 - Lpi Info
-  NULL,                             ///< 37 - Pci Address Map Info
-  NULL,                             ///< 38 - Pci Interrupt Map Info
-  NULL,                             ///< 39 - Reserved Memory Range Node
-  NULL,                             ///< 40 - Memory Range Descriptor
-  NULL,                             ///< 41 - Continuous Performance Control Info
-  NULL,                             ///< 42 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 28 - CM Object Reference
+  NULL,                             ///< 29 - Memory Affinity Info
+  NULL,                             ///< 30 - Device Handle Acpi
+  NULL,                             ///< 31 - Device Handle Pci
+  NULL,                             ///< 32 - Generic Initiator Affinity
+  NULL,                             ///< 33 - Generic Serial Port Info
+  NULL,                             ///< 34 - CMN-600 Info
+  NULL,                             ///< 35 - Lpi Info
+  NULL,                             ///< 36 - Pci Address Map Info
+  NULL,                             ///< 37 - Pci Interrupt Map Info
+  NULL,                             ///< 38 - Reserved Memory Range Node
+  NULL,                             ///< 39 - Memory Range Descriptor
+  NULL,                             ///< 40 - Continuous Performance Control Info
+  NULL,                             ///< 41 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 42 - Pcc Subspace Type 2 Info
   NULL,                             ///< 43 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 44 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 45 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 46 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 47 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 48 - Embedded Trace Extension/Module Info
-  NULL                              ///< 49 - P-State Dependency (PSD) Info
+  NULL,                             ///< 44 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 45 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 46 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 47 - Embedded Trace Extension/Module Info
+  NULL                              ///< 48 - 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 af5884832cda..6896463b2848 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -705,7 +705,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray,          CmArmGenericInterruptParser),
   CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo,           CmArmProcHierarchyInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjCacheInfo,                   CmArmCacheInfoParser),
-  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved29),
   CM_PARSER_ADD_OBJECT (EArmObjCmRef,                       CmArmObjRefParser),
   CM_PARSER_ADD_OBJECT (EArmObjMemoryAffinityInfo,          CmArmMemoryAffinityInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi,            CmArmDeviceHandleAcpiParser),
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 80759f953487..8d30bf560b3d 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -468,28 +468,27 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |  25   | SMMU Interrupt Array                      | |
 |  26   | Processor Hierarchy Info                  | Move to Arch Common NS |
 |  27   | Cache Info                                | Move to Arch Common NS |
-|  28   | Reserved29                                | Unused to be dropped.|
-|  29   | CM Object Reference                       | Move to Arch Common NS |
-|  30   | Memory Affinity Info                      | Move to Arch Common NS |
-|  31   | Device Handle Acpi                        | Move to Arch Common NS |
-|  32   | Device Handle PCI                         | Move to Arch Common NS |
-|  33   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  34   | Serial Port Info                          | Move to Arch Common NS |
-|  35   | CMN 600 Info                              | |
-|  36   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  37   | PCI Address Map Info                      | Move to Arch Common NS |
-|  38   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  39   | Reserved Memory Range Node                | |
-|  40   | Memory Range Descriptor                   | |
-|  41   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  42   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  43   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  44   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  45   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  46   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  47   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  48   | Embedded Trace Extension/Module Info      | |
-|  49   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|  28   | CM Object Reference                       | Move to Arch Common NS |
+|  29   | Memory Affinity Info                      | Move to Arch Common NS |
+|  30   | Device Handle Acpi                        | Move to Arch Common NS |
+|  31   | Device Handle PCI                         | Move to Arch Common NS |
+|  32   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  33   | Serial Port Info                          | Move to Arch Common NS |
+|  34   | CMN 600 Info                              | |
+|  35   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  36   | PCI Address Map Info                      | Move to Arch Common NS |
+|  37   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  38   | Reserved Memory Range Node                | |
+|  39   | Memory Range Descriptor                   | |
+|  40   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  41   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  42   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  43   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  44   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  45   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  46   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  47   | Embedded Trace Extension/Module Info      | |
+|  48   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
 |  `*`  | All other values are reserved.            | |
 
 #### Object ID's in the Arch Common Namespace:
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116971): https://edk2.groups.io/g/devel/message/116971
Mute This Topic: https://groups.io/mt/105067982/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 11/16] ArmVirtPkg: Kvmtool: Update ConfigMgr to support ArchCommon
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (9 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 10/16] DynamicTablesPkg: Drop Reserved29 " PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 12/16] DynamicTablesPkg & ArmVirtPkg: Move Power Mgmt Profile Info Object PierreGondois
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Update the Configuration Manager for Kvmtool guest firmware
to handle ArchComm namespace objects.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../KvmtoolCfgMgrDxe/ConfigurationManager.c   | 70 +++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
index 68b9d2bf0513..4a76583f969c 100644
--- a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
+++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
@@ -722,6 +722,73 @@ GetStandardNameSpaceObject (
   return Status;
 }
 
+/**
+  Return an ArchCommon namespace object.
+
+  @param [in]      This        Pointer to the Configuration Manager Protocol.
+  @param [in]      CmObjectId  The Configuration Manager Object ID.
+  @param [in]      Token       An optional token identifying the object. If
+                               unused this must be CM_NULL_TOKEN.
+  @param [in, out] CmObject    Pointer to the Configuration Manager Object
+                               descriptor describing the requested Object.
+
+  @retval EFI_SUCCESS           Success.
+  @retval EFI_INVALID_PARAMETER A parameter is invalid.
+  @retval EFI_NOT_FOUND         The required object information is not found.
+**/
+EFI_STATUS
+EFIAPI
+GetArchCommonNameSpaceObject (
+  IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  This,
+  IN  CONST CM_OBJECT_ID                                  CmObjectId,
+  IN  CONST CM_OBJECT_TOKEN                               Token OPTIONAL,
+  IN  OUT   CM_OBJ_DESCRIPTOR                     *CONST  CmObject
+  )
+{
+  EFI_STATUS                      Status;
+  EDKII_PLATFORM_REPOSITORY_INFO  *PlatformRepo;
+
+  if ((This == NULL) || (CmObject == NULL)) {
+    ASSERT (This != NULL);
+    ASSERT (CmObject != NULL);
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status       = EFI_NOT_FOUND;
+  PlatformRepo = This->PlatRepoInfo;
+
+  //
+  // First check among the static objects.
+  //
+  switch (GET_CM_OBJECT_ID (CmObjectId)) {
+    default:
+      //
+      // No match found among the static objects.
+      // Check the dynamic objects.
+      //
+      Status = DynamicPlatRepoGetObject (
+                 PlatformRepo->DynamicPlatformRepo,
+                 CmObjectId,
+                 Token,
+                 CmObject
+                 );
+      break;
+  } // switch
+
+  if (Status == EFI_NOT_FOUND) {
+    DEBUG ((
+      DEBUG_INFO,
+      "INFO: CmObjectId " FMT_CM_OBJECT_ID ". Status = %r\n",
+      CmObjectId,
+      Status
+      ));
+  } else {
+    ASSERT_EFI_ERROR (Status);
+  }
+
+  return Status;
+}
+
 /**
   Return an ARM namespace object.
 
@@ -929,6 +996,9 @@ ArmKvmtoolPlatformGetObject (
     case EObjNameSpaceStandard:
       Status = GetStandardNameSpaceObject (This, CmObjectId, Token, CmObject);
       break;
+    case EObjNameSpaceArchCommon:
+      Status = GetArchCommonNameSpaceObject (This, CmObjectId, Token, CmObject);
+      break;
     case EObjNameSpaceArm:
       Status = GetArmNameSpaceObject (This, CmObjectId, Token, CmObject);
       break;
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116972): https://edk2.groups.io/g/devel/message/116972
Mute This Topic: https://groups.io/mt/105067984/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 12/16] DynamicTablesPkg & ArmVirtPkg: Move Power Mgmt Profile Info Object
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (10 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 11/16] ArmVirtPkg: Kvmtool: Update ConfigMgr to support ArchCommon PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 13/16] DynamicTablesPkg: Move Hypervisor Vendor Id to Arch Common PierreGondois
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Move PowerManagementProfileInfo Object from Arm Namespace to the
Arch Common namespace.
The following updates are also done to reflect the changes introduced
by the move:
 - Update the FADT Generator to migrate to use the Power Management
   Profile Info object CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO
   and EArchCommonObjPowerManagementProfileInfo.
 - Update the Configuration manager object parser to parse Arch
   Common namespace objects and update the parsing of the Power
   Management Profile information object from Arm namespace to
   the Arch Common namespace.
 - Update the Dynamic Plat Repo TokenFixer map
 - Update ArmVirtPkg/Kvmtool Guest firmware configuration manager.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../KvmtoolCfgMgrDxe/ConfigurationManager.c   | 136 +++++++++---------
 .../KvmtoolCfgMgrDxe/ConfigurationManager.h   |  20 +--
 .../Include/ArchCommonNameSpaceObjects.h      |  53 +++++++
 .../Include/ArmNameSpaceObjects.h             | 135 ++++++-----------
 .../Include/Library/SsdtSerialPortFixupLib.h  |  16 +--
 .../Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c   |  20 +--
 .../Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c   |  14 +-
 .../Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c   |  18 +--
 .../SsdtSerialPortGenerator.c                 |  24 ++--
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   |  90 ++++++------
 .../SsdtSerialPortFixupLib.c                  |  46 +++---
 .../ConfigurationManagerObjectParser.c        |  18 +--
 .../Serial/ArmSerialPortParser.c              |  79 +++++-----
 .../Serial/ArmSerialPortParser.h              |   8 +-
 DynamicTablesPkg/Readme.md                    |  94 ++++++------
 15 files changed, 386 insertions(+), 385 deletions(-)

diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
index 4a76583f969c..724054440644 100644
--- a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
+++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
@@ -761,74 +761,7 @@ GetArchCommonNameSpaceObject (
   // First check among the static objects.
   //
   switch (GET_CM_OBJECT_ID (CmObjectId)) {
-    default:
-      //
-      // No match found among the static objects.
-      // Check the dynamic objects.
-      //
-      Status = DynamicPlatRepoGetObject (
-                 PlatformRepo->DynamicPlatformRepo,
-                 CmObjectId,
-                 Token,
-                 CmObject
-                 );
-      break;
-  } // switch
-
-  if (Status == EFI_NOT_FOUND) {
-    DEBUG ((
-      DEBUG_INFO,
-      "INFO: CmObjectId " FMT_CM_OBJECT_ID ". Status = %r\n",
-      CmObjectId,
-      Status
-      ));
-  } else {
-    ASSERT_EFI_ERROR (Status);
-  }
-
-  return Status;
-}
-
-/**
-  Return an ARM namespace object.
-
-  @param [in]      This        Pointer to the Configuration Manager Protocol.
-  @param [in]      CmObjectId  The Configuration Manager Object ID.
-  @param [in]      Token       An optional token identifying the object. If
-                               unused this must be CM_NULL_TOKEN.
-  @param [in, out] CmObject    Pointer to the Configuration Manager Object
-                               descriptor describing the requested Object.
-
-  @retval EFI_SUCCESS           Success.
-  @retval EFI_INVALID_PARAMETER A parameter is invalid.
-  @retval EFI_NOT_FOUND         The required object information is not found.
-**/
-EFI_STATUS
-EFIAPI
-GetArmNameSpaceObject (
-  IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  This,
-  IN  CONST CM_OBJECT_ID                                  CmObjectId,
-  IN  CONST CM_OBJECT_TOKEN                               Token OPTIONAL,
-  IN  OUT   CM_OBJ_DESCRIPTOR                     *CONST  CmObject
-  )
-{
-  EFI_STATUS                      Status;
-  EDKII_PLATFORM_REPOSITORY_INFO  *PlatformRepo;
-
-  if ((This == NULL) || (CmObject == NULL)) {
-    ASSERT (This != NULL);
-    ASSERT (CmObject != NULL);
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status       = EFI_NOT_FOUND;
-  PlatformRepo = This->PlatRepoInfo;
-
-  //
-  // First check among the static objects.
-  //
-  switch (GET_CM_OBJECT_ID (CmObjectId)) {
-    case EArmObjPowerManagementProfileInfo:
+    case EArchCommonObjPowerManagementProfileInfo:
       Status = HandleCmObject (
                  CmObjectId,
                  &PlatformRepo->PmProfileInfo,
@@ -838,6 +771,73 @@ GetArmNameSpaceObject (
                  );
       break;
 
+    default:
+      //
+      // No match found among the static objects.
+      // Check the dynamic objects.
+      //
+      Status = DynamicPlatRepoGetObject (
+                 PlatformRepo->DynamicPlatformRepo,
+                 CmObjectId,
+                 Token,
+                 CmObject
+                 );
+      break;
+  } // switch
+
+  if (Status == EFI_NOT_FOUND) {
+    DEBUG ((
+      DEBUG_INFO,
+      "INFO: CmObjectId " FMT_CM_OBJECT_ID ". Status = %r\n",
+      CmObjectId,
+      Status
+      ));
+  } else {
+    ASSERT_EFI_ERROR (Status);
+  }
+
+  return Status;
+}
+
+/**
+  Return an ARM namespace object.
+
+  @param [in]      This        Pointer to the Configuration Manager Protocol.
+  @param [in]      CmObjectId  The Configuration Manager Object ID.
+  @param [in]      Token       An optional token identifying the object. If
+                               unused this must be CM_NULL_TOKEN.
+  @param [in, out] CmObject    Pointer to the Configuration Manager Object
+                               descriptor describing the requested Object.
+
+  @retval EFI_SUCCESS           Success.
+  @retval EFI_INVALID_PARAMETER A parameter is invalid.
+  @retval EFI_NOT_FOUND         The required object information is not found.
+**/
+EFI_STATUS
+EFIAPI
+GetArmNameSpaceObject (
+  IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  This,
+  IN  CONST CM_OBJECT_ID                                  CmObjectId,
+  IN  CONST CM_OBJECT_TOKEN                               Token OPTIONAL,
+  IN  OUT   CM_OBJ_DESCRIPTOR                     *CONST  CmObject
+  )
+{
+  EFI_STATUS                      Status;
+  EDKII_PLATFORM_REPOSITORY_INFO  *PlatformRepo;
+
+  if ((This == NULL) || (CmObject == NULL)) {
+    ASSERT (This != NULL);
+    ASSERT (CmObject != NULL);
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status       = EFI_NOT_FOUND;
+  PlatformRepo = This->PlatRepoInfo;
+
+  //
+  // First check among the static objects.
+  //
+  switch (GET_CM_OBJECT_ID (CmObjectId)) {
     case EArmObjItsGroup:
       Status = HandleCmObject (
                  CmObjectId,
diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h
index 3373948bc4eb..4fb12db73b81 100644
--- a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h
+++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h
@@ -73,53 +73,53 @@ typedef struct PlatformRepositoryInfo {
   ///
   /// Configuration Manager Information.
   ///
-  CM_STD_OBJ_CONFIGURATION_MANAGER_INFO    CmInfo;
+  CM_STD_OBJ_CONFIGURATION_MANAGER_INFO           CmInfo;
 
   ///
   /// List of ACPI tables
   ///
-  CM_STD_OBJ_ACPI_TABLE_INFO               CmAcpiTableList[PLAT_ACPI_TABLE_COUNT];
+  CM_STD_OBJ_ACPI_TABLE_INFO                      CmAcpiTableList[PLAT_ACPI_TABLE_COUNT];
 
   ///
   /// Power management profile information
   ///
-  CM_ARM_POWER_MANAGEMENT_PROFILE_INFO     PmProfileInfo;
+  CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO    PmProfileInfo;
 
   ///
   /// ITS Group node
   ///
-  CM_ARM_ITS_GROUP_NODE                    ItsGroupInfo;
+  CM_ARM_ITS_GROUP_NODE                           ItsGroupInfo;
 
   ///
   /// ITS Identifier array
   ///
-  CM_ARM_ITS_IDENTIFIER                    ItsIdentifierArray[1];
+  CM_ARM_ITS_IDENTIFIER                           ItsIdentifierArray[1];
 
   ///
   /// PCI Root complex node
   ///
-  CM_ARM_ROOT_COMPLEX_NODE                 RootComplexInfo;
+  CM_ARM_ROOT_COMPLEX_NODE                        RootComplexInfo;
 
   ///
   /// Array of DeviceID mapping
   ///
-  CM_ARM_ID_MAPPING                        DeviceIdMapping[1];
+  CM_ARM_ID_MAPPING                               DeviceIdMapping[1];
 
   ///
   /// Dynamic platform repository.
   /// CmObj created by parsing the Kvmtool device tree are stored here.
   ///
-  DYNAMIC_PLATFORM_REPOSITORY_INFO         *DynamicPlatformRepo;
+  DYNAMIC_PLATFORM_REPOSITORY_INFO                *DynamicPlatformRepo;
 
   ///
   /// Base address of the FDT.
   ///
-  VOID                                     *FdtBase;
+  VOID                                            *FdtBase;
 
   ///
   /// A handle to the FDT HwInfoParser.
   ///
-  HW_INFO_PARSER_HANDLE                    FdtParserHandle;
+  HW_INFO_PARSER_HANDLE                           FdtParserHandle;
 } EDKII_PLATFORM_REPOSITORY_INFO;
 
 #endif // CONFIGURATION_MANAGER_H_
diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
index e4205d6ba6bc..4eabb4d38b40 100644
--- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -21,7 +21,60 @@
 */
 typedef enum ArchCommonObjectID {
   EArchCommonObjReserved,                       ///<  0 - Reserved
+  EArchCommonObjPowerManagementProfileInfo,     ///<  1 - Power Management Profile Info
+  EArchCommonObjSerialPortInfo,                 ///<  2 - Generic Serial Port Info
+  EArchCommonObjConsolePortInfo,                ///<  3 - Serial Console Port Info
+  EArchCommonObjSerialDebugPortInfo,            ///<  4 - Serial Debug Port Info
   EArchCommonObjMax
 } EARCH_COMMON_OBJECT_ID;
 
+#pragma pack(1)
+
+/** A structure that describes the
+    Power Management Profile Information for the Platform.
+
+    ID: EArchCommonObjPowerManagementProfileInfo
+*/
+typedef struct CmArchCommonPowerManagementProfileInfo {
+  /** This is the Preferred_PM_Profile field of the FADT Table
+      described in the ACPI Specification
+  */
+  UINT8    PowerManagementProfile;
+} CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO;
+
+/** A structure that describes the
+    Serial Port information for the Platform.
+
+    ID: EArchCommonObjConsolePortInfo or
+        EArchCommonObjSerialDebugPortInfo or
+        EArchCommonObjSerialPortInfo
+*/
+typedef struct EArchCommonSerialPortInfo {
+  /// The physical base address for the serial port
+  UINT64    BaseAddress;
+
+  /** The serial port interrupt.
+      0 indicates that the serial port does not
+      have an interrupt wired.
+  */
+  UINT32    Interrupt;
+
+  /// The serial port baud rate
+  UINT64    BaudRate;
+
+  /// The serial port clock
+  UINT32    Clock;
+
+  /// Serial Port subtype
+  UINT16    PortSubtype;
+
+  /// The Base address length
+  UINT64    BaseAddressLength;
+
+  /// The access size
+  UINT8     AccessSize;
+} CM_ARCH_COMMON_SERIAL_PORT_INFO;
+
+#pragma pack()
+
 #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index f7e1a0933f7b..4878eb60e3cb 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -30,53 +30,49 @@
 typedef enum ArmObjectID {
   EArmObjReserved,                                             ///<  0 - Reserved
   EArmObjBootArchInfo,                                         ///<  1 - Boot Architecture Info
-  EArmObjPowerManagementProfileInfo,                           ///<  2 - Power Management Profile Info
-  EArmObjGicCInfo,                                             ///<  3 - GIC CPU Interface Info
-  EArmObjGicDInfo,                                             ///<  4 - GIC Distributor Info
-  EArmObjGicMsiFrameInfo,                                      ///<  5 - GIC MSI Frame Info
-  EArmObjGicRedistributorInfo,                                 ///<  6 - GIC Redistributor Info
-  EArmObjGicItsInfo,                                           ///<  7 - GIC ITS Info
-  EArmObjSerialConsolePortInfo,                                ///<  8 - Serial Console Port Info
-  EArmObjSerialDebugPortInfo,                                  ///<  9 - Serial Debug Port Info
-  EArmObjGenericTimerInfo,                                     ///< 10 - Generic Timer Info
-  EArmObjPlatformGTBlockInfo,                                  ///< 11 - Platform GT Block Info
-  EArmObjGTBlockTimerFrameInfo,                                ///< 12 - Generic Timer Block Frame Info
-  EArmObjPlatformGenericWatchdogInfo,                          ///< 13 - Platform Generic Watchdog
-  EArmObjPciConfigSpaceInfo,                                   ///< 14 - PCI Configuration Space Info
-  EArmObjHypervisorVendorIdentity,                             ///< 15 - Hypervisor Vendor Id
-  EArmObjFixedFeatureFlags,                                    ///< 16 - Fixed feature flags for FADT
-  EArmObjItsGroup,                                             ///< 17 - ITS Group
-  EArmObjNamedComponent,                                       ///< 18 - Named Component
-  EArmObjRootComplex,                                          ///< 19 - Root Complex
-  EArmObjSmmuV1SmmuV2,                                         ///< 20 - SMMUv1 or SMMUv2
-  EArmObjSmmuV3,                                               ///< 21 - SMMUv3
-  EArmObjPmcg,                                                 ///< 22 - PMCG
-  EArmObjGicItsIdentifierArray,                                ///< 23 - GIC ITS Identifier Array
-  EArmObjIdMappingArray,                                       ///< 24 - ID Mapping Array
-  EArmObjSmmuInterruptArray,                                   ///< 25 - SMMU Interrupt Array
-  EArmObjProcHierarchyInfo,                                    ///< 26 - Processor Hierarchy Info
-  EArmObjCacheInfo,                                            ///< 27 - Cache Info
-  EArmObjCmRef,                                                ///< 28 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 29 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 30 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 31 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 32 - Generic Initiator Affinity
-  EArmObjSerialPortInfo,                                       ///< 33 - Generic Serial Port Info
-  EArmObjCmn600Info,                                           ///< 34 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 35 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 36 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 37 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 38 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 39 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 40 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 41 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 42 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 43 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 44 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 45 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 46 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 47 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 48 - P-State Dependency (PSD) Info
+  EArmObjGicCInfo,                                             ///<  2 - GIC CPU Interface Info
+  EArmObjGicDInfo,                                             ///<  3 - GIC Distributor Info
+  EArmObjGicMsiFrameInfo,                                      ///<  4 - GIC MSI Frame Info
+  EArmObjGicRedistributorInfo,                                 ///<  5 - GIC Redistributor Info
+  EArmObjGicItsInfo,                                           ///<  6 - GIC ITS Info
+  EArmObjGenericTimerInfo,                                     ///<  7 - Generic Timer Info
+  EArmObjPlatformGTBlockInfo,                                  ///<  8 - Platform GT Block Info
+  EArmObjGTBlockTimerFrameInfo,                                ///<  9 - Generic Timer Block Frame Info
+  EArmObjPlatformGenericWatchdogInfo,                          ///< 10 - Platform Generic Watchdog
+  EArmObjPciConfigSpaceInfo,                                   ///< 11 - PCI Configuration Space Info
+  EArmObjHypervisorVendorIdentity,                             ///< 12 - Hypervisor Vendor Id
+  EArmObjFixedFeatureFlags,                                    ///< 13 - Fixed feature flags for FADT
+  EArmObjItsGroup,                                             ///< 14 - ITS Group
+  EArmObjNamedComponent,                                       ///< 15 - Named Component
+  EArmObjRootComplex,                                          ///< 16 - Root Complex
+  EArmObjSmmuV1SmmuV2,                                         ///< 17 - SMMUv1 or SMMUv2
+  EArmObjSmmuV3,                                               ///< 18 - SMMUv3
+  EArmObjPmcg,                                                 ///< 19 - PMCG
+  EArmObjGicItsIdentifierArray,                                ///< 20 - GIC ITS Identifier Array
+  EArmObjIdMappingArray,                                       ///< 21 - ID Mapping Array
+  EArmObjSmmuInterruptArray,                                   ///< 22 - SMMU Interrupt Array
+  EArmObjProcHierarchyInfo,                                    ///< 23 - Processor Hierarchy Info
+  EArmObjCacheInfo,                                            ///< 24 - Cache Info
+  EArmObjCmRef,                                                ///< 25 - CM Object Reference
+  EArmObjMemoryAffinityInfo,                                   ///< 26 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 27 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 28 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 29 - Generic Initiator Affinity
+  EArmObjCmn600Info,                                           ///< 30 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 31 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 32 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 33 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 34 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 35 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 36 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 37 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 38 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 39 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 40 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 41 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 42 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 43 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 44 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
@@ -92,18 +88,6 @@ typedef struct CmArmBootArchInfo {
   UINT16    BootArchFlags;
 } CM_ARM_BOOT_ARCH_INFO;
 
-/** A structure that describes the
-    Power Management Profile Information for the Platform.
-
-    ID: EArmObjPowerManagementProfileInfo
-*/
-typedef struct CmArmPowerManagementProfileInfo {
-  /** This is the Preferred_PM_Profile field of the FADT Table
-      described in the ACPI Specification
-  */
-  UINT8    PowerManagementProfile;
-} CM_ARM_POWER_MANAGEMENT_PROFILE_INFO;
-
 /** A structure that describes the
     GIC CPU Interface for the Platform.
 
@@ -310,39 +294,6 @@ typedef struct CmArmGicItsInfo {
   UINT32    ProximityDomain;
 } CM_ARM_GIC_ITS_INFO;
 
-/** A structure that describes the
-    Serial Port information for the Platform.
-
-    ID: EArmObjSerialConsolePortInfo or
-        EArmObjSerialDebugPortInfo or
-        EArmObjSerialPortInfo
-*/
-typedef struct CmArmSerialPortInfo {
-  /// The physical base address for the serial port
-  UINT64    BaseAddress;
-
-  /** The serial port interrupt.
-      0 indicates that the serial port does not
-      have an interrupt wired.
-  */
-  UINT32    Interrupt;
-
-  /// The serial port baud rate
-  UINT64    BaudRate;
-
-  /// The serial port clock
-  UINT32    Clock;
-
-  /// Serial Port subtype
-  UINT16    PortSubtype;
-
-  /// The Base address length
-  UINT64    BaseAddressLength;
-
-  /// The access size
-  UINT8     AccessSize;
-} CM_ARM_SERIAL_PORT_INFO;
-
 /** A structure that describes the
     Generic Timer information for the Platform.
 
diff --git a/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h b/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h
index 4835f314c4f1..ac7b39f552de 100644
--- a/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h
+++ b/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h
@@ -29,11 +29,11 @@
 EFI_STATUS
 EFIAPI
 BuildSsdtSerialPortTable (
-  IN  CONST CM_STD_OBJ_ACPI_TABLE_INFO   *AcpiTableInfo,
-  IN  CONST CM_ARM_SERIAL_PORT_INFO      *SerialPortInfo,
-  IN  CONST CHAR8                        *Name,
-  IN  CONST UINT64                       Uid,
-  OUT       EFI_ACPI_DESCRIPTION_HEADER  **Table
+  IN  CONST CM_STD_OBJ_ACPI_TABLE_INFO       *AcpiTableInfo,
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo,
+  IN  CONST CHAR8                            *Name,
+  IN  CONST UINT64                           Uid,
+  OUT       EFI_ACPI_DESCRIPTION_HEADER      **Table
   );
 
 /** Free an SSDT table previously created by
@@ -52,7 +52,7 @@ FreeSsdtSerialPortTable (
 
 /** Validate the Serial Port Information.
 
-  @param [in]  SerialPortInfoTable    Table of CM_ARM_SERIAL_PORT_INFO.
+  @param [in]  SerialPortInfoTable    Table of CM_ARCH_COMMON_SERIAL_PORT_INFO.
   @param [in]  SerialPortCount        Count of SerialPort in the table.
 
   @retval EFI_SUCCESS             Success.
@@ -61,8 +61,8 @@ FreeSsdtSerialPortTable (
 EFI_STATUS
 EFIAPI
 ValidateSerialPortInfo (
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfoTable,
-  IN        UINT32                   SerialPortCount
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfoTable,
+  IN        UINT32                           SerialPortCount
   );
 
 #endif // SSDT_SERIAL_PORT_LIB_H_
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
index f6dfb3d94c10..fbf2ba37331d 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
@@ -33,7 +33,7 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjSerialDebugPortInfo
+  - EArchCommonObjSerialDebugPortInfo
 */
 
 #pragma pack(1)
@@ -181,9 +181,9 @@ DBG2_TABLE  AcpiDbg2 = {
     debug port information from the Configuration Manager
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjSerialDebugPortInfo,
-  CM_ARM_SERIAL_PORT_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjSerialDebugPortInfo,
+  CM_ARCH_COMMON_SERIAL_PORT_INFO
   );
 
 /** Initialize the PL011/SBSA UART with the parameters obtained from
@@ -198,7 +198,7 @@ GET_OBJECT_LIST (
 STATIC
 EFI_STATUS
 SetupDebugUart (
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *CONST  SerialPortInfo
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *CONST  SerialPortInfo
   )
 {
   EFI_STATUS          Status;
@@ -329,10 +329,10 @@ BuildDbg2TableEx (
   OUT       UINTN                                  *CONST  TableCount
   )
 {
-  EFI_STATUS                   Status;
-  CM_ARM_SERIAL_PORT_INFO      *SerialPortInfo;
-  UINT32                       SerialPortCount;
-  EFI_ACPI_DESCRIPTION_HEADER  **TableList;
+  EFI_STATUS                       Status;
+  CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo;
+  UINT32                           SerialPortCount;
+  EFI_ACPI_DESCRIPTION_HEADER      **TableList;
 
   ASSERT (This != NULL);
   ASSERT (AcpiTableInfo != NULL);
@@ -358,7 +358,7 @@ BuildDbg2TableEx (
 
   *Table = NULL;
 
-  Status = GetEArmObjSerialDebugPortInfo (
+  Status = GetEArchCommonObjSerialDebugPortInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &SerialPortInfo,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
index 57aaaf85e64a..ea8c821d1155 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
@@ -25,7 +25,7 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjPowerManagementProfileInfo
+  - EArchCommonObjPowerManagementProfileInfo
   - EArmObjBootArchInfo
   - EArmObjHypervisorVendorIdentity (OPTIONAL)
 */
@@ -202,9 +202,9 @@ EFI_ACPI_6_5_FIXED_ACPI_DESCRIPTION_TABLE  AcpiFadt = {
     Management Profile Information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjPowerManagementProfileInfo,
-  CM_ARM_POWER_MANAGEMENT_PROFILE_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjPowerManagementProfileInfo,
+  CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO
   );
 
 /** This macro expands to a function that retrieves the Boot
@@ -253,13 +253,13 @@ FadtAddPmProfileInfo (
   IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol
   )
 {
-  EFI_STATUS                            Status;
-  CM_ARM_POWER_MANAGEMENT_PROFILE_INFO  *PmProfile;
+  EFI_STATUS                                    Status;
+  CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO  *PmProfile;
 
   ASSERT (CfgMgrProtocol != NULL);
 
   // Get the Power Management Profile from the Platform Configuration Manager
-  Status = GetEArmObjPowerManagementProfileInfo (
+  Status = GetEArchCommonObjPowerManagementProfileInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &PmProfile,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c
index 59cbacbfbbde..6f027f3bf941 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c
@@ -33,7 +33,7 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjSerialConsolePortInfo
+  - EArchCommonObjConsolePortInfo
 
 NOTE: This implementation ignores the possibility that the Serial settings may
       be modified from the UEFI Shell.  A more complex handler would be needed
@@ -98,9 +98,9 @@ EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE  AcpiSpcr = {
     Port Information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjSerialConsolePortInfo,
-  CM_ARM_SERIAL_PORT_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjConsolePortInfo,
+  CM_ARCH_COMMON_SERIAL_PORT_INFO
   )
 
 /** Free any resources allocated for constructing the tables.
@@ -200,10 +200,10 @@ BuildSpcrTableEx (
   OUT       UINTN                                  *CONST  TableCount
   )
 {
-  EFI_STATUS                   Status;
-  CM_ARM_SERIAL_PORT_INFO      *SerialPortInfo;
-  UINT32                       SerialPortCount;
-  EFI_ACPI_DESCRIPTION_HEADER  **TableList;
+  EFI_STATUS                       Status;
+  CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo;
+  UINT32                           SerialPortCount;
+  EFI_ACPI_DESCRIPTION_HEADER      **TableList;
 
   ASSERT (This != NULL);
   ASSERT (AcpiTableInfo != NULL);
@@ -229,7 +229,7 @@ BuildSpcrTableEx (
 
   *Table = NULL;
 
-  Status = GetEArmObjSerialConsolePortInfo (
+  Status = GetEArchCommonObjConsolePortInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &SerialPortInfo,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c
index b850320eede7..671ba057400a 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c
@@ -29,16 +29,16 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjSerialPortInfo
+  - EArchCommonObjSerialPortInfo
 */
 
 /** This macro expands to a function that retrieves the Serial-port
     information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjSerialPortInfo,
-  CM_ARM_SERIAL_PORT_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjSerialPortInfo,
+  CM_ARCH_COMMON_SERIAL_PORT_INFO
   );
 
 /** Starting value for the UID to represent the serial ports.
@@ -167,13 +167,13 @@ BuildSsdtSerialPortTableEx (
   OUT       UINTN                                  *CONST  TableCount
   )
 {
-  EFI_STATUS                   Status;
-  CM_ARM_SERIAL_PORT_INFO      *SerialPortInfo;
-  UINT32                       SerialPortCount;
-  UINTN                        Index;
-  CHAR8                        NewName[AML_NAME_SEG_SIZE + 1];
-  UINT64                       Uid;
-  EFI_ACPI_DESCRIPTION_HEADER  **TableList;
+  EFI_STATUS                       Status;
+  CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo;
+  UINT32                           SerialPortCount;
+  UINTN                            Index;
+  CHAR8                            NewName[AML_NAME_SEG_SIZE + 1];
+  UINT64                           Uid;
+  EFI_ACPI_DESCRIPTION_HEADER      **TableList;
 
   ASSERT (This != NULL);
   ASSERT (AcpiTableInfo != NULL);
@@ -185,7 +185,7 @@ BuildSsdtSerialPortTableEx (
 
   *Table = NULL;
 
-  Status = GetEArmObjSerialPortInfo (
+  Status = GetEArchCommonObjSerialPortInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &SerialPortInfo,
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 833fa2d6a24b..412bf41647ae 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -145,53 +145,49 @@ CONST
 CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///<  0 - Reserved
   NULL,                             ///<  1 - Boot Architecture Info
-  NULL,                             ///<  2 - Power Management Profile Info
-  NULL,                             ///<  3 - GIC CPU Interface Info
-  NULL,                             ///<  4 - GIC Distributor Info
-  NULL,                             ///<  5 - GIC MSI Frame Info
-  NULL,                             ///<  6 - GIC Redistributor Info
-  NULL,                             ///<  7 - GIC ITS Info
-  NULL,                             ///<  8 - Serial Console Port Info
-  NULL,                             ///<  9 - Serial Debug Port Info
-  NULL,                             ///< 10 - Generic Timer Info
-  NULL,                             ///< 11 - Platform GT Block Info
-  NULL,                             ///< 12 - Generic Timer Block Frame Info
-  NULL,                             ///< 13 - Platform Generic Watchdog
-  NULL,                             ///< 14 - PCI Configuration Space Info
-  NULL,                             ///< 15 - Hypervisor Vendor Id
-  NULL,                             ///< 16 - Fixed feature flags for FADT
-  TokenFixerItsGroup,               ///< 17 - ITS Group
-  TokenFixerNamedComponentNode,     ///< 18 - Named Component
-  TokenFixerRootComplexNode,        ///< 19 - Root Complex
-  TokenFixerNotImplemented,         ///< 20 - SMMUv1 or SMMUv2
-  TokenFixerSmmuV3Node,             ///< 21 - SMMUv3
-  TokenFixerNotImplemented,         ///< 22 - PMCG
-  NULL,                             ///< 23 - GIC ITS Identifier Array
-  NULL,                             ///< 24 - ID Mapping Array
-  NULL,                             ///< 25 - SMMU Interrupt Array
-  TokenFixerNotImplemented,         ///< 26 - Processor Hierarchy Info
-  TokenFixerNotImplemented,         ///< 27 - Cache Info
-  NULL,                             ///< 28 - CM Object Reference
-  NULL,                             ///< 29 - Memory Affinity Info
-  NULL,                             ///< 30 - Device Handle Acpi
-  NULL,                             ///< 31 - Device Handle Pci
-  NULL,                             ///< 32 - Generic Initiator Affinity
-  NULL,                             ///< 33 - Generic Serial Port Info
-  NULL,                             ///< 34 - CMN-600 Info
-  NULL,                             ///< 35 - Lpi Info
-  NULL,                             ///< 36 - Pci Address Map Info
-  NULL,                             ///< 37 - Pci Interrupt Map Info
-  NULL,                             ///< 38 - Reserved Memory Range Node
-  NULL,                             ///< 39 - Memory Range Descriptor
-  NULL,                             ///< 40 - Continuous Performance Control Info
-  NULL,                             ///< 41 - Pcc Subspace Type 0 Info
-  NULL,                             ///< 42 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 43 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 44 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 45 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 46 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 47 - Embedded Trace Extension/Module Info
-  NULL                              ///< 48 - P-State Dependency (PSD) Info
+  NULL,                             ///<  2 - GIC CPU Interface Info
+  NULL,                             ///<  3 - GIC Distributor Info
+  NULL,                             ///<  4 - GIC MSI Frame Info
+  NULL,                             ///<  5 - GIC Redistributor Info
+  NULL,                             ///<  6 - GIC ITS Info
+  NULL,                             ///<  7 - Generic Timer Info
+  NULL,                             ///<  8 - Platform GT Block Info
+  NULL,                             ///<  9 - Generic Timer Block Frame Info
+  NULL,                             ///< 10 - Platform Generic Watchdog
+  NULL,                             ///< 11 - PCI Configuration Space Info
+  NULL,                             ///< 12 - Hypervisor Vendor Id
+  NULL,                             ///< 13 - Fixed feature flags for FADT
+  TokenFixerItsGroup,               ///< 14 - ITS Group
+  TokenFixerNamedComponentNode,     ///< 15 - Named Component
+  TokenFixerRootComplexNode,        ///< 16 - Root Complex
+  TokenFixerNotImplemented,         ///< 17 - SMMUv1 or SMMUv2
+  TokenFixerSmmuV3Node,             ///< 18 - SMMUv3
+  TokenFixerNotImplemented,         ///< 19 - PMCG
+  NULL,                             ///< 20 - GIC ITS Identifier Array
+  NULL,                             ///< 21 - ID Mapping Array
+  NULL,                             ///< 22 - SMMU Interrupt Array
+  TokenFixerNotImplemented,         ///< 23 - Processor Hierarchy Info
+  TokenFixerNotImplemented,         ///< 24 - Cache Info
+  NULL,                             ///< 25 - Memory Affinity Info
+  NULL,                             ///< 26 - Memory Affinity Info
+  NULL,                             ///< 27 - Device Handle Acpi
+  NULL,                             ///< 28 - Device Handle Pci
+  NULL,                             ///< 29 - Generic Initiator Affinity
+  NULL,                             ///< 30 - CMN-600 Info
+  NULL,                             ///< 31 - Lpi Info
+  NULL,                             ///< 32 - Pci Address Map Info
+  NULL,                             ///< 33 - Pci Interrupt Map Info
+  NULL,                             ///< 34 - Reserved Memory Range Node
+  NULL,                             ///< 35 - Memory Range Descriptor
+  NULL,                             ///< 36 - Continuous Performance Control Info
+  NULL,                             ///< 37 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 38 - Pcc Subspace Type 2 Info
+  NULL,                             ///< 39 - Pcc Subspace Type 2 Info
+  NULL,                             ///< 40 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 41 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 42 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 43 - Embedded Trace Extension/Module Info
+  NULL                              ///< 44 - P-State Dependency (PSD) Info
 };
 
 /** CmObj token fixer.
diff --git a/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c b/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c
index b1a628e419f0..eda2aa999ea6 100644
--- a/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c
+++ b/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c
@@ -46,7 +46,7 @@ extern CHAR8  ssdtserialporttemplate_aml_code[];
 
 /** Validate the Serial Port Information.
 
-  @param [in]  SerialPortInfoTable    Table of CM_ARM_SERIAL_PORT_INFO.
+  @param [in]  SerialPortInfoTable    Table of CM_ARCH_COMMON_SERIAL_PORT_INFO.
   @param [in]  SerialPortCount        Count of SerialPort in the table.
 
   @retval EFI_SUCCESS             Success.
@@ -55,12 +55,12 @@ extern CHAR8  ssdtserialporttemplate_aml_code[];
 EFI_STATUS
 EFIAPI
 ValidateSerialPortInfo (
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfoTable,
-  IN        UINT32                   SerialPortCount
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfoTable,
+  IN        UINT32                           SerialPortCount
   )
 {
-  UINT32                         Index;
-  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo;
+  UINT32                                 Index;
+  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo;
 
   if ((SerialPortInfoTable == NULL)  ||
       (SerialPortCount == 0))
@@ -163,9 +163,9 @@ STATIC
 EFI_STATUS
 EFIAPI
 FixupIds (
-  IN        AML_ROOT_NODE_HANDLE     RootNodeHandle,
-  IN  CONST UINT64                   Uid,
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo
+  IN        AML_ROOT_NODE_HANDLE             RootNodeHandle,
+  IN  CONST UINT64                           Uid,
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo
   )
 {
   EFI_STATUS              Status;
@@ -290,8 +290,8 @@ STATIC
 EFI_STATUS
 EFIAPI
 FixupCrs (
-  IN        AML_ROOT_NODE_HANDLE     RootNodeHandle,
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo
+  IN        AML_ROOT_NODE_HANDLE             RootNodeHandle,
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo
   )
 {
   EFI_STATUS              Status;
@@ -366,9 +366,9 @@ STATIC
 EFI_STATUS
 EFIAPI
 FixupName (
-  IN        AML_ROOT_NODE_HANDLE     RootNodeHandle,
-  IN  CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo,
-  IN  CONST CHAR8                    *Name
+  IN        AML_ROOT_NODE_HANDLE             RootNodeHandle,
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo,
+  IN  CONST CHAR8                            *Name
   )
 {
   EFI_STATUS              Status;
@@ -410,11 +410,11 @@ STATIC
 EFI_STATUS
 EFIAPI
 FixupSerialPortInfo (
-  IN            AML_ROOT_NODE_HANDLE     RootNodeHandle,
-  IN      CONST CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo,
-  IN      CONST CHAR8                    *Name,
-  IN      CONST UINT64                   Uid,
-  OUT       EFI_ACPI_DESCRIPTION_HEADER  **Table
+  IN            AML_ROOT_NODE_HANDLE             RootNodeHandle,
+  IN      CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo,
+  IN      CONST CHAR8                            *Name,
+  IN      CONST UINT64                           Uid,
+  OUT       EFI_ACPI_DESCRIPTION_HEADER          **Table
   )
 {
   EFI_STATUS  Status;
@@ -480,11 +480,11 @@ FreeSsdtSerialPortTable (
 EFI_STATUS
 EFIAPI
 BuildSsdtSerialPortTable (
-  IN  CONST CM_STD_OBJ_ACPI_TABLE_INFO   *AcpiTableInfo,
-  IN  CONST CM_ARM_SERIAL_PORT_INFO      *SerialPortInfo,
-  IN  CONST CHAR8                        *Name,
-  IN  CONST UINT64                       Uid,
-  OUT       EFI_ACPI_DESCRIPTION_HEADER  **Table
+  IN  CONST CM_STD_OBJ_ACPI_TABLE_INFO       *AcpiTableInfo,
+  IN  CONST CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo,
+  IN  CONST CHAR8                            *Name,
+  IN  CONST UINT64                           Uid,
+  OUT       EFI_ACPI_DESCRIPTION_HEADER      **Table
   )
 {
   EFI_STATUS            Status;
diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index 6896463b2848..334d2a026596 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -57,9 +57,9 @@ STATIC CONST CM_OBJ_PARSER  CmArmBootArchInfoParser[] = {
   { "BootArchFlags", 2, "0x%x", NULL }
 };
 
-/** A parser for EArmObjPowerManagementProfileInfo.
+/** A parser for EArchCommonObjPowerManagementProfileInfo.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmPowerManagementProfileInfoParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonPowerManagementProfileInfoParser[] = {
   { "PowerManagementProfile", 1, "0x%x", NULL }
 };
 
@@ -122,10 +122,10 @@ STATIC CONST CM_OBJ_PARSER  CmArmGicItsInfoParser[] = {
   { "ProximityDomain",     4, "0x%x",   NULL }
 };
 
-/** A parser for EArmObjSerialConsolePortInfo,
-    EArmObjSerialDebugPortInfo and EArmObjSerialPortInfo.
+/** A parser for EArchCommonObjConsolePortInfo,
+    EArchCommonObjSerialDebugPortInfo and EArchCommonObjSerialPortInfo.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmSerialPortInfoParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonSerialPortInfoParser[] = {
   { "BaseAddress",       8, "0x%llx", NULL },
   { "Interrupt",         4, "0x%x",   NULL },
   { "BaudRate",          8, "0x%llx", NULL },
@@ -671,6 +671,10 @@ STATIC CONST CM_OBJ_PARSER  CmArmPsdInfoParser[] = {
 */
 STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjReserved),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjPowerManagementProfileInfo,CmArchCommonPowerManagementProfileInfoParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo,            CmArchCommonSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo,           CmArchCommonSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo,       CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
 };
 
@@ -679,14 +683,11 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
 STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),
   CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo,                CmArmBootArchInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjPowerManagementProfileInfo,  CmArmPowerManagementProfileInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicCInfo,                    CmArmGicCInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicDInfo,                    CmArmGicDInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo,             CmArmGicMsiFrameInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo,        CmArmGicRedistInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo,                  CmArmGicItsInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjSerialConsolePortInfo,       CmArmSerialPortInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjSerialDebugPortInfo,         CmArmSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo,            CmArmGenericTimerInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo,         CmArmGTBlockInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,       CmArmGTBlockTimerFrameInfoParser),
@@ -710,7 +711,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi,            CmArmDeviceHandleAcpiParser),
   CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci,             CmArmDeviceHandlePciParser),
   CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericInitiatorAffinityInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjSerialPortInfo,              CmArmSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjCmn600Info,                  CmArmCmn600InfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjLpiInfo,                     CmArmLpiInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPciAddressMapInfo,           CmArmPciAddressMapInfoParser),
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c
index 732b482eebe3..f17ad2e842e2 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c
@@ -71,7 +71,7 @@ CONST COMPATIBILITY_INFO  SerialSbsaCompatibleInfo = {
 
   @param [in]  Fdt               Pointer to a Flattened Device Tree (Fdt).
   @param [in]  SerialPortNode    Offset of a serial-port node.
-  @param [in]  SerialPortInfo    The CM_ARM_SERIAL_PORT_INFO to populate.
+  @param [in]  SerialPortInfo    The CM_ARCH_COMMON_SERIAL_PORT_INFO to populate.
 
   @retval EFI_SUCCESS             The function completed successfully.
   @retval EFI_ABORTED             An error occurred.
@@ -82,9 +82,9 @@ STATIC
 EFI_STATUS
 EFIAPI
 SerialPortNodeParser (
-  IN  CONST VOID               *Fdt,
-  IN  INT32                    SerialPortNode,
-  IN  CM_ARM_SERIAL_PORT_INFO  *SerialPortInfo
+  IN  CONST VOID                       *Fdt,
+  IN  INT32                            SerialPortNode,
+  IN  CM_ARCH_COMMON_SERIAL_PORT_INFO  *SerialPortInfo
   )
 {
   EFI_STATUS   Status;
@@ -313,7 +313,7 @@ GetSerialConsoleNode (
   return EFI_SUCCESS;
 }
 
-/** CM_ARM_SERIAL_PORT_INFO dispatcher function (for a generic serial-port).
+/** CM_ARCH_COMMON_SERIAL_PORT_INFO dispatcher function (for a generic serial-port).
 
   @param [in]  FdtParserHandle A handle to the parser instance.
   @param [in]  GenericSerialInfo  Pointer to a serial port info list.
@@ -331,9 +331,9 @@ EFI_STATUS
 EFIAPI
 ArmSerialPortInfoDispatch (
   IN  CONST FDT_HW_INFO_PARSER_HANDLE  FdtParserHandle,
-  IN  CM_ARM_SERIAL_PORT_INFO          *GenericSerialInfo,
+  IN  CM_ARCH_COMMON_SERIAL_PORT_INFO  *GenericSerialInfo,
   IN  INT32                            NodeCount,
-  IN  EARM_OBJECT_ID                   SerialObjectId
+  IN  EARCH_COMMON_OBJECT_ID           SerialObjectId
   )
 {
   EFI_STATUS         Status;
@@ -344,9 +344,9 @@ ArmSerialPortInfoDispatch (
     return EFI_INVALID_PARAMETER;
   }
 
-  if ((SerialObjectId != EArmObjSerialPortInfo) &&
-      (SerialObjectId != EArmObjSerialDebugPortInfo) &&
-      (SerialObjectId != EArmObjSerialConsolePortInfo))
+  if ((SerialObjectId != EArchCommonObjSerialPortInfo) &&
+      (SerialObjectId != EArchCommonObjSerialDebugPortInfo) &&
+      (SerialObjectId != EArchCommonObjConsolePortInfo))
   {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
@@ -354,10 +354,10 @@ ArmSerialPortInfoDispatch (
 
   // Dispatch the Generic Serial ports
   Status = CreateCmObjDesc (
-             CREATE_CM_ARM_OBJECT_ID (SerialObjectId),
+             CREATE_CM_ARCH_COMMON_OBJECT_ID (SerialObjectId),
              NodeCount,
              GenericSerialInfo,
-             sizeof (CM_ARM_SERIAL_PORT_INFO) * NodeCount,
+             sizeof (CM_ARCH_COMMON_SERIAL_PORT_INFO) * NodeCount,
              &NewCmObjDesc
              );
   if (EFI_ERROR (Status)) {
@@ -372,19 +372,19 @@ ArmSerialPortInfoDispatch (
   return Status;
 }
 
-/** CM_ARM_SERIAL_PORT_INFO parser function (for debug/console serial-port).
+/** CM_ARCH_COMMON_SERIAL_PORT_INFO parser function (for debug/console serial-port).
 
   This parser expects FdtBranch to be the debug serial-port node.
   At most one CmObj is created.
   The following structure is populated:
-  typedef struct CmArmSerialPortInfo {
+  typedef struct EArchCommonSerialPortInfo {
     UINT64  BaseAddress;                      // {Populated}
     UINT32  Interrupt;                        // {Populated}
     UINT64  BaudRate;                         // {default}
     UINT32  Clock;                            // {Populated}
     UINT16  PortSubtype;                      // {Populated}
     UINT64  BaseAddressLength                 // {Populated}
-  } CM_ARM_SERIAL_PORT_INFO;
+  } CM_ARCH_COMMON_SERIAL_PORT_INFO;
 
   A parser parses a Device Tree to populate a specific CmObj type. None,
   one or many CmObj can be created by the parser.
@@ -396,7 +396,8 @@ ArmSerialPortInfoDispatch (
   @param [in]  FdtParserHandle A handle to the parser instance.
   @param [in]  FdtBranch       When searching for DT node name, restrict
                                the search to this Device Tree branch.
-  @param [in]  SerialObjectId  ArmNamespace Object ID for the serial port.
+  @param [in]  SerialObjectId  ArchCommon Namespace Object ID for the serial
+                               port.
 
   @retval EFI_SUCCESS             The function completed successfully.
   @retval EFI_ABORTED             An error occurred.
@@ -410,14 +411,14 @@ EFIAPI
 ArmSerialPortInfoParser (
   IN  CONST FDT_HW_INFO_PARSER_HANDLE  FdtParserHandle,
   IN        INT32                      FdtBranch,
-  IN        EARM_OBJECT_ID             SerialObjectId
+  IN        EARCH_COMMON_OBJECT_ID     SerialObjectId
   )
 {
-  EFI_STATUS               Status;
-  CM_ARM_SERIAL_PORT_INFO  SerialInfo;
+  EFI_STATUS                       Status;
+  CM_ARCH_COMMON_SERIAL_PORT_INFO  SerialInfo;
 
-  if ((SerialObjectId != EArmObjSerialDebugPortInfo) &&
-      (SerialObjectId != EArmObjSerialConsolePortInfo))
+  if ((SerialObjectId != EArchCommonObjSerialDebugPortInfo) &&
+      (SerialObjectId != EArchCommonObjConsolePortInfo))
   {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
@@ -447,11 +448,11 @@ ArmSerialPortInfoParser (
 
 /** SerialPort dispatcher.
 
-  This disptacher populates the CM_ARM_SERIAL_PORT_INFO structure for
+  This disptacher populates the CM_ARCH_COMMON_SERIAL_PORT_INFO structure for
   the following CM_OBJ_ID:
-   - EArmObjSerialConsolePortInfo
-   - EArmObjSerialDebugPortInfo
-   - EArmObjSerialPortInfo
+   - EArchCommonObjConsolePortInfo
+   - EArchCommonObjSerialDebugPortInfo
+   - EArchCommonObjSerialPortInfo
 
   A parser parses a Device Tree to populate a specific CmObj type. None,
   one or many CmObj can be created by the parser.
@@ -477,16 +478,16 @@ SerialPortDispatcher (
   IN        INT32                      FdtBranch
   )
 {
-  EFI_STATUS               Status;
-  INT32                    SerialConsoleNode;
-  INT32                    SerialDebugNode;
-  INT32                    SerialNode;
-  UINT32                   Index;
-  UINT32                   SerialNodeCount;
-  UINT32                   SerialNodesRemaining;
-  CM_ARM_SERIAL_PORT_INFO  *GenericSerialInfo;
-  UINT32                   GenericSerialIndex;
-  VOID                     *Fdt;
+  EFI_STATUS                       Status;
+  INT32                            SerialConsoleNode;
+  INT32                            SerialDebugNode;
+  INT32                            SerialNode;
+  UINT32                           Index;
+  UINT32                           SerialNodeCount;
+  UINT32                           SerialNodesRemaining;
+  CM_ARCH_COMMON_SERIAL_PORT_INFO  *GenericSerialInfo;
+  UINT32                           GenericSerialIndex;
+  VOID                             *Fdt;
 
   if (FdtParserHandle == NULL) {
     ASSERT (0);
@@ -531,7 +532,7 @@ SerialPortDispatcher (
     Status = ArmSerialPortInfoParser (
                FdtParserHandle,
                SerialConsoleNode,
-               EArmObjSerialConsolePortInfo
+               EArchCommonObjConsolePortInfo
                );
     if (EFI_ERROR (Status)) {
       ASSERT (0);
@@ -550,7 +551,7 @@ SerialPortDispatcher (
     SerialNodesRemaining--;
     GenericSerialInfo = AllocateZeroPool (
                           SerialNodesRemaining *
-                          sizeof (CM_ARM_SERIAL_PORT_INFO)
+                          sizeof (CM_ARCH_COMMON_SERIAL_PORT_INFO)
                           );
     if (GenericSerialInfo == NULL) {
       ASSERT (0);
@@ -589,7 +590,7 @@ SerialPortDispatcher (
       Status          = ArmSerialPortInfoParser (
                           FdtParserHandle,
                           SerialDebugNode,
-                          EArmObjSerialDebugPortInfo
+                          EArchCommonObjSerialDebugPortInfo
                           );
       if (EFI_ERROR (Status)) {
         ASSERT (0);
@@ -620,7 +621,7 @@ SerialPortDispatcher (
                FdtParserHandle,
                GenericSerialInfo,
                GenericSerialIndex,
-               EArmObjSerialPortInfo
+               EArchCommonObjSerialPortInfo
                );
   }
 
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h
index de08e57e6c57..037c409d450a 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h
@@ -14,11 +14,11 @@
 
 /** SerialPort dispatcher.
 
-  This disptacher populates the CM_ARM_SERIAL_PORT_INFO structure for
+  This disptacher populates the CM_ARCH_COMMON_SERIAL_PORT_INFO structure for
   the following CM_OBJ_ID:
-   - EArmObjSerialConsolePortInfo
-   - EArmObjSerialDebugPortInfo
-   - EArmObjSerialPortInfo
+   - EArchCommonObjConsolePortInfo
+   - EArchCommonObjSerialDebugPortInfo
+   - EArchCommonObjSerialPortInfo
 
   A parser parses a Device Tree to populate a specific CmObj type. None,
   one or many CmObj can be created by the parser.
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 8d30bf560b3d..90f03f00e7d3 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -442,53 +442,49 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 | ---:  | :--------------------------               | :---     |
 |   0   | Reserved                                  | |
 |   1   | Boot Architecture Info                    | |
-|   2   | Power Management Profile Info             | Move to Arch Common NS |
-|   3   | GICC Info                                 | |
-|   4   | GICD Info                                 | |
-|   5   | GIC MSI Frame Info                        | |
-|   6   | GIC Redistributor Info                    | |
-|   7   | GIC ITS Info                              | |
-|   8   | Serial Console Port Info                  | Move to Arch Common NS |
-|   9   | Serial Debug Port Info                    | Move to Arch Common NS |
-|  10   | Generic Timer Info                        | |
-|  11   | Platform GT Block Info                    | |
-|  12   | Generic Timer Block Frame Info            | |
-|  13   | Platform Generic Watchdog                 | |
-|  14   | PCI Configuration Space Info              | Move to Arch Common NS |
-|  15   | Hypervisor Vendor Id                      | Move to Arch Common NS |
-|  16   | Fixed feature flags for FADT              | Move to Arch Common NS |
-|  17   | ITS Group                                 | |
-|  18   | Named Component                           | |
-|  19   | Root Complex                              | |
-|  20   | SMMUv1 or SMMUv2                          | |
-|  21   | SMMUv3                                    | |
-|  22   | PMCG                                      | |
-|  23   | GIC ITS Identifier Array                  | |
-|  24   | ID Mapping Array                          | |
-|  25   | SMMU Interrupt Array                      | |
-|  26   | Processor Hierarchy Info                  | Move to Arch Common NS |
-|  27   | Cache Info                                | Move to Arch Common NS |
-|  28   | CM Object Reference                       | Move to Arch Common NS |
-|  29   | Memory Affinity Info                      | Move to Arch Common NS |
-|  30   | Device Handle Acpi                        | Move to Arch Common NS |
-|  31   | Device Handle PCI                         | Move to Arch Common NS |
-|  32   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  33   | Serial Port Info                          | Move to Arch Common NS |
-|  34   | CMN 600 Info                              | |
-|  35   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  36   | PCI Address Map Info                      | Move to Arch Common NS |
-|  37   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  38   | Reserved Memory Range Node                | |
-|  39   | Memory Range Descriptor                   | |
-|  40   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  41   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  42   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  43   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  44   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  45   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  46   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  47   | Embedded Trace Extension/Module Info      | |
-|  48   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|   2   | GICC Info                                 | |
+|   3   | GICD Info                                 | |
+|   4   | GIC MSI Frame Info                        | |
+|   5   | GIC Redistributor Info                    | |
+|   6   | GIC ITS Info                              | |
+|   7   | Generic Timer Info                        | |
+|   8   | Platform GT Block Info                    | |
+|   9   | Generic Timer Block Frame Info            | |
+|  10   | Platform Generic Watchdog                 | |
+|  11   | PCI Configuration Space Info              | Move to Arch Common NS |
+|  12   | Hypervisor Vendor Id                      | Move to Arch Common NS |
+|  13   | Fixed feature flags for FADT              | Move to Arch Common NS |
+|  14   | ITS Group                                 | |
+|  15   | Named Component                           | |
+|  16   | Root Complex                              | |
+|  17   | SMMUv1 or SMMUv2                          | |
+|  18   | SMMUv3                                    | |
+|  19   | PMCG                                      | |
+|  20   | GIC ITS Identifier Array                  | |
+|  21   | ID Mapping Array                          | |
+|  22   | SMMU Interrupt Array                      | |
+|  23   | Processor Hierarchy Info                  | Move to Arch Common NS |
+|  24   | Cache Info                                | Move to Arch Common NS |
+|  25   | CM Object Reference                       | Move to Arch Common NS |
+|  26   | Memory Affinity Info                      | Move to Arch Common NS |
+|  27   | Device Handle Acpi                        | Move to Arch Common NS |
+|  28   | Device Handle PCI                         | Move to Arch Common NS |
+|  29   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  30   | CMN 600 Info                              | |
+|  31   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  32   | PCI Address Map Info                      | Move to Arch Common NS |
+|  33   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  34   | Reserved Memory Range Node                | |
+|  35   | Memory Range Descriptor                   | |
+|  36   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  37   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  38   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  39   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  40   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  41   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  42   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  43   | Embedded Trace Extension/Module Info      | |
+|  44   | 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 +492,8 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |  ID   |  Description                      | Comments |
 | ---:  | :--------------------------       | :---     |
 |   0   |  Reserved                         | |
+|   1   | Power Management Profile Info     | |
+|   2   | Serial Port Info                  | |
+|   3   | Serial Console Port Info          | |
+|   4   | Serial Debug Port Info            | |
 |  `*`  | All other values are reserved.    | |
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116973): https://edk2.groups.io/g/devel/message/116973
Mute This Topic: https://groups.io/mt/105067987/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 13/16] DynamicTablesPkg: Move Hypervisor Vendor Id to Arch Common
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (11 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 12/16] DynamicTablesPkg & ArmVirtPkg: Move Power Mgmt Profile Info Object PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 14/16] DynamicTablesPkg: Move FADT Fixed Features Flags " PierreGondois
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Move Hypervisor Vendor Id info object from Arm Namespace to
the Arch Common namespace.

Correspondingly also update the following modules to reflect the
changes introduced by the move:
  - FADT Generator
  - ConfigurationManagerObjectParser
  - Dynamic Plat Repo TokenFixer map.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArchCommonNameSpaceObjects.h      | 11 +++
 .../Include/ArmNameSpaceObjects.h             | 75 ++++++++-----------
 .../Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c   | 16 ++--
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 61 ++++++++-------
 .../ConfigurationManagerObjectParser.c        |  6 +-
 DynamicTablesPkg/Readme.md                    | 66 ++++++++--------
 6 files changed, 117 insertions(+), 118 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
index 4eabb4d38b40..401a24b6a5cd 100644
--- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -25,6 +25,7 @@ typedef enum ArchCommonObjectID {
   EArchCommonObjSerialPortInfo,                 ///<  2 - Generic Serial Port Info
   EArchCommonObjConsolePortInfo,                ///<  3 - Serial Console Port Info
   EArchCommonObjSerialDebugPortInfo,            ///<  4 - Serial Debug Port Info
+  EArchCommonObjHypervisorVendorIdentity,       ///<  5 - Hypervisor Vendor Id
   EArchCommonObjMax
 } EARCH_COMMON_OBJECT_ID;
 
@@ -75,6 +76,16 @@ typedef struct EArchCommonSerialPortInfo {
   UINT8     AccessSize;
 } CM_ARCH_COMMON_SERIAL_PORT_INFO;
 
+/** A structure that describes the
+    Hypervisor Vendor ID information for the Platform.
+
+    ID: EArchCommonObjHypervisorVendorIdentity
+*/
+typedef struct CmArchCommonHypervisorVendorIdentity {
+  /// The hypervisor Vendor ID
+  UINT64    HypervisorVendorId;
+} CM_ARCH_COMMON_HYPERVISOR_VENDOR_ID;
+
 #pragma pack()
 
 #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 4878eb60e3cb..48e65a3cc0a5 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -40,39 +40,38 @@ typedef enum ArmObjectID {
   EArmObjGTBlockTimerFrameInfo,                                ///<  9 - Generic Timer Block Frame Info
   EArmObjPlatformGenericWatchdogInfo,                          ///< 10 - Platform Generic Watchdog
   EArmObjPciConfigSpaceInfo,                                   ///< 11 - PCI Configuration Space Info
-  EArmObjHypervisorVendorIdentity,                             ///< 12 - Hypervisor Vendor Id
-  EArmObjFixedFeatureFlags,                                    ///< 13 - Fixed feature flags for FADT
-  EArmObjItsGroup,                                             ///< 14 - ITS Group
-  EArmObjNamedComponent,                                       ///< 15 - Named Component
-  EArmObjRootComplex,                                          ///< 16 - Root Complex
-  EArmObjSmmuV1SmmuV2,                                         ///< 17 - SMMUv1 or SMMUv2
-  EArmObjSmmuV3,                                               ///< 18 - SMMUv3
-  EArmObjPmcg,                                                 ///< 19 - PMCG
-  EArmObjGicItsIdentifierArray,                                ///< 20 - GIC ITS Identifier Array
-  EArmObjIdMappingArray,                                       ///< 21 - ID Mapping Array
-  EArmObjSmmuInterruptArray,                                   ///< 22 - SMMU Interrupt Array
-  EArmObjProcHierarchyInfo,                                    ///< 23 - Processor Hierarchy Info
-  EArmObjCacheInfo,                                            ///< 24 - Cache Info
-  EArmObjCmRef,                                                ///< 25 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 26 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 27 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 28 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 29 - Generic Initiator Affinity
-  EArmObjCmn600Info,                                           ///< 30 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 31 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 32 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 33 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 34 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 35 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 36 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 37 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 38 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 39 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 40 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 41 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 42 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 43 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 44 - P-State Dependency (PSD) Info
+  EArmObjFixedFeatureFlags,                                    ///< 12 - Fixed feature flags for FADT
+  EArmObjItsGroup,                                             ///< 13 - ITS Group
+  EArmObjNamedComponent,                                       ///< 14 - Named Component
+  EArmObjRootComplex,                                          ///< 15 - Root Complex
+  EArmObjSmmuV1SmmuV2,                                         ///< 16 - SMMUv1 or SMMUv2
+  EArmObjSmmuV3,                                               ///< 17 - SMMUv3
+  EArmObjPmcg,                                                 ///< 18 - PMCG
+  EArmObjGicItsIdentifierArray,                                ///< 19 - GIC ITS Identifier Array
+  EArmObjIdMappingArray,                                       ///< 20 - ID Mapping Array
+  EArmObjSmmuInterruptArray,                                   ///< 21 - SMMU Interrupt Array
+  EArmObjProcHierarchyInfo,                                    ///< 22 - Processor Hierarchy Info
+  EArmObjCacheInfo,                                            ///< 23 - Cache Info
+  EArmObjCmRef,                                                ///< 24 - CM Object Reference
+  EArmObjMemoryAffinityInfo,                                   ///< 25 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 26 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 27 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 28 - Generic Initiator Affinity
+  EArmObjCmn600Info,                                           ///< 29 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 30 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 31 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 32 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 33 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 34 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 35 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 36 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 37 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 38 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 39 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 40 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 41 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 42 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 43 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
@@ -438,16 +437,6 @@ typedef struct CmArmPciConfigSpaceInfo {
   CM_OBJECT_TOKEN    InterruptMapToken;
 } CM_ARM_PCI_CONFIG_SPACE_INFO;
 
-/** A structure that describes the
-    Hypervisor Vendor ID information for the Platform.
-
-    ID: EArmObjHypervisorVendorIdentity
-*/
-typedef struct CmArmHypervisorVendorId {
-  /// The hypervisor Vendor ID
-  UINT64    HypervisorVendorId;
-} CM_ARM_HYPERVISOR_VENDOR_ID;
-
 /** A structure that describes the
     Fixed feature flags for the Platform.
 
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
index ea8c821d1155..868a974fed28 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
@@ -27,7 +27,7 @@ Requirements:
   this Generator:
   - EArchCommonObjPowerManagementProfileInfo
   - EArmObjBootArchInfo
-  - EArmObjHypervisorVendorIdentity (OPTIONAL)
+  - EArchCommonObjHypervisorVendorIdentity (OPTIONAL)
 */
 
 /** This macro defines the FADT flag options for ARM Platforms.
@@ -220,9 +220,9 @@ GET_OBJECT_LIST (
     Vendor ID from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjHypervisorVendorIdentity,
-  CM_ARM_HYPERVISOR_VENDOR_ID
+  EObjNameSpaceArchCommon,
+  EArchCommonObjHypervisorVendorIdentity,
+  CM_ARCH_COMMON_HYPERVISOR_VENDOR_ID
   );
 
 /** This macro expands to a function that retrieves the Fixed
@@ -358,13 +358,13 @@ FadtAddHypervisorVendorId (
   IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol
   )
 {
-  EFI_STATUS                   Status;
-  CM_ARM_HYPERVISOR_VENDOR_ID  *HypervisorVendorInfo;
+  EFI_STATUS                           Status;
+  CM_ARCH_COMMON_HYPERVISOR_VENDOR_ID  *HypervisorVendorInfo;
 
   ASSERT (CfgMgrProtocol != NULL);
 
   // Get the Hypervisor Vendor ID from the Platform Configuration Manager
-  Status = GetEArmObjHypervisorVendorIdentity (
+  Status = GetEArchCommonObjHypervisorVendorIdentity (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &HypervisorVendorInfo,
@@ -391,7 +391,7 @@ FadtAddHypervisorVendorId (
 
   DEBUG ((
     DEBUG_INFO,
-    "FADT: EArmObjHypervisorVendorIdentity = 0x%lx\n",
+    "FADT: EArchCommonObjHypervisorVendorIdentity = 0x%lx\n",
     HypervisorVendorInfo->HypervisorVendorId
     ));
 
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 412bf41647ae..34ba9f26733f 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -155,39 +155,38 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///<  9 - Generic Timer Block Frame Info
   NULL,                             ///< 10 - Platform Generic Watchdog
   NULL,                             ///< 11 - PCI Configuration Space Info
-  NULL,                             ///< 12 - Hypervisor Vendor Id
-  NULL,                             ///< 13 - Fixed feature flags for FADT
-  TokenFixerItsGroup,               ///< 14 - ITS Group
-  TokenFixerNamedComponentNode,     ///< 15 - Named Component
-  TokenFixerRootComplexNode,        ///< 16 - Root Complex
-  TokenFixerNotImplemented,         ///< 17 - SMMUv1 or SMMUv2
-  TokenFixerSmmuV3Node,             ///< 18 - SMMUv3
-  TokenFixerNotImplemented,         ///< 19 - PMCG
-  NULL,                             ///< 20 - GIC ITS Identifier Array
-  NULL,                             ///< 21 - ID Mapping Array
-  NULL,                             ///< 22 - SMMU Interrupt Array
-  TokenFixerNotImplemented,         ///< 23 - Processor Hierarchy Info
-  TokenFixerNotImplemented,         ///< 24 - Cache Info
+  NULL,                             ///< 12 - Fixed feature flags for FADT
+  TokenFixerItsGroup,               ///< 13 - ITS Group
+  TokenFixerNamedComponentNode,     ///< 14 - Named Component
+  TokenFixerRootComplexNode,        ///< 15 - Root Complex
+  TokenFixerNotImplemented,         ///< 16 - SMMUv1 or SMMUv2
+  TokenFixerSmmuV3Node,             ///< 17 - SMMUv3
+  TokenFixerNotImplemented,         ///< 18 - PMCG
+  NULL,                             ///< 19 - GIC ITS Identifier Array
+  NULL,                             ///< 20 - ID Mapping Array
+  NULL,                             ///< 21 - SMMU Interrupt Array
+  TokenFixerNotImplemented,         ///< 22 - Processor Hierarchy Info
+  TokenFixerNotImplemented,         ///< 23 - Cache Info
+  NULL,                             ///< 24 - Memory Affinity Info
   NULL,                             ///< 25 - Memory Affinity Info
-  NULL,                             ///< 26 - Memory Affinity Info
-  NULL,                             ///< 27 - Device Handle Acpi
-  NULL,                             ///< 28 - Device Handle Pci
-  NULL,                             ///< 29 - Generic Initiator Affinity
-  NULL,                             ///< 30 - CMN-600 Info
-  NULL,                             ///< 31 - Lpi Info
-  NULL,                             ///< 32 - Pci Address Map Info
-  NULL,                             ///< 33 - Pci Interrupt Map Info
-  NULL,                             ///< 34 - Reserved Memory Range Node
-  NULL,                             ///< 35 - Memory Range Descriptor
-  NULL,                             ///< 36 - Continuous Performance Control Info
-  NULL,                             ///< 37 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 26 - Device Handle Acpi
+  NULL,                             ///< 27 - Device Handle Pci
+  NULL,                             ///< 28 - Generic Initiator Affinity
+  NULL,                             ///< 29 - CMN-600 Info
+  NULL,                             ///< 30 - Lpi Info
+  NULL,                             ///< 31 - Pci Address Map Info
+  NULL,                             ///< 32 - Pci Interrupt Map Info
+  NULL,                             ///< 33 - Reserved Memory Range Node
+  NULL,                             ///< 34 - Memory Range Descriptor
+  NULL,                             ///< 35 - Continuous Performance Control Info
+  NULL,                             ///< 36 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 37 - Pcc Subspace Type 2 Info
   NULL,                             ///< 38 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 39 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 40 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 41 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 42 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 43 - Embedded Trace Extension/Module Info
-  NULL                              ///< 44 - P-State Dependency (PSD) Info
+  NULL,                             ///< 39 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 40 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 41 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 42 - Embedded Trace Extension/Module Info
+  NULL                              ///< 43 - 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 334d2a026596..1b3532f94088 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -193,9 +193,9 @@ STATIC CONST CM_OBJ_PARSER  CmArmPciConfigSpaceInfoParser[] = {
   { "InterruptMapToken",     sizeof (CM_OBJECT_TOKEN), "0x%p",   NULL },
 };
 
-/** A parser for EArmObjHypervisorVendorIdentity.
+/** A parser for EArchCommonObjHypervisorVendorIdentity.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmHypervisorVendorIdParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonHypervisorVendorIdentityParser[] = {
   { "HypervisorVendorId", 8, "0x%llx", NULL }
 };
 
@@ -675,6 +675,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo,            CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo,           CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo,       CmArchCommonSerialPortInfoParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity,  CmArchCommonHypervisorVendorIdentityParser),
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
 };
 
@@ -693,7 +694,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,       CmArmGTBlockTimerFrameInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWatchdogInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo,          CmArmPciConfigSpaceInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjHypervisorVendorIdentity,    CmArmHypervisorVendorIdParser),
   CM_PARSER_ADD_OBJECT (EArmObjFixedFeatureFlags,           CmArmFixedFeatureFlagsParser),
   CM_PARSER_ADD_OBJECT (EArmObjItsGroup,                    CmArmItsGroupNodeParser),
   CM_PARSER_ADD_OBJECT (EArmObjNamedComponent,              CmArmNamedComponentNodeParser),
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 90f03f00e7d3..79ccd86e8558 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -452,39 +452,38 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |   9   | Generic Timer Block Frame Info            | |
 |  10   | Platform Generic Watchdog                 | |
 |  11   | PCI Configuration Space Info              | Move to Arch Common NS |
-|  12   | Hypervisor Vendor Id                      | Move to Arch Common NS |
-|  13   | Fixed feature flags for FADT              | Move to Arch Common NS |
-|  14   | ITS Group                                 | |
-|  15   | Named Component                           | |
-|  16   | Root Complex                              | |
-|  17   | SMMUv1 or SMMUv2                          | |
-|  18   | SMMUv3                                    | |
-|  19   | PMCG                                      | |
-|  20   | GIC ITS Identifier Array                  | |
-|  21   | ID Mapping Array                          | |
-|  22   | SMMU Interrupt Array                      | |
-|  23   | Processor Hierarchy Info                  | Move to Arch Common NS |
-|  24   | Cache Info                                | Move to Arch Common NS |
-|  25   | CM Object Reference                       | Move to Arch Common NS |
-|  26   | Memory Affinity Info                      | Move to Arch Common NS |
-|  27   | Device Handle Acpi                        | Move to Arch Common NS |
-|  28   | Device Handle PCI                         | Move to Arch Common NS |
-|  29   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  30   | CMN 600 Info                              | |
-|  31   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  32   | PCI Address Map Info                      | Move to Arch Common NS |
-|  33   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  34   | Reserved Memory Range Node                | |
-|  35   | Memory Range Descriptor                   | |
-|  36   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  37   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  38   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  39   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  40   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  41   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  42   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  43   | Embedded Trace Extension/Module Info      | |
-|  44   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|  12   | Fixed feature flags for FADT              | Move to Arch Common NS |
+|  13   | ITS Group                                 | |
+|  14   | Named Component                           | |
+|  15   | Root Complex                              | |
+|  16   | SMMUv1 or SMMUv2                          | |
+|  17   | SMMUv3                                    | |
+|  18   | PMCG                                      | |
+|  19   | GIC ITS Identifier Array                  | |
+|  20   | ID Mapping Array                          | |
+|  21   | SMMU Interrupt Array                      | |
+|  22   | Processor Hierarchy Info                  | Move to Arch Common NS |
+|  23   | Cache Info                                | Move to Arch Common NS |
+|  24   | CM Object Reference                       | Move to Arch Common NS |
+|  25   | Memory Affinity Info                      | Move to Arch Common NS |
+|  26   | Device Handle Acpi                        | Move to Arch Common NS |
+|  27   | Device Handle PCI                         | Move to Arch Common NS |
+|  28   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  29   | CMN 600 Info                              | |
+|  30   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  31   | PCI Address Map Info                      | Move to Arch Common NS |
+|  32   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  33   | Reserved Memory Range Node                | |
+|  34   | Memory Range Descriptor                   | |
+|  35   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  36   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  37   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  38   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  39   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  40   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  41   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  42   | Embedded Trace Extension/Module Info      | |
+|  43   | 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
 |   2   | Serial Port Info                  | |
 |   3   | Serial Console Port Info          | |
 |   4   | Serial Debug Port Info            | |
+|   5   | Hypervisor Vendor Id              | |
 |  `*`  | All other values are reserved.    | |
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116974): https://edk2.groups.io/g/devel/message/116974
Mute This Topic: https://groups.io/mt/105067988/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 14/16] DynamicTablesPkg: Move FADT Fixed Features Flags to Arch Common
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (12 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 13/16] DynamicTablesPkg: Move Hypervisor Vendor Id to Arch Common PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 15/16] DynamicTablesPkg: Move Cm Reference object " PierreGondois
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Move FADT Fixed Features Flags object from Arm Namespace to the
Arch Common namespace.

Correspondingly also update the following modules to reflect the
changes introduced by the move:
  - FADT Generator
  - ConfigurationManagerObjectParser
  - Dynamic Plat Repo TokenFixer map.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArchCommonNameSpaceObjects.h      | 11 +++
 .../Include/ArmNameSpaceObjects.h             | 73 ++++++++-----------
 .../Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c   | 14 ++--
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 59 ++++++++-------
 .../ConfigurationManagerObjectParser.c        |  6 +-
 DynamicTablesPkg/Readme.md                    | 64 ++++++++--------
 6 files changed, 113 insertions(+), 114 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
index 401a24b6a5cd..1030488f4561 100644
--- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -26,6 +26,7 @@ typedef enum ArchCommonObjectID {
   EArchCommonObjConsolePortInfo,                ///<  3 - Serial Console Port Info
   EArchCommonObjSerialDebugPortInfo,            ///<  4 - Serial Debug Port Info
   EArchCommonObjHypervisorVendorIdentity,       ///<  5 - Hypervisor Vendor Id
+  EArchCommonObjFixedFeatureFlags,              ///<  6 - Fixed feature flags for FADT
   EArchCommonObjMax
 } EARCH_COMMON_OBJECT_ID;
 
@@ -86,6 +87,16 @@ typedef struct CmArchCommonHypervisorVendorIdentity {
   UINT64    HypervisorVendorId;
 } CM_ARCH_COMMON_HYPERVISOR_VENDOR_ID;
 
+/** A structure that describes the
+    Fixed feature flags for the Platform.
+
+    ID: EArchCommonObjFixedFeatureFlags
+*/
+typedef struct CmArchCommonFixedFeatureFlags {
+  /// The Fixed feature flags
+  UINT32    Flags;
+} CM_ARCH_COMMON_FIXED_FEATURE_FLAGS;
+
 #pragma pack()
 
 #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 48e65a3cc0a5..66709c41fd69 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -40,38 +40,37 @@ typedef enum ArmObjectID {
   EArmObjGTBlockTimerFrameInfo,                                ///<  9 - Generic Timer Block Frame Info
   EArmObjPlatformGenericWatchdogInfo,                          ///< 10 - Platform Generic Watchdog
   EArmObjPciConfigSpaceInfo,                                   ///< 11 - PCI Configuration Space Info
-  EArmObjFixedFeatureFlags,                                    ///< 12 - Fixed feature flags for FADT
-  EArmObjItsGroup,                                             ///< 13 - ITS Group
-  EArmObjNamedComponent,                                       ///< 14 - Named Component
-  EArmObjRootComplex,                                          ///< 15 - Root Complex
-  EArmObjSmmuV1SmmuV2,                                         ///< 16 - SMMUv1 or SMMUv2
-  EArmObjSmmuV3,                                               ///< 17 - SMMUv3
-  EArmObjPmcg,                                                 ///< 18 - PMCG
-  EArmObjGicItsIdentifierArray,                                ///< 19 - GIC ITS Identifier Array
-  EArmObjIdMappingArray,                                       ///< 20 - ID Mapping Array
-  EArmObjSmmuInterruptArray,                                   ///< 21 - SMMU Interrupt Array
-  EArmObjProcHierarchyInfo,                                    ///< 22 - Processor Hierarchy Info
-  EArmObjCacheInfo,                                            ///< 23 - Cache Info
-  EArmObjCmRef,                                                ///< 24 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 25 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 26 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 27 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 28 - Generic Initiator Affinity
-  EArmObjCmn600Info,                                           ///< 29 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 30 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 31 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 32 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 33 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 34 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 35 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 36 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 37 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 38 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 39 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 40 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 41 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 42 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 43 - P-State Dependency (PSD) Info
+  EArmObjItsGroup,                                             ///< 12 - ITS Group
+  EArmObjNamedComponent,                                       ///< 13 - Named Component
+  EArmObjRootComplex,                                          ///< 14 - Root Complex
+  EArmObjSmmuV1SmmuV2,                                         ///< 15 - SMMUv1 or SMMUv2
+  EArmObjSmmuV3,                                               ///< 16 - SMMUv3
+  EArmObjPmcg,                                                 ///< 17 - PMCG
+  EArmObjGicItsIdentifierArray,                                ///< 18 - GIC ITS Identifier Array
+  EArmObjIdMappingArray,                                       ///< 19 - ID Mapping Array
+  EArmObjSmmuInterruptArray,                                   ///< 20 - SMMU Interrupt Array
+  EArmObjProcHierarchyInfo,                                    ///< 21 - Processor Hierarchy Info
+  EArmObjCacheInfo,                                            ///< 22 - Cache Info
+  EArmObjCmRef,                                                ///< 23 - CM Object Reference
+  EArmObjMemoryAffinityInfo,                                   ///< 24 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 25 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 26 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 27 - Generic Initiator Affinity
+  EArmObjCmn600Info,                                           ///< 28 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 29 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 30 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 31 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 32 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 33 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 34 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 35 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 36 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 37 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 38 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 39 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 40 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 41 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 42 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
@@ -437,16 +436,6 @@ typedef struct CmArmPciConfigSpaceInfo {
   CM_OBJECT_TOKEN    InterruptMapToken;
 } CM_ARM_PCI_CONFIG_SPACE_INFO;
 
-/** A structure that describes the
-    Fixed feature flags for the Platform.
-
-    ID: EArmObjFixedFeatureFlags
-*/
-typedef struct CmArmFixedFeatureFlags {
-  /// The Fixed feature flags
-  UINT32    Flags;
-} CM_ARM_FIXED_FEATURE_FLAGS;
-
 /** A structure that describes the
     ITS Group node for the Platform.
 
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
index 868a974fed28..470f1acfd11f 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
@@ -229,9 +229,9 @@ GET_OBJECT_LIST (
   feature flags for the platform from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjFixedFeatureFlags,
-  CM_ARM_FIXED_FEATURE_FLAGS
+  EObjNameSpaceArchCommon,
+  EArchCommonObjFixedFeatureFlags,
+  CM_ARCH_COMMON_FIXED_FEATURE_FLAGS
   );
 
 /** Update the Power Management Profile information in the FADT Table.
@@ -420,13 +420,13 @@ FadtAddFixedFeatureFlags (
   IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol
   )
 {
-  EFI_STATUS                  Status;
-  CM_ARM_FIXED_FEATURE_FLAGS  *FixedFeatureFlags;
+  EFI_STATUS                          Status;
+  CM_ARCH_COMMON_FIXED_FEATURE_FLAGS  *FixedFeatureFlags;
 
   ASSERT (CfgMgrProtocol != NULL);
 
   // Get the Fixed feature flags from the Platform Configuration Manager
-  Status = GetEArmObjFixedFeatureFlags (
+  Status = GetEArchCommonObjFixedFeatureFlags (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &FixedFeatureFlags,
@@ -453,7 +453,7 @@ FadtAddFixedFeatureFlags (
 
   DEBUG ((
     DEBUG_INFO,
-    "FADT: EArmObjFixedFeatureFlags = 0x%x\n",
+    "FADT: EArchCommonObjFixedFeatureFlags = 0x%x\n",
     FixedFeatureFlags->Flags
     ));
 
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index 34ba9f26733f..aef818e77f0c 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -155,38 +155,37 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///<  9 - Generic Timer Block Frame Info
   NULL,                             ///< 10 - Platform Generic Watchdog
   NULL,                             ///< 11 - PCI Configuration Space Info
-  NULL,                             ///< 12 - Fixed feature flags for FADT
-  TokenFixerItsGroup,               ///< 13 - ITS Group
-  TokenFixerNamedComponentNode,     ///< 14 - Named Component
-  TokenFixerRootComplexNode,        ///< 15 - Root Complex
-  TokenFixerNotImplemented,         ///< 16 - SMMUv1 or SMMUv2
-  TokenFixerSmmuV3Node,             ///< 17 - SMMUv3
-  TokenFixerNotImplemented,         ///< 18 - PMCG
-  NULL,                             ///< 19 - GIC ITS Identifier Array
-  NULL,                             ///< 20 - ID Mapping Array
-  NULL,                             ///< 21 - SMMU Interrupt Array
-  TokenFixerNotImplemented,         ///< 22 - Processor Hierarchy Info
-  TokenFixerNotImplemented,         ///< 23 - Cache Info
+  TokenFixerItsGroup,               ///< 12 - ITS Group
+  TokenFixerNamedComponentNode,     ///< 13 - Named Component
+  TokenFixerRootComplexNode,        ///< 14 - Root Complex
+  TokenFixerNotImplemented,         ///< 15 - SMMUv1 or SMMUv2
+  TokenFixerSmmuV3Node,             ///< 16 - SMMUv3
+  TokenFixerNotImplemented,         ///< 17 - PMCG
+  NULL,                             ///< 18 - GIC ITS Identifier Array
+  NULL,                             ///< 19 - ID Mapping Array
+  NULL,                             ///< 20 - SMMU Interrupt Array
+  TokenFixerNotImplemented,         ///< 21 - Processor Hierarchy Info
+  TokenFixerNotImplemented,         ///< 22 - Cache Info
+  NULL,                             ///< 23 - CM Object Reference
   NULL,                             ///< 24 - Memory Affinity Info
-  NULL,                             ///< 25 - Memory Affinity Info
-  NULL,                             ///< 26 - Device Handle Acpi
-  NULL,                             ///< 27 - Device Handle Pci
-  NULL,                             ///< 28 - Generic Initiator Affinity
-  NULL,                             ///< 29 - CMN-600 Info
-  NULL,                             ///< 30 - Lpi Info
-  NULL,                             ///< 31 - Pci Address Map Info
-  NULL,                             ///< 32 - Pci Interrupt Map Info
-  NULL,                             ///< 33 - Reserved Memory Range Node
-  NULL,                             ///< 34 - Memory Range Descriptor
-  NULL,                             ///< 35 - Continuous Performance Control Info
-  NULL,                             ///< 36 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 25 - Device Handle Acpi
+  NULL,                             ///< 26 - Device Handle Pci
+  NULL,                             ///< 27 - Generic Initiator Affinity
+  NULL,                             ///< 28 - CMN-600 Info
+  NULL,                             ///< 29 - Lpi Info
+  NULL,                             ///< 30 - Pci Address Map Info
+  NULL,                             ///< 31 - Pci Interrupt Map Info
+  NULL,                             ///< 32 - Reserved Memory Range Node
+  NULL,                             ///< 33 - Memory Range Descriptor
+  NULL,                             ///< 34 - Continuous Performance Control Info
+  NULL,                             ///< 35 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 36 - Pcc Subspace Type 2 Info
   NULL,                             ///< 37 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 38 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 39 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 40 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 41 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 42 - Embedded Trace Extension/Module Info
-  NULL                              ///< 43 - P-State Dependency (PSD) Info
+  NULL,                             ///< 38 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 39 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 40 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 41 - Embedded Trace Extension/Module Info
+  NULL                              ///< 42 - 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 1b3532f94088..3205cf87c8bf 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -199,9 +199,9 @@ STATIC CONST CM_OBJ_PARSER  CmArchCommonHypervisorVendorIdentityParser[] = {
   { "HypervisorVendorId", 8, "0x%llx", NULL }
 };
 
-/** A parser for EArmObjFixedFeatureFlags.
+/** A parser for EArchCommonObjFixedFeatureFlags.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmFixedFeatureFlagsParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonFixedFeatureFlagsParser[] = {
   { "Flags", 4, "0x%x", NULL }
 };
 
@@ -676,6 +676,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo,           CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo,       CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity,  CmArchCommonHypervisorVendorIdentityParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags,         CmArchCommonFixedFeatureFlagsParser),
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
 };
 
@@ -694,7 +695,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,       CmArmGTBlockTimerFrameInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWatchdogInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo,          CmArmPciConfigSpaceInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjFixedFeatureFlags,           CmArmFixedFeatureFlagsParser),
   CM_PARSER_ADD_OBJECT (EArmObjItsGroup,                    CmArmItsGroupNodeParser),
   CM_PARSER_ADD_OBJECT (EArmObjNamedComponent,              CmArmNamedComponentNodeParser),
   CM_PARSER_ADD_OBJECT (EArmObjRootComplex,                 CmArmRootComplexNodeParser),
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 79ccd86e8558..5b9dda3e63d9 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -452,38 +452,37 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |   9   | Generic Timer Block Frame Info            | |
 |  10   | Platform Generic Watchdog                 | |
 |  11   | PCI Configuration Space Info              | Move to Arch Common NS |
-|  12   | Fixed feature flags for FADT              | Move to Arch Common NS |
-|  13   | ITS Group                                 | |
-|  14   | Named Component                           | |
-|  15   | Root Complex                              | |
-|  16   | SMMUv1 or SMMUv2                          | |
-|  17   | SMMUv3                                    | |
-|  18   | PMCG                                      | |
-|  19   | GIC ITS Identifier Array                  | |
-|  20   | ID Mapping Array                          | |
-|  21   | SMMU Interrupt Array                      | |
-|  22   | Processor Hierarchy Info                  | Move to Arch Common NS |
-|  23   | Cache Info                                | Move to Arch Common NS |
-|  24   | CM Object Reference                       | Move to Arch Common NS |
-|  25   | Memory Affinity Info                      | Move to Arch Common NS |
-|  26   | Device Handle Acpi                        | Move to Arch Common NS |
-|  27   | Device Handle PCI                         | Move to Arch Common NS |
-|  28   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  29   | CMN 600 Info                              | |
-|  30   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  31   | PCI Address Map Info                      | Move to Arch Common NS |
-|  32   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  33   | Reserved Memory Range Node                | |
-|  34   | Memory Range Descriptor                   | |
-|  35   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  36   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  37   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  38   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  39   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  40   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  41   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  42   | Embedded Trace Extension/Module Info      | |
-|  43   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|  12   | ITS Group                                 | |
+|  13   | Named Component                           | |
+|  14   | Root Complex                              | |
+|  15   | SMMUv1 or SMMUv2                          | |
+|  16   | SMMUv3                                    | |
+|  17   | PMCG                                      | |
+|  18   | GIC ITS Identifier Array                  | |
+|  19   | ID Mapping Array                          | |
+|  20   | SMMU Interrupt Array                      | |
+|  21   | Processor Hierarchy Info                  | Move to Arch Common NS |
+|  22   | Cache Info                                | Move to Arch Common NS |
+|  23   | CM Object Reference                       | Move to Arch Common NS |
+|  24   | Memory Affinity Info                      | Move to Arch Common NS |
+|  25   | Device Handle Acpi                        | Move to Arch Common NS |
+|  26   | Device Handle PCI                         | Move to Arch Common NS |
+|  27   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  28   | CMN 600 Info                              | |
+|  29   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  30   | PCI Address Map Info                      | Move to Arch Common NS |
+|  31   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  32   | Reserved Memory Range Node                | |
+|  33   | Memory Range Descriptor                   | |
+|  34   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  35   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  36   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  37   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  38   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  39   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  40   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  41   | Embedded Trace Extension/Module Info      | |
+|  42   | 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
 |   3   | Serial Console Port Info          | |
 |   4   | Serial Debug Port Info            | |
 |   5   | Hypervisor Vendor Id              | |
+|   6   | Fixed feature flags for FADT      | |
 |  `*`  | All other values are reserved.    | |
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116975): https://edk2.groups.io/g/devel/message/116975
Mute This Topic: https://groups.io/mt/105067990/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 15/16] DynamicTablesPkg: Move Cm Reference object to Arch Common
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (13 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 14/16] DynamicTablesPkg: Move FADT Fixed Features Flags " PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-03-21 15:53 ` [edk2-devel] [PATCH 16/16] DynamicTablesPkg & ArmVirtPkg: Move Pci Config Space Info PierreGondois
  2024-04-04 10:02 ` [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) Sunil V L
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Move Cm Reference object from Arm Namespace to the Arch
Common namespace.

Correspondingly also update the following modules to reflect the
changes introduced by the move:
 - PPTT generator
 - SSDT CPU topology generator
 - SSDT PCIe generator
 - ConfigurationManagerObjectParser
 - Dynamic Plat Repo, the Token Mapper and the TokenFixer map.
 - FdtHwInfoParser library

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../Include/ArchCommonNameSpaceObjects.h      | 17 ++++++
 .../Include/ArmNameSpaceObjects.h             | 61 +++++++------------
 .../Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c   | 20 +++---
 .../SsdtCpuTopologyGenerator.c                | 14 ++---
 .../SsdtCpuTopologyGenerator.h                | 10 +--
 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    | 20 +++---
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 37 ++++++-----
 .../DynamicPlatRepoLib/DynamicPlatRepo.c      | 28 ++++-----
 .../Common/DynamicPlatRepoLib/TokenMapper.c   |  9 +--
 .../ConfigurationManagerObjectParser.c        |  6 +-
 .../FdtHwInfoParserLib/CmObjectDescUtility.c  | 10 +--
 .../FdtHwInfoParserLib/CmObjectDescUtility.h  |  6 +-
 DynamicTablesPkg/Readme.md                    | 40 ++++++------
 13 files changed, 139 insertions(+), 139 deletions(-)

diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
index 1030488f4561..632816da09de 100644
--- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -27,6 +27,7 @@ typedef enum ArchCommonObjectID {
   EArchCommonObjSerialDebugPortInfo,            ///<  4 - Serial Debug Port Info
   EArchCommonObjHypervisorVendorIdentity,       ///<  5 - Hypervisor Vendor Id
   EArchCommonObjFixedFeatureFlags,              ///<  6 - Fixed feature flags for FADT
+  EArchCommonObjCmRef,                          ///<  7 - CM Object Reference
   EArchCommonObjMax
 } EARCH_COMMON_OBJECT_ID;
 
@@ -97,6 +98,22 @@ typedef struct CmArchCommonFixedFeatureFlags {
   UINT32    Flags;
 } CM_ARCH_COMMON_FIXED_FEATURE_FLAGS;
 
+/** A structure that describes a reference to another Configuration Manager
+    object.
+
+    This is useful for creating an array of reference tokens. The framework
+    can then query the configuration manager for these arrays using the
+    object ID EArchCommonObjCmRef.
+
+    This can be used is to represent one-to-many relationships between objects.
+
+    ID: EArchCommonObjCmRef
+*/
+typedef struct CmArchCommonObjRef {
+  /// Token of the CM object being referenced
+  CM_OBJECT_TOKEN    ReferenceToken;
+} CM_ARCH_COMMON_OBJ_REF;
+
 #pragma pack()
 
 #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index 66709c41fd69..cfcb2c7d2758 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -51,26 +51,25 @@ typedef enum ArmObjectID {
   EArmObjSmmuInterruptArray,                                   ///< 20 - SMMU Interrupt Array
   EArmObjProcHierarchyInfo,                                    ///< 21 - Processor Hierarchy Info
   EArmObjCacheInfo,                                            ///< 22 - Cache Info
-  EArmObjCmRef,                                                ///< 23 - CM Object Reference
-  EArmObjMemoryAffinityInfo,                                   ///< 24 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 25 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 26 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 27 - Generic Initiator Affinity
-  EArmObjCmn600Info,                                           ///< 28 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 29 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 30 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 31 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 32 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 33 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 34 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 35 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 36 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 37 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 38 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 39 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 40 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 41 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 42 - P-State Dependency (PSD) Info
+  EArmObjMemoryAffinityInfo,                                   ///< 23 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 24 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 25 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 26 - Generic Initiator Affinity
+  EArmObjCmn600Info,                                           ///< 27 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 28 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 29 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 30 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 31 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 32 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 33 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 34 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 35 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 36 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 37 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 38 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 39 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 40 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 41 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
@@ -428,11 +427,11 @@ typedef struct CmArmPciConfigSpaceInfo {
   UINT8              EndBusNumber;
 
   /// Optional field: Reference Token for address mapping.
-  /// Token identifying a CM_ARM_OBJ_REF structure.
+  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
   CM_OBJECT_TOKEN    AddressMapToken;
 
   /// Optional field: Reference Token for interrupt mapping.
-  /// Token identifying a CM_ARM_OBJ_REF structure.
+  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
   CM_OBJECT_TOKEN    InterruptMapToken;
 } CM_ARM_PCI_CONFIG_SPACE_INFO;
 
@@ -721,7 +720,7 @@ typedef struct CmArmProcHierarchyInfo {
   /// this field to CM_NULL_TOKEN.
   CM_OBJECT_TOKEN    PrivateResourcesArrayToken;
   /// Optional field: Reference Token for the Lpi state of this processor.
-  /// Token identifying a CM_ARM_OBJ_REF structure, itself referencing
+  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure, itself referencing
   /// CM_ARM_LPI_INFO objects.
   CM_OBJECT_TOKEN    LpiToken;
   /// Set to TRUE if UID should override index for name and _UID
@@ -767,22 +766,6 @@ typedef struct CmArmCacheInfo {
   UINT32             CacheId;
 } CM_ARM_CACHE_INFO;
 
-/** A structure that describes a reference to another Configuration Manager
-    object.
-
-    This is useful for creating an array of reference tokens. The framework
-    can then query the configuration manager for these arrays using the
-    object ID EArmObjCmRef.
-
-    This can be used is to represent one-to-many relationships between objects.
-
-    ID: EArmObjCmRef
-*/
-typedef struct CmArmObjRef {
-  /// Token of the CM object being referenced
-  CM_OBJECT_TOKEN    ReferenceToken;
-} CM_ARM_OBJ_REF;
-
 /** A structure that describes the Memory Affinity Structure (Type 1) in SRAT
 
     ID: EArmObjMemoryAffinityInfo
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
index 78fa63ff47e5..c237f7ff9386 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c
@@ -34,7 +34,7 @@
     The following Configuration Manager Object(s) are used by this Generator:
     - EArmObjProcHierarchyInfo (REQUIRED)
     - EArmObjCacheInfo
-    - EArmObjCmRef
+    - EArchCommonObjCmRef
     - EArmObjGicCInfo (REQUIRED)
 */
 
@@ -63,9 +63,9 @@ GET_OBJECT_LIST (
   reference information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjCmRef,
-  CM_ARM_OBJ_REF
+  EObjNameSpaceArchCommon,
+  EArchCommonObjCmRef,
+  CM_ARCH_COMMON_OBJ_REF
   );
 
 /**
@@ -264,7 +264,7 @@ DetectCyclesInTopology (
                                     Protocol Interface.
   @param [in]  PrivResArray         Pointer to the array of private resources.
   @param [in]  PrivResCount         Number of private resources.
-  @param [in]  PrivResArrayToken    Reference Token for the CM_ARM_OBJ_REF
+  @param [in]  PrivResArrayToken    Reference Token for the CM_ARCH_COMMON_OBJ_REF
                                     array describing node's private resources.
 
   @retval EFI_SUCCESS               Array updated successfully.
@@ -281,10 +281,10 @@ AddPrivateResources (
   IN  CONST CM_OBJECT_TOKEN                                PrivResArrayToken
   )
 {
-  EFI_STATUS         Status;
-  CM_ARM_OBJ_REF     *CmObjRefs;
-  UINT32             CmObjRefCount;
-  PPTT_NODE_INDEXER  *PpttNodeFound;
+  EFI_STATUS              Status;
+  CM_ARCH_COMMON_OBJ_REF  *CmObjRefs;
+  UINT32                  CmObjRefCount;
+  PPTT_NODE_INDEXER       *PpttNodeFound;
 
   ASSERT (
     (Generator != NULL) &&
@@ -308,7 +308,7 @@ AddPrivateResources (
 
   CmObjRefCount = 0;
   // Get the CM Object References
-  Status = GetEArmObjCmRef (
+  Status = GetEArchCommonObjCmRef (
              CfgMgrProtocol,
              PrivResArrayToken,
              &CmObjRefs,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
index cc6400e9e0df..994733a4e9c2 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c
@@ -39,7 +39,7 @@ Requirements:
   this Generator:
   - EArmObjGicCInfo
   - EArmObjProcHierarchyInfo (OPTIONAL) along with
-  - EArmObjCmRef (OPTIONAL)
+  - EArchCommonObjCmRef (OPTIONAL)
   - EArmObjLpiInfo (OPTIONAL)
   - GetEArmObjEtInfo (OPTIONAL)
   - EArmObjPsdInfo (OPTIONAL)
@@ -69,9 +69,9 @@ GET_OBJECT_LIST (
   reference information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjCmRef,
-  CM_ARM_OBJ_REF
+  EObjNameSpaceArchCommon,
+  EArchCommonObjCmRef,
+  CM_ARCH_COMMON_OBJ_REF
   );
 
 /**
@@ -120,7 +120,7 @@ GET_OBJECT_LIST (
   structure of the platform. The TokenTable allows to have a mapping:
   Index <-> CM_OBJECT_TOKEN (to CM_ARM_LPI_INFO structures).
 
-  There will always be less sets of Lpi states (CM_ARM_OBJ_REF)
+  There will always be less sets of Lpi states (CM_ARCH_COMMON_OBJ_REF)
   than the number of cpus/clusters (CM_ARM_PROC_HIERARCHY_INFO).
 
   @param [in]  Generator  The SSDT Cpu Topology generator.
@@ -697,7 +697,7 @@ GenerateLpiStates (
   UINT32  LastIndex;
 
   AML_OBJECT_NODE_HANDLE  LpiNode;
-  CM_ARM_OBJ_REF          *LpiRefInfo;
+  CM_ARCH_COMMON_OBJ_REF  *LpiRefInfo;
   UINT32                  LpiRefInfoCount;
   UINT32                  LpiRefIndex;
   CM_ARM_LPI_INFO         *LpiInfo;
@@ -727,7 +727,7 @@ GenerateLpiStates (
     }
 
     // Fetch the LPI objects referenced by the token.
-    Status = GetEArmObjCmRef (
+    Status = GetEArchCommonObjCmRef (
                CfgMgrProtocol,
                Generator->TokenTable.Table[Index],
                &LpiRefInfo,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.h b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.h
index 0c7a0b0601ab..d6561e33da11 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.h
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.h
@@ -69,8 +69,8 @@
 
 /** A structure used to handle the Lpi structures referencing.
 
-  A CM_ARM_PROC_HIERARCHY_INFO structure references a CM_ARM_OBJ_REF.
-  This CM_ARM_OBJ_REF references CM_ARM_LPI_INFO structures.
+  A CM_ARM_PROC_HIERARCHY_INFO structure references a CM_ARCH_COMMON_OBJ_REF.
+  This CM_ARCH_COMMON_OBJ_REF references CM_ARM_LPI_INFO structures.
 
   Example:
   (Cpu0)                                   (Cpu1)
@@ -80,7 +80,7 @@
               |
               v
   (List of references to Lpi states)
-  CM_ARM_OBJ_REF
+  CM_ARCH_COMMON_OBJ_REF
               |
               +----------------------------------------
               |                                       |
@@ -89,9 +89,9 @@
   CM_ARM_LPI_INFO[0]                        CM_ARM_LPI_INFO[1]
 
   Here, Cpu0 and Cpu1 have the same Lpi states. Both CM_ARM_PROC_HIERARCHY_INFO
-  structures reference the same CM_ARM_OBJ_REF. An entry is created in the
+  structures reference the same CM_ARCH_COMMON_OBJ_REF. An entry is created in the
   TokenTable such as:
-  0 <-> CM_ARM_OBJ_REF
+  0 <-> CM_ARCH_COMMON_OBJ_REF
 
   This will lead to the creation of this pseudo-ASL code where Cpu0 and Cpu1
   return the same object at \_SB.L000:
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
index 72873709aab5..dc1371c3bc5f 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
@@ -42,7 +42,7 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjCmRef
+  - EArchCommonObjCmRef
   - EArmObjPciConfigSpaceInfo
   - EArmObjPciAddressMapInfo
   - EArmObjPciInterruptMapInfo
@@ -52,9 +52,9 @@ Requirements:
     reference information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjCmRef,
-  CM_ARM_OBJ_REF
+  EObjNameSpaceArchCommon,
+  EArchCommonObjCmRef,
+  CM_ARCH_COMMON_OBJ_REF
   );
 
 /** This macro expands to a function that retrieves the Pci
@@ -313,7 +313,7 @@ GeneratePrt (
   EFI_STATUS                     Status;
   INT32                          Index;
   AML_OBJECT_NODE_HANDLE         PrtNode;
-  CM_ARM_OBJ_REF                 *RefInfo;
+  CM_ARCH_COMMON_OBJ_REF         *RefInfo;
   UINT32                         RefCount;
   CM_ARM_PCI_INTERRUPT_MAP_INFO  *IrqMapInfo;
 
@@ -324,9 +324,9 @@ GeneratePrt (
 
   PrtNode = NULL;
 
-  // Get the array of CM_ARM_OBJ_REF referencing the
+  // Get the array of CM_ARCH_COMMON_OBJ_REF referencing the
   // CM_ARM_PCI_INTERRUPT_MAP_INFO objects.
-  Status = GetEArmObjCmRef (
+  Status = GetEArchCommonObjCmRef (
              CfgMgrProtocol,
              PciInfo->InterruptMapToken,
              &RefInfo,
@@ -458,7 +458,7 @@ GeneratePciCrs (
   EFI_STATUS                   Status;
   BOOLEAN                      Translation;
   UINT32                       Index;
-  CM_ARM_OBJ_REF               *RefInfo;
+  CM_ARCH_COMMON_OBJ_REF       *RefInfo;
   UINT32                       RefCount;
   CM_ARM_PCI_ADDRESS_MAP_INFO  *AddrMapInfo;
   AML_OBJECT_NODE_HANDLE       CrsNode;
@@ -505,9 +505,9 @@ GeneratePciCrs (
     return Status;
   }
 
-  // Get the array of CM_ARM_OBJ_REF referencing the
+  // Get the array of CM_ARCH_COMMON_OBJ_REF referencing the
   // CM_ARM_PCI_ADDRESS_MAP_INFO objects.
-  Status = GetEArmObjCmRef (
+  Status = GetEArchCommonObjCmRef (
              CfgMgrProtocol,
              PciInfo->AddressMapToken,
              &RefInfo,
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index aef818e77f0c..d7ecd4dc1ba7 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -166,26 +166,25 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///< 20 - SMMU Interrupt Array
   TokenFixerNotImplemented,         ///< 21 - Processor Hierarchy Info
   TokenFixerNotImplemented,         ///< 22 - Cache Info
-  NULL,                             ///< 23 - CM Object Reference
-  NULL,                             ///< 24 - Memory Affinity Info
-  NULL,                             ///< 25 - Device Handle Acpi
-  NULL,                             ///< 26 - Device Handle Pci
-  NULL,                             ///< 27 - Generic Initiator Affinity
-  NULL,                             ///< 28 - CMN-600 Info
-  NULL,                             ///< 29 - Lpi Info
-  NULL,                             ///< 30 - Pci Address Map Info
-  NULL,                             ///< 31 - Pci Interrupt Map Info
-  NULL,                             ///< 32 - Reserved Memory Range Node
-  NULL,                             ///< 33 - Memory Range Descriptor
-  NULL,                             ///< 34 - Continuous Performance Control Info
-  NULL,                             ///< 35 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 23 - Memory Affinity Info
+  NULL,                             ///< 24 - Device Handle Acpi
+  NULL,                             ///< 25 - Device Handle Pci
+  NULL,                             ///< 26 - Generic Initiator Affinity
+  NULL,                             ///< 27 - CMN-600 Info
+  NULL,                             ///< 28 - Lpi Info
+  NULL,                             ///< 29 - Pci Address Map Info
+  NULL,                             ///< 30 - Pci Interrupt Map Info
+  NULL,                             ///< 31 - Reserved Memory Range Node
+  NULL,                             ///< 32 - Memory Range Descriptor
+  NULL,                             ///< 33 - Continuous Performance Control Info
+  NULL,                             ///< 34 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 35 - Pcc Subspace Type 2 Info
   NULL,                             ///< 36 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 37 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 38 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 39 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 40 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 41 - Embedded Trace Extension/Module Info
-  NULL                              ///< 42 - P-State Dependency (PSD) Info
+  NULL,                             ///< 37 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 38 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 39 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 40 - Embedded Trace Extension/Module Info
+  NULL                              ///< 41 - P-State Dependency (PSD) Info
 };
 
 /** CmObj token fixer.
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
index e4fa1233708e..08d11ac96a22 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepo.c
@@ -145,7 +145,7 @@ DynPlatRepoAddObject (
 
   // Check the CmObjDesc:
   //  - only Arm objects and Arch Common objects are supported for now.
-  //  - only EArmObjCmRef objects can be added as arrays.
+  //  - only EArchCommonObjCmRef objects can be added as arrays.
   if ((CmObjDesc->Size == 0) || (CmObjDesc->Count == 0)) {
     ASSERT (0);
     return EFI_INVALID_PARAMETER;
@@ -155,16 +155,16 @@ DynPlatRepoAddObject (
   NamespaceId = GET_CM_NAMESPACE_ID (CmObjDesc->ObjectId);
 
   if (EObjNameSpaceArm == NamespaceId) {
-    if ((ObjId >= EArmObjMax) ||
-        ((CmObjDesc->Count > 1)  && (ObjId != EArmObjCmRef)))
-    {
+    if (ObjId >= EArmObjMax) {
       ASSERT (0);
       return EFI_INVALID_PARAMETER;
     }
 
     ObjList = &This->ArmCmObjList[ObjId];
   } else if (EObjNameSpaceArchCommon == NamespaceId) {
-    if (ObjId >= EArchCommonObjMax) {
+    if ((ObjId >= EArchCommonObjMax) ||
+        ((CmObjDesc->Count > 1)  && (ObjId != EArchCommonObjCmRef)))
+    {
       ASSERT (0);
       return EFI_INVALID_PARAMETER;
     }
@@ -281,11 +281,11 @@ GroupCmObjNodes (
     }
 
     if ((CmObjDesc->Count != 1) &&
-        ((NamespaceId != EObjNameSpaceArm) ||
-         (ObjIndex != EArmObjCmRef)))
+        ((NamespaceId != EObjNameSpaceArchCommon) ||
+         (ObjIndex != EArchCommonObjCmRef)))
     {
       // We expect each descriptor to contain an individual object.
-      // EArmObjCmRef objects are counted as groups, so +1 as well.
+      // EArchCommonObjCmRef objects are counted as groups, so +1 as well.
       ASSERT (0);
       return EFI_INVALID_PARAMETER;
     }
@@ -452,18 +452,18 @@ DynamicPlatRepoGetObject (
   ObjId       = GET_CM_OBJECT_ID (CmObjectId);
 
   if (NamespaceId == EObjNameSpaceArm) {
-    if ((ObjId >= EArmObjMax) ||
-        ((ObjId == EArmObjCmRef) &&
-         (Token == CM_NULL_TOKEN)))
-    {
-      // EArmObjCmRef object must be requested using a valid token.
+    if (ObjId >= EArmObjMax) {
       ASSERT (0);
       return EFI_INVALID_PARAMETER;
     }
 
     Desc = &This->ArmCmObjArray[ObjId];
   } else if (NamespaceId == EObjNameSpaceArchCommon) {
-    if (ObjId >= EArchCommonObjMax) {
+    if ((ObjId >= EArchCommonObjMax) ||
+        ((ObjId == EArchCommonObjCmRef) &&
+         (Token == CM_NULL_TOKEN)))
+    {
+      // EArchCommonObjCmRef object must be requested using a valid token.
       ASSERT (0);
       return EFI_INVALID_PARAMETER;
     }
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/TokenMapper.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/TokenMapper.c
index 9391e935eee0..2300375f0386 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/TokenMapper.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/TokenMapper.c
@@ -66,11 +66,12 @@ TokenMapperAddObject (
   // Point inside the finalized array.
   CmObjDesc->Data = Data;
 
-  // Only EArmObjCmRef CmObj can be added as arrays (more than 1 elements).
-  if ((GET_CM_NAMESPACE_ID (ObjectId) == EObjNameSpaceArm) &&
-      (GET_CM_OBJECT_ID (ObjectId) == EArmObjCmRef))
+  // Only EArchCommonObjCmRef CmObj can be added as
+  // arrays (more than 1 elements).
+  if ((GET_CM_NAMESPACE_ID (ObjectId) == EObjNameSpaceArchCommon) &&
+      (GET_CM_OBJECT_ID (ObjectId) == EArchCommonObjCmRef))
   {
-    CmObjDesc->Count = Size / sizeof (CM_ARM_OBJ_REF);
+    CmObjDesc->Count = Size / sizeof (CM_ARCH_COMMON_OBJ_REF);
   } else {
     CmObjDesc->Count = 1;
   }
diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index 3205cf87c8bf..264e01cff29f 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -350,9 +350,9 @@ STATIC CONST CM_OBJ_PARSER  CmArmCacheInfoParser[] = {
   { "CacheId",               4,                        "0x%x", NULL },
 };
 
-/** A parser for EArmObjCmRef.
+/** A parser for EArchCommonObjCmRef.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmObjRefParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonObjRefParser[] = {
   { "ReferenceToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }
 };
 
@@ -677,6 +677,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo,       CmArchCommonSerialPortInfoParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity,  CmArchCommonHypervisorVendorIdentityParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags,         CmArchCommonFixedFeatureFlagsParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjCmRef,                     CmArchCommonObjRefParser),
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
 };
 
@@ -706,7 +707,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray,          CmArmGenericInterruptParser),
   CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo,           CmArmProcHierarchyInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjCacheInfo,                   CmArmCacheInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjCmRef,                       CmArmObjRefParser),
   CM_PARSER_ADD_OBJECT (EArmObjMemoryAffinityInfo,          CmArmMemoryAffinityInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi,            CmArmDeviceHandleAcpiParser),
   CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci,             CmArmDeviceHandlePciParser),
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.c b/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.c
index 8be1b5b8cd88..120a98c2a9eb 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.c
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.c
@@ -219,11 +219,11 @@ AddMultipleCmObj (
 
 /** Add multiple CmObj to the Configuration Manager.
 
-  Get one token referencing a EArmObjCmRef CmObj itself referencing
+  Get one token referencing a EArchCommonObjCmRef CmObj itself referencing
   the input CmObj. In the table below, RefToken is returned.
 
   Token referencing an      Array of tokens             Array of CmObj
-  array of EArmObjCmRef     referencing each            from the input:
+  array of EArchCommonObjCmRef     referencing each            from the input:
   CmObj:                    CmObj from the input:
 
   RefToken         --->     CmObjToken[0]        --->   CmObj[0]
@@ -234,7 +234,7 @@ AddMultipleCmObj (
   @param  [in]  CmObjDesc         CmObjDesc containing multiple CmObj
                                   to add.
   @param  [out] Token             If success, token referencing an array
-                                  of EArmObjCmRef CmObj, themselves
+                                  of EArchCommonObjCmRef CmObj, themselves
                                   referencing the input CmObjs.
 
   @retval EFI_SUCCESS             The function completed successfully.
@@ -286,12 +286,12 @@ AddMultipleCmObjWithCmObjRef (
     goto exit_handler;
   }
 
-  CmObjRef.ObjectId = CREATE_CM_ARM_OBJECT_ID (EArmObjCmRef);
+  CmObjRef.ObjectId = CREATE_CM_ARCH_COMMON_OBJECT_ID (EArchCommonObjCmRef);
   CmObjRef.Data     = TokenTable;
   CmObjRef.Count    = CmObjDesc->Count;
   CmObjRef.Size     = TokenTableSize;
 
-  // Add the array of EArmObjCmRef CmObjs.
+  // Add the array of EArchCommonObjCmRef CmObjs.
   Status = FdtParserHandle->HwInfoAdd (
                               FdtParserHandle,
                               FdtParserHandle->Context,
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.h b/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.h
index 270e0c3528f9..14e135335f9e 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.h
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/CmObjectDescUtility.h
@@ -98,11 +98,11 @@ AddMultipleCmObj (
 
 /** Add multiple CmObj to the Configuration Manager.
 
-  Get one token referencing a EArmObjCmRef CmObj itself referencing
+  Get one token referencing a EArchCommonObjCmRef CmObj itself referencing
   the input CmObj. In the table below, RefToken is returned.
 
   Token referencing an      Array of tokens             Array of CmObj
-  array of EArmObjCmRef     referencing each            from the input:
+  array of EArchCommonObjCmRef     referencing each            from the input:
   CmObj:                    CmObj from the input:
 
   RefToken         --->     CmObjToken[0]        --->   CmObj[0]
@@ -113,7 +113,7 @@ AddMultipleCmObj (
   @param  [in]  CmObjDesc         CmObjDesc containing multiple CmObj
                                   to add.
   @param  [out] Token             If success, token referencing an array
-                                  of EArmObjCmRef CmObj, themselves
+                                  of EArchCommonObjCmRef CmObj, themselves
                                   referencing the input CmObjs.
 
   @retval EFI_SUCCESS             The function completed successfully.
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 5b9dda3e63d9..9110c754690d 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -463,26 +463,25 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |  20   | SMMU Interrupt Array                      | |
 |  21   | Processor Hierarchy Info                  | Move to Arch Common NS |
 |  22   | Cache Info                                | Move to Arch Common NS |
-|  23   | CM Object Reference                       | Move to Arch Common NS |
-|  24   | Memory Affinity Info                      | Move to Arch Common NS |
-|  25   | Device Handle Acpi                        | Move to Arch Common NS |
-|  26   | Device Handle PCI                         | Move to Arch Common NS |
-|  27   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  28   | CMN 600 Info                              | |
-|  29   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  30   | PCI Address Map Info                      | Move to Arch Common NS |
-|  31   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  32   | Reserved Memory Range Node                | |
-|  33   | Memory Range Descriptor                   | |
-|  34   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  35   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  36   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  37   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  38   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  39   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  40   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  41   | Embedded Trace Extension/Module Info      | |
-|  42   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|  23   | Memory Affinity Info                      | Move to Arch Common NS |
+|  24   | Device Handle Acpi                        | Move to Arch Common NS |
+|  25   | Device Handle PCI                         | Move to Arch Common NS |
+|  26   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  27   | CMN 600 Info                              | |
+|  28   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  29   | PCI Address Map Info                      | Move to Arch Common NS |
+|  30   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  31   | Reserved Memory Range Node                | |
+|  32   | Memory Range Descriptor                   | |
+|  33   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  34   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  35   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  36   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  37   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  38   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  39   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  40   | Embedded Trace Extension/Module Info      | |
+|  41   | 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
 |   4   | Serial Debug Port Info            | |
 |   5   | Hypervisor Vendor Id              | |
 |   6   | Fixed feature flags for FADT      | |
+|   7   | CM Object Reference               | |
 |  `*`  | All other values are reserved.    | |
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116976): https://edk2.groups.io/g/devel/message/116976
Mute This Topic: https://groups.io/mt/105067991/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [edk2-devel] [PATCH 16/16] DynamicTablesPkg & ArmVirtPkg: Move Pci Config Space Info
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (14 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 15/16] DynamicTablesPkg: Move Cm Reference object " PierreGondois
@ 2024-03-21 15:53 ` PierreGondois
  2024-04-04 10:02 ` [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) Sunil V L
  16 siblings, 0 replies; 19+ messages in thread
From: PierreGondois @ 2024-03-21 15:53 UTC (permalink / raw)
  To: devel
  Cc: Pierre Gondois, Sami Mujawar, Pierre Gondois, Yeo Reum Yun,
	Sunil V L, AbdulLateef Attar, Jeshua Smith, Jeff Brasen,
	Girish Mahadevan, Leif Lindholm, Meenakshi Aggarwal

From: Sami Mujawar <sami.mujawar@arm.com>

Move Pci Config Space Info object from Arm Namespace to the
Arch Common namespace.

Correspondingly also update the following modules to reflect the
changes introduced by the move:
 - MCFG generator
 - SSDT PCIe generator
 - SSDT PCIe support library
 - ConfigurationManagerObjectParser
 - Dynamic Plat Repo TokenFixer map
 - FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser
 - ArmVirtPkg/Kvmtool guest firmware configuration manager.

Cc: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
Cc: Jeshua Smith <jeshuas@nvidia.com>
Cc: Jeff Brasen <jbrasen@nvidia.com>
Cc: Girish Mahadevan <gmahadevan@nvidia.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
 .../KvmtoolCfgMgrDxe/ConfigurationManager.c   |  4 +-
 .../Include/ArchCommonNameSpaceObjects.h      | 28 ++++++
 .../Include/ArmNameSpaceObjects.h             | 88 +++++++------------
 .../Include/Library/SsdtPcieSupportLib.h      | 12 +--
 .../Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c   | 28 +++---
 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    | 40 ++++-----
 .../DynamicPlatRepoLib/CmObjectTokenFixer.c   | 59 ++++++-------
 .../SsdtPcieSupportLib/SsdtPcieSupportLib.c   | 12 +--
 .../ConfigurationManagerObjectParser.c        |  6 +-
 .../Pci/ArmPciConfigSpaceParser.c             | 20 +++--
 .../Pci/ArmPciConfigSpaceParser.h             | 10 +--
 DynamicTablesPkg/Readme.md                    | 62 ++++++-------
 12 files changed, 186 insertions(+), 183 deletions(-)

diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
index 724054440644..96fbea33350d 100644
--- a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
+++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c
@@ -662,7 +662,9 @@ GetStandardNameSpaceObject (
       //
       Status = DynamicPlatRepoGetObject (
                  PlatformRepo->DynamicPlatformRepo,
-                 CREATE_CM_ARM_OBJECT_ID (EArmObjPciConfigSpaceInfo),
+                 CREATE_CM_ARCH_COMMON_OBJECT_ID (
+                   EArchCommonObjPciConfigSpaceInfo
+                   ),
                  CM_NULL_TOKEN,
                  &CmObjDesc
                  );
diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
index 632816da09de..7c70ba023829 100644
--- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
@@ -28,6 +28,7 @@ typedef enum ArchCommonObjectID {
   EArchCommonObjHypervisorVendorIdentity,       ///<  5 - Hypervisor Vendor Id
   EArchCommonObjFixedFeatureFlags,              ///<  6 - Fixed feature flags for FADT
   EArchCommonObjCmRef,                          ///<  7 - CM Object Reference
+  EArchCommonObjPciConfigSpaceInfo,             ///<  8 - PCI Configuration Space Info
   EArchCommonObjMax
 } EARCH_COMMON_OBJECT_ID;
 
@@ -114,6 +115,33 @@ typedef struct CmArchCommonObjRef {
   CM_OBJECT_TOKEN    ReferenceToken;
 } CM_ARCH_COMMON_OBJ_REF;
 
+/** A structure that describes the
+    PCI Configuration Space information for the Platform.
+
+    ID: EArchCommonObjPciConfigSpaceInfo
+*/
+typedef struct CmArchCommonPciConfigSpaceInfo {
+  /// The physical base address for the PCI segment
+  UINT64             BaseAddress;
+
+  /// The PCI segment group number
+  UINT16             PciSegmentGroupNumber;
+
+  /// The start bus number
+  UINT8              StartBusNumber;
+
+  /// The end bus number
+  UINT8              EndBusNumber;
+
+  /// Optional field: Reference Token for address mapping.
+  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
+  CM_OBJECT_TOKEN    AddressMapToken;
+
+  /// Optional field: Reference Token for interrupt mapping.
+  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
+  CM_OBJECT_TOKEN    InterruptMapToken;
+} CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO;
+
 #pragma pack()
 
 #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
index cfcb2c7d2758..a701de4bcd60 100644
--- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
+++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
@@ -39,37 +39,36 @@ typedef enum ArmObjectID {
   EArmObjPlatformGTBlockInfo,                                  ///<  8 - Platform GT Block Info
   EArmObjGTBlockTimerFrameInfo,                                ///<  9 - Generic Timer Block Frame Info
   EArmObjPlatformGenericWatchdogInfo,                          ///< 10 - Platform Generic Watchdog
-  EArmObjPciConfigSpaceInfo,                                   ///< 11 - PCI Configuration Space Info
-  EArmObjItsGroup,                                             ///< 12 - ITS Group
-  EArmObjNamedComponent,                                       ///< 13 - Named Component
-  EArmObjRootComplex,                                          ///< 14 - Root Complex
-  EArmObjSmmuV1SmmuV2,                                         ///< 15 - SMMUv1 or SMMUv2
-  EArmObjSmmuV3,                                               ///< 16 - SMMUv3
-  EArmObjPmcg,                                                 ///< 17 - PMCG
-  EArmObjGicItsIdentifierArray,                                ///< 18 - GIC ITS Identifier Array
-  EArmObjIdMappingArray,                                       ///< 19 - ID Mapping Array
-  EArmObjSmmuInterruptArray,                                   ///< 20 - SMMU Interrupt Array
-  EArmObjProcHierarchyInfo,                                    ///< 21 - Processor Hierarchy Info
-  EArmObjCacheInfo,                                            ///< 22 - Cache Info
-  EArmObjMemoryAffinityInfo,                                   ///< 23 - Memory Affinity Info
-  EArmObjDeviceHandleAcpi,                                     ///< 24 - Device Handle Acpi
-  EArmObjDeviceHandlePci,                                      ///< 25 - Device Handle Pci
-  EArmObjGenericInitiatorAffinityInfo,                         ///< 26 - Generic Initiator Affinity
-  EArmObjCmn600Info,                                           ///< 27 - CMN-600 Info
-  EArmObjLpiInfo,                                              ///< 28 - Lpi Info
-  EArmObjPciAddressMapInfo,                                    ///< 29 - Pci Address Map Info
-  EArmObjPciInterruptMapInfo,                                  ///< 30 - Pci Interrupt Map Info
-  EArmObjRmr,                                                  ///< 31 - Reserved Memory Range Node
-  EArmObjMemoryRangeDescriptor,                                ///< 32 - Memory Range Descriptor
-  EArmObjCpcInfo,                                              ///< 33 - Continuous Performance Control Info
-  EArmObjPccSubspaceType0Info,                                 ///< 34 - Pcc Subspace Type 0 Info
-  EArmObjPccSubspaceType1Info,                                 ///< 35 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType2Info,                                 ///< 36 - Pcc Subspace Type 2 Info
-  EArmObjPccSubspaceType3Info,                                 ///< 37 - Pcc Subspace Type 3 Info
-  EArmObjPccSubspaceType4Info,                                 ///< 38 - Pcc Subspace Type 4 Info
-  EArmObjPccSubspaceType5Info,                                 ///< 39 - Pcc Subspace Type 5 Info
-  EArmObjEtInfo,                                               ///< 40 - Embedded Trace Extension/Module Info
-  EArmObjPsdInfo,                                              ///< 41 - P-State Dependency (PSD) Info
+  EArmObjItsGroup,                                             ///< 11 - ITS Group
+  EArmObjNamedComponent,                                       ///< 12 - Named Component
+  EArmObjRootComplex,                                          ///< 13 - Root Complex
+  EArmObjSmmuV1SmmuV2,                                         ///< 14 - SMMUv1 or SMMUv2
+  EArmObjSmmuV3,                                               ///< 15 - SMMUv3
+  EArmObjPmcg,                                                 ///< 16 - PMCG
+  EArmObjGicItsIdentifierArray,                                ///< 17 - GIC ITS Identifier Array
+  EArmObjIdMappingArray,                                       ///< 18 - ID Mapping Array
+  EArmObjSmmuInterruptArray,                                   ///< 19 - SMMU Interrupt Array
+  EArmObjProcHierarchyInfo,                                    ///< 20 - Processor Hierarchy Info
+  EArmObjCacheInfo,                                            ///< 21 - Cache Info
+  EArmObjMemoryAffinityInfo,                                   ///< 22 - Memory Affinity Info
+  EArmObjDeviceHandleAcpi,                                     ///< 23 - Device Handle Acpi
+  EArmObjDeviceHandlePci,                                      ///< 24 - Device Handle Pci
+  EArmObjGenericInitiatorAffinityInfo,                         ///< 25 - Generic Initiator Affinity
+  EArmObjCmn600Info,                                           ///< 26 - CMN-600 Info
+  EArmObjLpiInfo,                                              ///< 27 - Lpi Info
+  EArmObjPciAddressMapInfo,                                    ///< 28 - Pci Address Map Info
+  EArmObjPciInterruptMapInfo,                                  ///< 29 - Pci Interrupt Map Info
+  EArmObjRmr,                                                  ///< 30 - Reserved Memory Range Node
+  EArmObjMemoryRangeDescriptor,                                ///< 31 - Memory Range Descriptor
+  EArmObjCpcInfo,                                              ///< 32 - Continuous Performance Control Info
+  EArmObjPccSubspaceType0Info,                                 ///< 33 - Pcc Subspace Type 0 Info
+  EArmObjPccSubspaceType1Info,                                 ///< 34 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType2Info,                                 ///< 35 - Pcc Subspace Type 2 Info
+  EArmObjPccSubspaceType3Info,                                 ///< 36 - Pcc Subspace Type 3 Info
+  EArmObjPccSubspaceType4Info,                                 ///< 37 - Pcc Subspace Type 4 Info
+  EArmObjPccSubspaceType5Info,                                 ///< 38 - Pcc Subspace Type 5 Info
+  EArmObjEtInfo,                                               ///< 39 - Embedded Trace Extension/Module Info
+  EArmObjPsdInfo,                                              ///< 40 - P-State Dependency (PSD) Info
   EArmObjMax
 } EARM_OBJECT_ID;
 
@@ -408,33 +407,6 @@ typedef struct CmArmGenericWatchdogInfo {
   UINT32    Flags;
 } CM_ARM_GENERIC_WATCHDOG_INFO;
 
-/** A structure that describes the
-    PCI Configuration Space information for the Platform.
-
-    ID: EArmObjPciConfigSpaceInfo
-*/
-typedef struct CmArmPciConfigSpaceInfo {
-  /// The physical base address for the PCI segment
-  UINT64             BaseAddress;
-
-  /// The PCI segment group number
-  UINT16             PciSegmentGroupNumber;
-
-  /// The start bus number
-  UINT8              StartBusNumber;
-
-  /// The end bus number
-  UINT8              EndBusNumber;
-
-  /// Optional field: Reference Token for address mapping.
-  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
-  CM_OBJECT_TOKEN    AddressMapToken;
-
-  /// Optional field: Reference Token for interrupt mapping.
-  /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
-  CM_OBJECT_TOKEN    InterruptMapToken;
-} CM_ARM_PCI_CONFIG_SPACE_INFO;
-
 /** A structure that describes the
     ITS Group node for the Platform.
 
diff --git a/DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h b/DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h
index 4171dabc33d8..50a335e4a464 100644
--- a/DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h
+++ b/DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h
@@ -43,8 +43,8 @@ typedef struct MappingTable {
 EFI_STATUS
 EFIAPI
 AddOscMethod (
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo,
-  IN  OUT   AML_OBJECT_NODE_HANDLE            PciNode
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo,
+  IN  OUT   AML_OBJECT_NODE_HANDLE                    PciNode
   );
 
 /** Generate Pci slots devices.
@@ -66,10 +66,10 @@ AddOscMethod (
 EFI_STATUS
 EFIAPI
 GeneratePciSlots (
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo,
-  IN      CONST MAPPING_TABLE                 *MappingTable,
-  IN            UINT32                        Uid,
-  IN  OUT       AML_OBJECT_NODE_HANDLE        PciNode
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo,
+  IN      CONST MAPPING_TABLE                         *MappingTable,
+  IN            UINT32                                Uid,
+  IN  OUT       AML_OBJECT_NODE_HANDLE                PciNode
   );
 
 #endif // SSDT_PCIE_SUPPORT_LIB_H_
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c
index 004b794a3c0c..722f9c17d541 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/McfgGenerator.c
@@ -27,7 +27,7 @@
 Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
-  - EArmObjPciConfigSpaceInfo
+  - EArchCommonObjPciConfigSpaceInfo
 */
 
 #pragma pack(1)
@@ -51,9 +51,9 @@ typedef
 /** Retrieve the PCI Configuration Space Information.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjPciConfigSpaceInfo,
-  CM_ARM_PCI_CONFIG_SPACE_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjPciConfigSpaceInfo,
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO
   );
 
 /** Add the PCI Enhanced Configuration Space Information to the MCFG Table.
@@ -68,10 +68,10 @@ GET_OBJECT_LIST (
 STATIC
 VOID
 AddPciConfigurationSpaceList (
-  IN       MCFG_TABLE                   *CONST  Mcfg,
-  IN CONST UINT32                               PciCfgSpaceOffset,
-  IN CONST CM_ARM_PCI_CONFIG_SPACE_INFO         *PciCfgSpaceInfoList,
-  IN       UINT32                               PciCfgSpaceCount
+  IN       MCFG_TABLE                   *CONST   Mcfg,
+  IN CONST UINT32                                PciCfgSpaceOffset,
+  IN CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciCfgSpaceInfoList,
+  IN       UINT32                                PciCfgSpaceCount
   )
 {
   MCFG_CFG_SPACE_ADDR  *PciCfgSpace;
@@ -126,11 +126,11 @@ BuildMcfgTable (
   OUT       EFI_ACPI_DESCRIPTION_HEADER          **CONST  Table
   )
 {
-  EFI_STATUS                    Status;
-  UINT32                        TableSize;
-  UINT32                        ConfigurationSpaceCount;
-  CM_ARM_PCI_CONFIG_SPACE_INFO  *PciConfigSpaceInfoList;
-  MCFG_TABLE                    *Mcfg;
+  EFI_STATUS                            Status;
+  UINT32                                TableSize;
+  UINT32                                ConfigurationSpaceCount;
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciConfigSpaceInfoList;
+  MCFG_TABLE                            *Mcfg;
 
   ASSERT (This != NULL);
   ASSERT (AcpiTableInfo != NULL);
@@ -154,7 +154,7 @@ BuildMcfgTable (
   }
 
   *Table = NULL;
-  Status = GetEArmObjPciConfigSpaceInfo (
+  Status = GetEArchCommonObjPciConfigSpaceInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &PciConfigSpaceInfoList,
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
index dc1371c3bc5f..2a169e0f6c1c 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
@@ -43,7 +43,7 @@ Requirements:
   The following Configuration Manager Object(s) are required by
   this Generator:
   - EArchCommonObjCmRef
-  - EArmObjPciConfigSpaceInfo
+  - EArchCommonObjPciConfigSpaceInfo
   - EArmObjPciAddressMapInfo
   - EArmObjPciInterruptMapInfo
 */
@@ -61,9 +61,9 @@ GET_OBJECT_LIST (
     Configuration Space Information from the Configuration Manager.
 */
 GET_OBJECT_LIST (
-  EObjNameSpaceArm,
-  EArmObjPciConfigSpaceInfo,
-  CM_ARM_PCI_CONFIG_SPACE_INFO
+  EObjNameSpaceArchCommon,
+  EArchCommonObjPciConfigSpaceInfo,
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO
   );
 
 /** This macro expands to a function that retrieves the Pci
@@ -208,9 +208,9 @@ STATIC
 EFI_STATUS
 EFIAPI
 GeneratePciDeviceInfo (
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo,
-  IN            UINT32                        Uid,
-  IN  OUT       AML_OBJECT_NODE_HANDLE        PciNode
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo,
+  IN            UINT32                                Uid,
+  IN  OUT       AML_OBJECT_NODE_HANDLE                PciNode
   )
 {
   EFI_STATUS  Status;
@@ -305,7 +305,7 @@ EFIAPI
 GeneratePrt (
   IN            ACPI_PCI_GENERATOR                            *Generator,
   IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol,
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO                  *PciInfo,
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO          *PciInfo,
   IN            UINT32                                        Uid,
   IN  OUT       AML_OBJECT_NODE_HANDLE                        PciNode
   )
@@ -451,7 +451,7 @@ EFIAPI
 GeneratePciCrs (
   IN            ACPI_PCI_GENERATOR                            *Generator,
   IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol,
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO                  *PciInfo,
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO          *PciInfo,
   IN  OUT       AML_OBJECT_NODE_HANDLE                        PciNode
   )
 {
@@ -693,7 +693,7 @@ EFIAPI
 ReserveEcamSpace (
   IN            ACPI_PCI_GENERATOR                            *Generator,
   IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol,
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO                  *PciInfo,
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO          *PciInfo,
   IN  OUT       AML_OBJECT_NODE_HANDLE                        PciNode
   )
 {
@@ -760,7 +760,7 @@ EFIAPI
 GeneratePciDevice (
   IN            ACPI_PCI_GENERATOR                            *Generator,
   IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol,
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO                  *PciInfo,
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO          *PciInfo,
   IN            UINT32                                        Uid,
   IN  OUT       AML_ROOT_NODE_HANDLE                          *RootNode
   )
@@ -863,7 +863,7 @@ BuildSsdtPciTable (
   IN        ACPI_PCI_GENERATOR                            *Generator,
   IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  *CONST  CfgMgrProtocol,
   IN  CONST CM_STD_OBJ_ACPI_TABLE_INFO            *CONST  AcpiTableInfo,
-  IN  CONST CM_ARM_PCI_CONFIG_SPACE_INFO                  *PciInfo,
+  IN  CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO          *PciInfo,
   IN        UINT32                                        Uid,
   OUT       EFI_ACPI_DESCRIPTION_HEADER                   **Table
   )
@@ -971,13 +971,13 @@ BuildSsdtPciTableEx (
   OUT       UINTN                                  *CONST  TableCount
   )
 {
-  EFI_STATUS                    Status;
-  CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo;
-  UINT32                        PciCount;
-  UINTN                         Index;
-  EFI_ACPI_DESCRIPTION_HEADER   **TableList;
-  ACPI_PCI_GENERATOR            *Generator;
-  UINT32                        Uid;
+  EFI_STATUS                            Status;
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo;
+  UINT32                                PciCount;
+  UINTN                                 Index;
+  EFI_ACPI_DESCRIPTION_HEADER           **TableList;
+  ACPI_PCI_GENERATOR                    *Generator;
+  UINT32                                Uid;
 
   ASSERT (This != NULL);
   ASSERT (AcpiTableInfo != NULL);
@@ -990,7 +990,7 @@ BuildSsdtPciTableEx (
   *TableCount = 0;
   Generator   = (ACPI_PCI_GENERATOR *)This;
 
-  Status = GetEArmObjPciConfigSpaceInfo (
+  Status = GetEArchCommonObjPciConfigSpaceInfo (
              CfgMgrProtocol,
              CM_NULL_TOKEN,
              &PciInfo,
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
index d7ecd4dc1ba7..41f66ee7b689 100644
--- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c
@@ -154,37 +154,36 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///<  8 - Platform GT Block Info
   NULL,                             ///<  9 - Generic Timer Block Frame Info
   NULL,                             ///< 10 - Platform Generic Watchdog
-  NULL,                             ///< 11 - PCI Configuration Space Info
-  TokenFixerItsGroup,               ///< 12 - ITS Group
-  TokenFixerNamedComponentNode,     ///< 13 - Named Component
-  TokenFixerRootComplexNode,        ///< 14 - Root Complex
-  TokenFixerNotImplemented,         ///< 15 - SMMUv1 or SMMUv2
-  TokenFixerSmmuV3Node,             ///< 16 - SMMUv3
-  TokenFixerNotImplemented,         ///< 17 - PMCG
-  NULL,                             ///< 18 - GIC ITS Identifier Array
-  NULL,                             ///< 19 - ID Mapping Array
-  NULL,                             ///< 20 - SMMU Interrupt Array
-  TokenFixerNotImplemented,         ///< 21 - Processor Hierarchy Info
-  TokenFixerNotImplemented,         ///< 22 - Cache Info
-  NULL,                             ///< 23 - Memory Affinity Info
-  NULL,                             ///< 24 - Device Handle Acpi
-  NULL,                             ///< 25 - Device Handle Pci
-  NULL,                             ///< 26 - Generic Initiator Affinity
-  NULL,                             ///< 27 - CMN-600 Info
-  NULL,                             ///< 28 - Lpi Info
-  NULL,                             ///< 29 - Pci Address Map Info
-  NULL,                             ///< 30 - Pci Interrupt Map Info
-  NULL,                             ///< 31 - Reserved Memory Range Node
-  NULL,                             ///< 32 - Memory Range Descriptor
-  NULL,                             ///< 33 - Continuous Performance Control Info
-  NULL,                             ///< 34 - Pcc Subspace Type 0 Info
+  TokenFixerItsGroup,               ///< 11 - ITS Group
+  TokenFixerNamedComponentNode,     ///< 12 - Named Component
+  TokenFixerRootComplexNode,        ///< 13 - Root Complex
+  TokenFixerNotImplemented,         ///< 14 - SMMUv1 or SMMUv2
+  TokenFixerSmmuV3Node,             ///< 15 - SMMUv3
+  TokenFixerNotImplemented,         ///< 16 - PMCG
+  NULL,                             ///< 17 - GIC ITS Identifier Array
+  NULL,                             ///< 18 - ID Mapping Array
+  NULL,                             ///< 19 - SMMU Interrupt Array
+  TokenFixerNotImplemented,         ///< 20 - Processor Hierarchy Info
+  TokenFixerNotImplemented,         ///< 21 - Cache Info
+  NULL,                             ///< 22 - Memory Affinity Info
+  NULL,                             ///< 23 - Device Handle Acpi
+  NULL,                             ///< 24 - Device Handle Pci
+  NULL,                             ///< 25 - Generic Initiator Affinity
+  NULL,                             ///< 26 - CMN-600 Info
+  NULL,                             ///< 27 - Lpi Info
+  NULL,                             ///< 28 - Pci Address Map Info
+  NULL,                             ///< 29 - Pci Interrupt Map Info
+  NULL,                             ///< 30 - Reserved Memory Range Node
+  NULL,                             ///< 31 - Memory Range Descriptor
+  NULL,                             ///< 32 - Continuous Performance Control Info
+  NULL,                             ///< 33 - Pcc Subspace Type 0 Info
+  NULL,                             ///< 34 - Pcc Subspace Type 2 Info
   NULL,                             ///< 35 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 36 - Pcc Subspace Type 2 Info
-  NULL,                             ///< 37 - Pcc Subspace Type 3 Info
-  NULL,                             ///< 38 - Pcc Subspace Type 4 Info
-  NULL,                             ///< 39 - Pcc Subspace Type 5 Info
-  NULL,                             ///< 40 - Embedded Trace Extension/Module Info
-  NULL                              ///< 41 - P-State Dependency (PSD) Info
+  NULL,                             ///< 36 - Pcc Subspace Type 3 Info
+  NULL,                             ///< 37 - Pcc Subspace Type 4 Info
+  NULL,                             ///< 38 - Pcc Subspace Type 5 Info
+  NULL,                             ///< 39 - Embedded Trace Extension/Module Info
+  NULL                              ///< 40 - P-State Dependency (PSD) Info
 };
 
 /** CmObj token fixer.
diff --git a/DynamicTablesPkg/Library/Common/SsdtPcieSupportLib/SsdtPcieSupportLib.c b/DynamicTablesPkg/Library/Common/SsdtPcieSupportLib/SsdtPcieSupportLib.c
index b35fb6a7dd45..3f8aae44bf9f 100644
--- a/DynamicTablesPkg/Library/Common/SsdtPcieSupportLib/SsdtPcieSupportLib.c
+++ b/DynamicTablesPkg/Library/Common/SsdtPcieSupportLib/SsdtPcieSupportLib.c
@@ -53,10 +53,10 @@
 EFI_STATUS
 EFIAPI
 GeneratePciSlots (
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo,
-  IN      CONST MAPPING_TABLE                 *MappingTable,
-  IN            UINT32                        Uid,
-  IN  OUT       AML_OBJECT_NODE_HANDLE        PciNode
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo,
+  IN      CONST MAPPING_TABLE                         *MappingTable,
+  IN            UINT32                                Uid,
+  IN  OUT       AML_OBJECT_NODE_HANDLE                PciNode
   )
 {
   EFI_STATUS              Status;
@@ -132,8 +132,8 @@ GeneratePciSlots (
 EFI_STATUS
 EFIAPI
 AddOscMethod (
-  IN      CONST CM_ARM_PCI_CONFIG_SPACE_INFO  *PciInfo,
-  IN  OUT   AML_OBJECT_NODE_HANDLE            PciNode
+  IN      CONST CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciInfo,
+  IN  OUT   AML_OBJECT_NODE_HANDLE                    PciNode
   )
 {
   EFI_STATUS                   Status;
diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
index 264e01cff29f..73dbb9879dcc 100644
--- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
+++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
@@ -182,9 +182,9 @@ STATIC CONST CM_OBJ_PARSER  CmArmGenericWatchdogInfoParser[] = {
   { "Flags",               4, "0x%x",   NULL }
 };
 
-/** A parser for EArmObjPciConfigSpaceInfo.
+/** A parser for EArchCommonObjPciConfigSpaceInfo.
 */
-STATIC CONST CM_OBJ_PARSER  CmArmPciConfigSpaceInfoParser[] = {
+STATIC CONST CM_OBJ_PARSER  CmArchCommonPciConfigSpaceInfoParser[] = {
   { "BaseAddress",           8,                        "0x%llx", NULL },
   { "PciSegmentGroupNumber", 2,                        "0x%x",   NULL },
   { "StartBusNumber",        1,                        "0x%x",   NULL },
@@ -678,6 +678,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity,  CmArchCommonHypervisorVendorIdentityParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags,         CmArchCommonFixedFeatureFlagsParser),
   CM_PARSER_ADD_OBJECT (EArchCommonObjCmRef,                     CmArchCommonObjRefParser),
+  CM_PARSER_ADD_OBJECT (EArchCommonObjPciConfigSpaceInfo,        CmArchCommonPciConfigSpaceInfoParser),
   CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
 };
 
@@ -695,7 +696,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
   CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo,         CmArmGTBlockInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,       CmArmGTBlockTimerFrameInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWatchdogInfoParser),
-  CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo,          CmArmPciConfigSpaceInfoParser),
   CM_PARSER_ADD_OBJECT (EArmObjItsGroup,                    CmArmItsGroupNodeParser),
   CM_PARSER_ADD_OBJECT (EArmObjNamedComponent,              CmArmNamedComponentNodeParser),
   CM_PARSER_ADD_OBJECT (EArmObjRootComplex,                 CmArmRootComplexNodeParser),
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.c b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.c
index 2ffff1ccd27f..7d9fe7b1da22 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.c
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.c
@@ -468,7 +468,7 @@ ParseIrqMap (
 
   @param [in]       Fdt          Pointer to a Flattened Device Tree (Fdt).
   @param [in]       HostPciNode  Offset of a host-pci node.
-  @param [in, out]  PciInfo      The CM_ARM_PCI_CONFIG_SPACE_INFO to populate.
+  @param [in, out]  PciInfo      The CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO to populate.
 
   @retval EFI_SUCCESS             The function completed successfully.
   @retval EFI_ABORTED             An error occurred.
@@ -579,7 +579,7 @@ PciNodeParser (
 /** Add the parsed Pci information to the Configuration Manager.
 
   CmObj of the following types are concerned:
-   - EArmObjPciConfigSpaceInfo
+   - EArchCommonObjPciConfigSpaceInfo
    - EArmObjPciAddressMapInfo
    - EArmObjPciInterruptMapInfo
 
@@ -599,8 +599,8 @@ PciInfoAdd (
   IN        PCI_PARSER_TABLE           *PciTableInfo
   )
 {
-  EFI_STATUS                    Status;
-  CM_ARM_PCI_CONFIG_SPACE_INFO  *PciConfigSpaceInfo;
+  EFI_STATUS                            Status;
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO  *PciConfigSpaceInfo;
 
   if ((FdtParserHandle == NULL) ||
       (PciTableInfo == NULL))
@@ -640,9 +640,11 @@ PciInfoAdd (
   // Add the configuration space CmObj to the Configuration Manager.
   Status = AddSingleCmObj (
              FdtParserHandle,
-             CREATE_CM_ARM_OBJECT_ID (EArmObjPciConfigSpaceInfo),
+             CREATE_CM_ARCH_COMMON_OBJECT_ID (
+               EArchCommonObjPciConfigSpaceInfo
+               ),
              &PciTableInfo->PciConfigSpaceInfo,
-             sizeof (CM_ARM_PCI_CONFIG_SPACE_INFO),
+             sizeof (CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO),
              NULL
              );
   ASSERT_EFI_ERROR (Status);
@@ -682,15 +684,15 @@ FreeParserTable (
   return EFI_SUCCESS;
 }
 
-/** CM_ARM_PCI_CONFIG_SPACE_INFO parser function.
+/** CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO parser function.
 
   The following structure is populated:
-  typedef struct CmArmPciConfigSpaceInfo {
+  typedef struct CmArchCommonPciConfigSpaceInfo {
     UINT64  BaseAddress;                          // {Populated}
     UINT16  PciSegmentGroupNumber;                // {Populated}
     UINT8   StartBusNumber;                       // {Populated}
     UINT8   EndBusNumber;                         // {Populated}
-  } CM_ARM_PCI_CONFIG_SPACE_INFO;
+  } CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO;
 
   typedef struct CmArmPciAddressMapInfo {
     UINT8                     SpaceCode;          // {Populated}
diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.h b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.h
index 6e0027abeab6..4e269508a6e4 100644
--- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.h
+++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Pci/ArmPciConfigSpaceParser.h
@@ -83,24 +83,24 @@ typedef enum PciMappingTable {
 */
 typedef struct PciParserTable {
   /// PCI Configuration Space Info
-  CM_ARM_PCI_CONFIG_SPACE_INFO    PciConfigSpaceInfo;
+  CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO    PciConfigSpaceInfo;
 
   /// Store the address mapping and interrupt mapping as CmObjDesc
   /// before adding them to the Configuration Manager.
-  CM_OBJ_DESCRIPTOR               Mapping[PciMappingTableMax];
+  CM_OBJ_DESCRIPTOR                       Mapping[PciMappingTableMax];
 } PCI_PARSER_TABLE;
 
 #pragma pack()
 
-/** CM_ARM_PCI_CONFIG_SPACE_INFO parser function.
+/** CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO parser function.
 
   The following structure is populated:
-  typedef struct CmArmPciConfigSpaceInfo {
+  typedef struct CmArchCommonPciConfigSpaceInfo {
     UINT64  BaseAddress;                          // {Populated}
     UINT16  PciSegmentGroupNumber;                // {Populated}
     UINT8   StartBusNumber;                       // {Populated}
     UINT8   EndBusNumber;                         // {Populated}
-  } CM_ARM_PCI_CONFIG_SPACE_INFO;
+  } CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO;
 
   typedef struct CmArmPciAddressMapInfo {
     UINT8                     SpaceCode;          // {Populated}
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 9110c754690d..e0544fe40b1c 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -451,37 +451,36 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager
 |   8   | Platform GT Block Info                    | |
 |   9   | Generic Timer Block Frame Info            | |
 |  10   | Platform Generic Watchdog                 | |
-|  11   | PCI Configuration Space Info              | Move to Arch Common NS |
-|  12   | ITS Group                                 | |
-|  13   | Named Component                           | |
-|  14   | Root Complex                              | |
-|  15   | SMMUv1 or SMMUv2                          | |
-|  16   | SMMUv3                                    | |
-|  17   | PMCG                                      | |
-|  18   | GIC ITS Identifier Array                  | |
-|  19   | ID Mapping Array                          | |
-|  20   | SMMU Interrupt Array                      | |
-|  21   | Processor Hierarchy Info                  | Move to Arch Common NS |
-|  22   | Cache Info                                | Move to Arch Common NS |
-|  23   | Memory Affinity Info                      | Move to Arch Common NS |
-|  24   | Device Handle Acpi                        | Move to Arch Common NS |
-|  25   | Device Handle PCI                         | Move to Arch Common NS |
-|  26   | Generic Initiator Affinity Info           | Move to Arch Common NS |
-|  27   | CMN 600 Info                              | |
-|  28   | Low Power Idle State Info                 | Move to Arch Common NS |
-|  29   | PCI Address Map Info                      | Move to Arch Common NS |
-|  30   | PCI Interrupt Map Info                    | Move to Arch Common NS |
-|  31   | Reserved Memory Range Node                | |
-|  32   | Memory Range Descriptor                   | |
-|  33   | Continuous Performance Control Info       | Move to Arch Common NS |
-|  34   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
-|  35   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
-|  36   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
-|  37   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
-|  38   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
-|  39   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
-|  40   | Embedded Trace Extension/Module Info      | |
-|  41   | P-State Dependency (PSD) Info             | Move to Arch Common NS |
+|  11   | ITS Group                                 | |
+|  12   | Named Component                           | |
+|  13   | Root Complex                              | |
+|  14   | SMMUv1 or SMMUv2                          | |
+|  15   | SMMUv3                                    | |
+|  16   | PMCG                                      | |
+|  17   | GIC ITS Identifier Array                  | |
+|  18   | ID Mapping Array                          | |
+|  19   | SMMU Interrupt Array                      | |
+|  20   | Processor Hierarchy Info                  | Move to Arch Common NS |
+|  21   | Cache Info                                | Move to Arch Common NS |
+|  22   | Memory Affinity Info                      | Move to Arch Common NS |
+|  23   | Device Handle Acpi                        | Move to Arch Common NS |
+|  24   | Device Handle PCI                         | Move to Arch Common NS |
+|  25   | Generic Initiator Affinity Info           | Move to Arch Common NS |
+|  26   | CMN 600 Info                              | |
+|  27   | Low Power Idle State Info                 | Move to Arch Common NS |
+|  28   | PCI Address Map Info                      | Move to Arch Common NS |
+|  29   | PCI Interrupt Map Info                    | Move to Arch Common NS |
+|  30   | Reserved Memory Range Node                | |
+|  31   | Memory Range Descriptor                   | |
+|  32   | Continuous Performance Control Info       | Move to Arch Common NS |
+|  33   | Pcc Subspace Type 0 Info                  | Move to Arch Common NS |
+|  34   | Pcc Subspace Type 1 Info                  | Move to Arch Common NS |
+|  35   | Pcc Subspace Type 2 Info                  | Move to Arch Common NS |
+|  36   | Pcc Subspace Type 3 Info                  | Move to Arch Common NS |
+|  37   | Pcc Subspace Type 4 Info                  | Move to Arch Common NS |
+|  38   | Pcc Subspace Type 5 Info                  | Move to Arch Common NS |
+|  39   | Embedded Trace Extension/Module Info      | |
+|  40   | 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
 |   5   | Hypervisor Vendor Id              | |
 |   6   | Fixed feature flags for FADT      | |
 |   7   | CM Object Reference               | |
+|   8   | PCI Configuration Space Info      | |
 |  `*`  | All other values are reserved.    | |
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116977): https://edk2.groups.io/g/devel/message/116977
Mute This Topic: https://groups.io/mt/105067992/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first)
  2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
                   ` (15 preceding siblings ...)
  2024-03-21 15:53 ` [edk2-devel] [PATCH 16/16] DynamicTablesPkg & ArmVirtPkg: Move Pci Config Space Info PierreGondois
@ 2024-04-04 10:02 ` Sunil V L
  2024-06-07 14:19   ` Sami Mujawar
  16 siblings, 1 reply; 19+ messages in thread
From: Sunil V L @ 2024-04-04 10:02 UTC (permalink / raw)
  To: Pierre Gondois
  Cc: devel, Sami Mujawar, Yeo Reum Yun, AbdulLateef Attar,
	Jeshua Smith, Jeff Brasen, Girish Mahadevan, Leif Lindholm,
	Meenakshi Aggarwal

On Thu, Mar 21, 2024 at 04:53:03PM +0100, Pierre Gondois wrote:
> Following [1] and [2], other architectures than Arm aim to leverage
> the DynamicTablesPkg. The package uses namespaces/domains to split
> objects IDs. Currently most of the objects are part of the Arm
> namespace. Some objects are generic enough to be re-used by other
> architectures.
> 
> In [2], an Arch Common namespace Id was created and some objects
> present in the Arm namespace were identified to be moved to this
> Arch Common namespace.
> Continue the effort by moving these objects to this new namespace.
> 
> Some platforms rely on the DynamicTablesPkg and its namespace
> organization. Additional patches matching this change for the:
> - Juno
> - VExpress
> platforms will be submitted along this patchset.
> 
> As the actual patchset is more than 20 patches, split it in
> two parts to avoid being detected as a spam/fraudulous activity.
> 
> [1] Branch to reorg Dynamic Tables & support other arch
> https://edk2.groups.io/g/devel/topic/104054584#116308
> [2] DynamicTablesPkg: Arch Common Namespace
> https://edk2.groups.io/g/devel/message/116330
> 
> Cc: Sami Mujawar <sami.mujawar@arm.com>
> Cc: Pierre Gondois <Pierre.Gondois@arm.com>
> Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
> Cc: Sunil V L <sunilvl@ventanamicro.com>
> Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
> Cc: Jeshua Smith <jeshuas@nvidia.com>
> Cc: Jeff Brasen <jbrasen@nvidia.com>
> Cc: Girish Mahadevan <gmahadevan@nvidia.com>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>
> Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
> 
Hi Pierre, Sami,

Thank you very much for doing this!. The series look good to me.

Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117422): https://edk2.groups.io/g/devel/message/117422
Mute This Topic: https://groups.io/mt/105067964/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first)
  2024-04-04 10:02 ` [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) Sunil V L
@ 2024-06-07 14:19   ` Sami Mujawar
  0 siblings, 0 replies; 19+ messages in thread
From: Sami Mujawar @ 2024-06-07 14:19 UTC (permalink / raw)
  To: Sunil V L, Pierre Gondois
  Cc: devel@edk2.groups.io, Yeo Reum Yun, AbdulLateef Attar,
	Jeshua Smith, Jeff Brasen (jbrasen@nvidia.com), Girish Mahadevan,
	Leif Lindholm, Meenakshi Aggarwal (meenakshi.aggarwal@nxp.com)

[-- Attachment #1: Type: text/plain, Size: 3368 bytes --]

Hi All,

I have merged the [1] and [2] series at https://github.com/tianocore/edk2-staging/tree/dynamictables-reorg
I have also merged the Platform support series at https://github.com/tianocore/edk2-platforms/tree/devel-dynamictables-reorg.

Regards,

Sami Mujawar

From: Sunil V L <sunilvl@ventanamicro.com>
Date: Thursday, 4 April 2024 at 11:03
To: Pierre Gondois <Pierre.Gondois@arm.com>
Cc: devel@edk2.groups.io <devel@edk2.groups.io>, Sami Mujawar <Sami.Mujawar@arm.com>, Yeo Reum Yun <YeoReum.Yun@arm.com>, AbdulLateef Attar <AbdulLateef.Attar@amd.com>, Jeshua Smith <jeshuas@nvidia.com>, Jeff Brasen (jbrasen@nvidia.com) <jbrasen@nvidia.com>, Girish Mahadevan <gmahadevan@nvidia.com>, Leif Lindholm <quic_llindhol@quicinc.com>, Meenakshi Aggarwal (meenakshi.aggarwal@nxp.com) <meenakshi.aggarwal@nxp.com>
Subject: Re: [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first)
On Thu, Mar 21, 2024 at 04:53:03PM +0100, Pierre Gondois wrote:
> Following [1] and [2], other architectures than Arm aim to leverage
> the DynamicTablesPkg. The package uses namespaces/domains to split
> objects IDs. Currently most of the objects are part of the Arm
> namespace. Some objects are generic enough to be re-used by other
> architectures.
>
> In [2], an Arch Common namespace Id was created and some objects
> present in the Arm namespace were identified to be moved to this
> Arch Common namespace.
> Continue the effort by moving these objects to this new namespace.
>
> Some platforms rely on the DynamicTablesPkg and its namespace
> organization. Additional patches matching this change for the:
> - Juno
> - VExpress
> platforms will be submitted along this patchset.
>
> As the actual patchset is more than 20 patches, split it in
> two parts to avoid being detected as a spam/fraudulous activity.
>
> [1] Branch to reorg Dynamic Tables & support other arch
> https://edk2.groups.io/g/devel/topic/104054584#116308
> [2] DynamicTablesPkg: Arch Common Namespace
> https://edk2.groups.io/g/devel/message/116330
>
> Cc: Sami Mujawar <sami.mujawar@arm.com>
> Cc: Pierre Gondois <Pierre.Gondois@arm.com>
> Cc: Yeo Reum Yun <YeoReum.Yun@arm.com>
> Cc: Sunil V L <sunilvl@ventanamicro.com>
> Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com>
> Cc: Jeshua Smith <jeshuas@nvidia.com>
> Cc: Jeff Brasen <jbrasen@nvidia.com>
> Cc: Girish Mahadevan <gmahadevan@nvidia.com>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>
> Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
>
Hi Pierre, Sami,

Thank you very much for doing this!. The series look good to me.

Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#119515): https://edk2.groups.io/g/devel/message/119515
Mute This Topic: https://groups.io/mt/105067964/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



[-- Attachment #2: Type: text/html, Size: 7578 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2024-06-07 14:19 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-21 15:53 [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 01/16] DynamicTablesPkg/SsdtCpuTopology: Update function's parameter description PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 02/16] DynamicTablesPkg: Replace ProcNodeIdInfo with EArmObjReserved29 PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 03/16] DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 04/16] DynamicTablesPkg: Introduce an Arch Common Namespace header file PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 05/16] DynamicTablesPkg: Add support for ArchCommon objects in CmObjParser PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 06/16] DynamicTablesPkg: TokenFixer: Return Non Arm NS objs as unsupported PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 07/16] DynamicTablesPkg: Update DynamicPlatRepo for Arch Common namespace PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 08/16] DynamicTablesPkg: Update documentation for CM_OBJECT_ID PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 09/16] DynamicTablesPkg: Drop Cpu Info object ID from Arm Namespace PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 10/16] DynamicTablesPkg: Drop Reserved29 " PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 11/16] ArmVirtPkg: Kvmtool: Update ConfigMgr to support ArchCommon PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 12/16] DynamicTablesPkg & ArmVirtPkg: Move Power Mgmt Profile Info Object PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 13/16] DynamicTablesPkg: Move Hypervisor Vendor Id to Arch Common PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 14/16] DynamicTablesPkg: Move FADT Fixed Features Flags " PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 15/16] DynamicTablesPkg: Move Cm Reference object " PierreGondois
2024-03-21 15:53 ` [edk2-devel] [PATCH 16/16] DynamicTablesPkg & ArmVirtPkg: Move Pci Config Space Info PierreGondois
2024-04-04 10:02 ` [edk2-devel] [PATCH 00/16] DynamicTablesPkg: Move objects to Arch Common NameSpace (first) Sunil V L
2024-06-07 14:19   ` Sami Mujawar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox