From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 02AF67803CC for ; Thu, 21 Mar 2024 16:00:48 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Dn8jGLgZIQ+cAvppUZm0oiHtl1iJ7HWBeUG3VIb8aIs=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1711036847; v=1; b=cTfjCIr9UmzdxoOPk6afHpfhDDrdYtkEJxU3VUiBLXPnZGUzKM9prrESPld7i+1HQOt9CSYt nIhjFR5pFsJj2HBRD/pyDBHRgHeIb/bxfLqXMbrOdYOGWvj37rV+o2gbPm+r7RbQHfA6HnbVezv B8T01SfapqUxTfiM9YofgE/WGdFe5AxtmGz+oHpZQVsDg/7qe4nkO8rGW3Kl11s4cmOrk6/CB2S FpW/OD6AUSDBBhauX8vF7LaZbuwvEkcdcyKX0+2WW1BTDdfbLmetwWBK438lW9Lx+elubKJI6A/ esws3Gcqbz9vK/W/l4CnhQ0hUwbyHbB3kq+V9f1s9x5jw== X-Received: by 127.0.0.2 with SMTP id 9Io0YY7687511xK1hukPwIDY; Thu, 21 Mar 2024 09:00:47 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.620.1711036847015099016 for ; Thu, 21 Mar 2024 09:00:47 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0D6D81007; Thu, 21 Mar 2024 09:01:21 -0700 (PDT) X-Received: from e126645.nice.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 241C03F67D; Thu, 21 Mar 2024 09:00:43 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io 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 Subject: [edk2-devel] [PATCH 10/19] DynamicTablesPkg: Move Processor hierarchy info to Arch Common Date: Thu, 21 Mar 2024 16:59:15 +0100 Message-Id: <20240321155924.707272-11-pierre.gondois@arm.com> In-Reply-To: <20240321155924.707272-1-pierre.gondois@arm.com> References: <20240321155924.707272-1-pierre.gondois@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Thu, 21 Mar 2024 09:00:47 -0700 Reply-To: devel@edk2.groups.io,pierre.gondois@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: JbgTmbNt65owGLybZFrFP9qxx7686176AA= Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=cTfjCIr9; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io From: Sami Mujawar Move the Processor hierarchy info 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 - ConfigurationManagerObjectParser - Dynamic Plat Repo TokenFixer map. Cc: Pierre Gondois Cc: Yeo Reum Yun Cc: AbdulLateef Attar Cc: Jeshua Smith Cc: Jeff Brasen Cc: Girish Mahadevan Cc: Leif Lindholm Cc: Meenakshi Aggarwal Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois --- .../Include/ArchCommonNameSpaceObjects.h | 42 +++++++++++ .../Include/ArmNameSpaceObjects.h | 74 ++++--------------- .../Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c | 38 +++++----- .../SsdtCpuTopologyGenerator.c | 67 +++++++++-------- .../SsdtCpuTopologyGenerator.h | 18 ++--- .../DynamicPlatRepoLib/CmObjectTokenFixer.c | 1 - .../ConfigurationManagerObjectParser.c | 6 +- DynamicTablesPkg/Readme.md | 29 ++++---- 8 files changed, 137 insertions(+), 138 deletions(-) diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/Dynami= cTablesPkg/Include/ArchCommonNameSpaceObjects.h index 681e84501960..872f2eebb7c3 100644 --- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h @@ -36,6 +36,7 @@ typedef enum ArchCommonObjectID { EArchCommonObjDeviceHandlePci, ///< 13 - Device Handle Pc= i=0D EArchCommonObjGenericInitiatorAffinityInfo, ///< 14 - Generic Initiato= r Affinity=0D EArchCommonObjLpiInfo, ///< 15 - Lpi Info=0D + EArchCommonObjProcHierarchyInfo, ///< 16 - Processor Hierar= chy Info=0D EArchCommonObjMax=0D } EARCH_COMMON_OBJECT_ID;=0D =0D @@ -359,6 +360,47 @@ typedef struct CmArchCommonLpiInfo { CHAR8 StateName[16];=0D } CM_ARCH_COMMON_LPI_INFO;=0D =0D +/** A structure that describes the Processor Hierarchy Node (Type 0) in PP= TT=0D +=0D + ID: EArchCommonObjProcHierarchyInfo=0D +*/=0D +typedef struct CmArchCommonProcHierarchyInfo {=0D + /// A unique token used to identify this object=0D + CM_OBJECT_TOKEN Token;=0D + /// Processor structure flags (ACPI 6.3 - January 2019, PPTT, Table 5-15= 5)=0D + UINT32 Flags;=0D + /// Token for the parent CM_ARCH_COMMON_PROC_HIERARCHY_INFO object in th= e processor=0D + /// topology. A value of CM_NULL_TOKEN means this node has no parent.=0D + CM_OBJECT_TOKEN ParentToken;=0D + /// Token of the associated object which has the corresponding ACPI Proc= essor=0D + /// ID, e.g. for Arm systems this is a reference to CM_ARM_GICC_INFO obj= ect.=0D + /// A value of CM_NULL_TOKEN means this node represents a group of assoc= iated=0D + /// processors and it does not have an associated CPU interface.=0D + CM_OBJECT_TOKEN AcpiIdObjectToken;=0D + /// Number of resources private to this Node=0D + UINT32 NoOfPrivateResources;=0D + /// Token of the array which contains references to the resources privat= e to=0D + /// this CM_ARCH_COMMON_PROC_HIERARCHY_INFO instance. This field is igno= red if=0D + /// the NoOfPrivateResources is 0, in which case it is recommended to se= t=0D + /// this field to CM_NULL_TOKEN.=0D + CM_OBJECT_TOKEN PrivateResourcesArrayToken;=0D + /// Optional field: Reference Token for the Lpi state of this processor.= =0D + /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure, itself referen= cing=0D + /// CM_ARCH_COMMON_LPI_INFO objects.=0D + CM_OBJECT_TOKEN LpiToken;=0D + /// Set to TRUE if UID should override index for name and _UID=0D + /// for processor container nodes and name of processors.=0D + /// This should be consistently set for containers or processors to avoi= d=0D + /// duplicate values=0D + BOOLEAN OverrideNameUidEnabled;=0D + /// If OverrideNameUidEnabled is TRUE then this value will be used for n= ame of=0D + /// processors and processor containers.=0D + UINT16 OverrideName;=0D + /// If OverrideNameUidEnabled is TRUE then this value will be used for=0D + /// the UID of processor containers.=0D + UINT32 OverrideUid;=0D +} CM_ARCH_COMMON_PROC_HIERARCHY_INFO;=0D +=0D #pragma pack()=0D =0D #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_=0D diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTables= Pkg/Include/ArmNameSpaceObjects.h index da50f581fa25..4e9f0096ba60 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -48,20 +48,19 @@ typedef enum ArmObjectID { EArmObjGicItsIdentifierArray, ///< 17 - G= IC ITS Identifier Array=0D EArmObjIdMappingArray, ///< 18 - I= D Mapping Array=0D EArmObjSmmuInterruptArray, ///< 19 - S= MMU Interrupt Array=0D - EArmObjProcHierarchyInfo, ///< 20 - P= rocessor Hierarchy Info=0D - EArmObjCacheInfo, ///< 21 - C= ache Info=0D - EArmObjCmn600Info, ///< 22 - C= MN-600 Info=0D - EArmObjRmr, ///< 23 - R= eserved Memory Range Node=0D - EArmObjMemoryRangeDescriptor, ///< 24 - M= emory Range Descriptor=0D - EArmObjCpcInfo, ///< 25 - C= ontinuous Performance Control Info=0D - EArmObjPccSubspaceType0Info, ///< 26 - P= cc Subspace Type 0 Info=0D - EArmObjPccSubspaceType1Info, ///< 27 - P= cc Subspace Type 2 Info=0D - EArmObjPccSubspaceType2Info, ///< 28 - P= cc Subspace Type 2 Info=0D - EArmObjPccSubspaceType3Info, ///< 29 - P= cc Subspace Type 3 Info=0D - EArmObjPccSubspaceType4Info, ///< 30 - P= cc Subspace Type 4 Info=0D - EArmObjPccSubspaceType5Info, ///< 31 - P= cc Subspace Type 5 Info=0D - EArmObjEtInfo, ///< 32 - E= mbedded Trace Extension/Module Info=0D - EArmObjPsdInfo, ///< 33 - P= -State Dependency (PSD) Info=0D + EArmObjCacheInfo, ///< 20 - C= ache Info=0D + EArmObjCmn600Info, ///< 21 - C= MN-600 Info=0D + EArmObjRmr, ///< 22 - R= eserved Memory Range Node=0D + EArmObjMemoryRangeDescriptor, ///< 23 - M= emory Range Descriptor=0D + EArmObjCpcInfo, ///< 24 - C= ontinuous Performance Control Info=0D + EArmObjPccSubspaceType0Info, ///< 25 - P= cc Subspace Type 0 Info=0D + EArmObjPccSubspaceType1Info, ///< 26 - P= cc Subspace Type 2 Info=0D + EArmObjPccSubspaceType2Info, ///< 27 - P= cc Subspace Type 2 Info=0D + EArmObjPccSubspaceType3Info, ///< 28 - P= cc Subspace Type 3 Info=0D + EArmObjPccSubspaceType4Info, ///< 29 - P= cc Subspace Type 4 Info=0D + EArmObjPccSubspaceType5Info, ///< 30 - P= cc Subspace Type 5 Info=0D + EArmObjEtInfo, ///< 31 - E= mbedded Trace Extension/Module Info=0D + EArmObjPsdInfo, ///< 32 - P= -State Dependency (PSD) Info=0D EArmObjMax=0D } EARM_OBJECT_ID;=0D =0D @@ -645,47 +644,6 @@ typedef CM_ARCH_COMMON_GENERIC_INTERRUPT CM_ARM_SMMU_I= NTERRUPT; */=0D typedef CM_ARCH_COMMON_GENERIC_INTERRUPT CM_ARM_EXTENDED_INTERRUPT;=0D =0D -/** A structure that describes the Processor Hierarchy Node (Type 0) in PP= TT=0D -=0D - ID: EArmObjProcHierarchyInfo=0D -*/=0D -typedef struct CmArmProcHierarchyInfo {=0D - /// A unique token used to identify this object=0D - CM_OBJECT_TOKEN Token;=0D - /// Processor structure flags (ACPI 6.3 - January 2019, PPTT, Table 5-15= 5)=0D - UINT32 Flags;=0D - /// Token for the parent CM_ARM_PROC_HIERARCHY_INFO object in the proces= sor=0D - /// topology. A value of CM_NULL_TOKEN means this node has no parent.=0D - CM_OBJECT_TOKEN ParentToken;=0D - /// Token of the associated object which has the corresponding ACPI Proc= essor=0D - /// ID, e.g. for Arm systems this is a reference to CM_ARM_GICC_INFO obj= ect.=0D - /// A value of CM_NULL_TOKEN means this node represents a group of assoc= iated=0D - /// processors and it does not have an associated CPU interface.=0D - CM_OBJECT_TOKEN AcpiIdObjectToken;=0D - /// Number of resources private to this Node=0D - UINT32 NoOfPrivateResources;=0D - /// Token of the array which contains references to the resources privat= e to=0D - /// this CM_ARM_PROC_HIERARCHY_INFO instance. This field is ignored if=0D - /// the NoOfPrivateResources is 0, in which case it is recommended to se= t=0D - /// this field to CM_NULL_TOKEN.=0D - CM_OBJECT_TOKEN PrivateResourcesArrayToken;=0D - /// Optional field: Reference Token for the Lpi state of this processor.= =0D - /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure, itself referen= cing=0D - /// CM_ARCH_COMMON_LPI_INFO objects.=0D - CM_OBJECT_TOKEN LpiToken;=0D - /// Set to TRUE if UID should override index for name and _UID=0D - /// for processor container nodes and name of processors.=0D - /// This should be consistently set for containers or processors to avoi= d=0D - /// duplicate values=0D - BOOLEAN OverrideNameUidEnabled;=0D - /// If OverrideNameUidEnabled is TRUE then this value will be used for n= ame of=0D - /// processors and processor containers.=0D - UINT16 OverrideName;=0D - /// If OverrideNameUidEnabled is TRUE then this value will be used for=0D - /// the UID of processor containers.=0D - UINT32 OverrideUid;=0D -} CM_ARM_PROC_HIERARCHY_INFO;=0D -=0D /** A structure that describes the Cache Type Structure (Type 1) in PPTT=0D =0D ID: EArmObjCacheInfo=0D @@ -694,9 +652,9 @@ typedef struct CmArmCacheInfo { /// A unique token used to identify this object=0D CM_OBJECT_TOKEN Token;=0D /// Reference token for the next level of cache that is private to the s= ame=0D - /// CM_ARM_PROC_HIERARCHY_INFO instance. A value of CM_NULL_TOKEN means = this=0D - /// entry represents the last cache level appropriate to the processor=0D - /// hierarchy node structures using this entry.=0D + /// CM_ARCH_COMMON_PROC_HIERARCHY_INFO instance. A value of CM_NULL_TOKE= N=0D + /// means this entry represents the last cache level appropriate to the= =0D + /// processor hierarchy node structures using this entry.=0D CM_OBJECT_TOKEN NextLevelOfCacheToken;=0D /// Size of the cache in bytes=0D UINT32 Size;=0D diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator= .c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c index f2f2a834116e..9485de707046 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiPpttLibArm/PpttGenerator.c @@ -32,7 +32,7 @@ =0D Requirements:=0D The following Configuration Manager Object(s) are used by this Generat= or:=0D - - EArmObjProcHierarchyInfo (REQUIRED)=0D + - EArchCommonObjProcHierarchyInfo (REQUIRED)=0D - EArmObjCacheInfo=0D - EArchCommonObjCmRef=0D - EArmObjGicCInfo (REQUIRED)=0D @@ -43,9 +43,9 @@ information from the Configuration Manager.=0D */=0D GET_OBJECT_LIST (=0D - EObjNameSpaceArm,=0D - EArmObjProcHierarchyInfo,=0D - CM_ARM_PROC_HIERARCHY_INFO=0D + EObjNameSpaceArchCommon,=0D + EArchCommonObjProcHierarchyInfo,=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D );=0D =0D /**=0D @@ -90,7 +90,7 @@ GET_OBJECT_LIST ( STATIC=0D UINT32=0D GetProcHierarchyNodeSize (=0D - IN CONST CM_ARM_PROC_HIERARCHY_INFO *Node=0D + IN CONST CM_ARCH_COMMON_PROC_HIERARCHY_INFO *Node=0D )=0D {=0D ASSERT (Node !=3D NULL);=0D @@ -107,7 +107,7 @@ GetProcHierarchyNodeSize ( GET_SIZE_OF_PPTT_STRUCTS (=0D ProcHierarchyNodes,=0D GetProcHierarchyNodeSize (NodesToIndex),=0D - CM_ARM_PROC_HIERARCHY_INFO=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D );=0D =0D /**=0D @@ -411,10 +411,10 @@ IsAcpiIdObjectTokenEqual ( IN UINTN Index2=0D )=0D {=0D - PPTT_NODE_INDEXER *IndexedObject1;=0D - PPTT_NODE_INDEXER *IndexedObject2;=0D - CM_ARM_PROC_HIERARCHY_INFO *ProcNode1;=0D - CM_ARM_PROC_HIERARCHY_INFO *ProcNode2;=0D + PPTT_NODE_INDEXER *IndexedObject1;=0D + PPTT_NODE_INDEXER *IndexedObject2;=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcNode1;=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcNode2;=0D =0D ASSERT (=0D (Object1 !=3D NULL) &&=0D @@ -423,8 +423,8 @@ IsAcpiIdObjectTokenEqual ( =0D IndexedObject1 =3D (PPTT_NODE_INDEXER *)Object1;=0D IndexedObject2 =3D (PPTT_NODE_INDEXER *)Object2;=0D - ProcNode1 =3D (CM_ARM_PROC_HIERARCHY_INFO *)IndexedObject1->Object;= =0D - ProcNode2 =3D (CM_ARM_PROC_HIERARCHY_INFO *)IndexedObject2->Object;= =0D + ProcNode1 =3D (CM_ARCH_COMMON_PROC_HIERARCHY_INFO *)IndexedObject1-= >Object;=0D + ProcNode2 =3D (CM_ARCH_COMMON_PROC_HIERARCHY_INFO *)IndexedObject2-= >Object;=0D =0D if (IS_ACPI_PROC_ID_VALID (ProcNode1) &&=0D IS_ACPI_PROC_ID_VALID (ProcNode2) &&=0D @@ -482,8 +482,8 @@ AddProcHierarchyNodes ( UINT32 GicCInfoCount;=0D UINT32 UniqueGicCRefCount;=0D =0D - PPTT_NODE_INDEXER *PpttNodeFound;=0D - CM_ARM_PROC_HIERARCHY_INFO *ProcInfoNode;=0D + PPTT_NODE_INDEXER *PpttNodeFound;=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcInfoNode;=0D =0D PPTT_NODE_INDEXER *ProcNodeIterator;=0D UINT32 NodeCount;=0D @@ -517,7 +517,7 @@ AddProcHierarchyNodes ( UniqueGicCRefCount =3D 0;=0D =0D while (NodeCount-- !=3D 0) {=0D - ProcInfoNode =3D (CM_ARM_PROC_HIERARCHY_INFO *)ProcNodeIterator->Objec= t;=0D + ProcInfoNode =3D (CM_ARCH_COMMON_PROC_HIERARCHY_INFO *)ProcNodeIterato= r->Object;=0D =0D // Check if the private resource count is within the size limit=0D // imposed on the Processor Hierarchy node by the specification.=0D @@ -577,7 +577,7 @@ AddProcHierarchyNodes ( =0D // Test if the reference is to a 'leaf' node=0D if (IS_PROC_NODE_LEAF (=0D - ((CM_ARM_PROC_HIERARCHY_INFO *)PpttNodeFound->Object)=0D + ((CM_ARCH_COMMON_PROC_HIERARCHY_INFO *)PpttNodeFound->Object)= =0D ))=0D {=0D Status =3D EFI_INVALID_PARAMETER;=0D @@ -1074,8 +1074,8 @@ BuildPpttTable ( UINT32 ProcHierarchyNodeOffset;=0D UINT32 CacheStructOffset;=0D =0D - CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;=0D - CM_ARM_CACHE_INFO *CacheStructList;=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;=0D + CM_ARM_CACHE_INFO *CacheStructList;=0D =0D ACPI_PPTT_GENERATOR *Generator;=0D =0D @@ -1112,7 +1112,7 @@ BuildPpttTable ( =0D // Get the processor hierarchy info and update the processor topology=0D // structure count with Processor Hierarchy Nodes (Type 0)=0D - Status =3D GetEArmObjProcHierarchyInfo (=0D + Status =3D GetEArchCommonObjProcHierarchyInfo (=0D CfgMgrProtocol,=0D CM_NULL_TOKEN,=0D &ProcHierarchyNodeList,=0D diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/Ss= dtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTop= ologyLibArm/SsdtCpuTopologyGenerator.c index 5a5bfefd894e..1bb90e114b16 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c @@ -38,7 +38,7 @@ Requirements: The following Configuration Manager Object(s) are required by=0D this Generator:=0D - EArmObjGicCInfo=0D - - EArmObjProcHierarchyInfo (OPTIONAL) along with=0D + - EArchCommonObjProcHierarchyInfo (OPTIONAL) along with=0D - EArchCommonObjCmRef (OPTIONAL)=0D - EArchCommonObjLpiInfo (OPTIONAL)=0D - GetEArmObjEtInfo (OPTIONAL)=0D @@ -59,9 +59,9 @@ GET_OBJECT_LIST ( information from the Configuration Manager.=0D */=0D GET_OBJECT_LIST (=0D - EObjNameSpaceArm,=0D - EArmObjProcHierarchyInfo,=0D - CM_ARM_PROC_HIERARCHY_INFO=0D + EObjNameSpaceArchCommon,=0D + EArchCommonObjProcHierarchyInfo,=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D );=0D =0D /**=0D @@ -116,12 +116,12 @@ GET_OBJECT_LIST ( =0D /** Initialize the TokenTable.=0D =0D - One entry should be allocated for each CM_ARM_PROC_HIERARCHY_INFO=0D + One entry should be allocated for each CM_ARCH_COMMON_PROC_HIERARCHY_INF= O=0D structure of the platform. The TokenTable allows to have a mapping:=0D Index <-> CM_OBJECT_TOKEN (to CM_ARCH_COMMON_LPI_INFO structures).=0D =0D There will always be less sets of Lpi states (CM_ARCH_COMMON_OBJ_REF)=0D - than the number of cpus/clusters (CM_ARM_PROC_HIERARCHY_INFO).=0D + than the number of cpus/clusters (CM_ARCH_COMMON_PROC_HIERARCHY_INFO).=0D =0D @param [in] Generator The SSDT Cpu Topology generator.=0D @param [in] Count Number of entries to allocate in the TokenTable.= =0D @@ -585,8 +585,8 @@ CreateAmlEtNode ( }=0D =0D @param [in] Generator The SSDT Cpu Topology generator.=0D - @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO describin= g=0D - the Cpu.=0D + @param [in] ProcHierarchyNodeInfo CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D + describing the Cpu.=0D @param [in] Node Node to which the _LPI method is=0D attached. Can represent a Cpu or a=0D Cluster.=0D @@ -599,9 +599,9 @@ STATIC EFI_STATUS=0D EFIAPI=0D CreateAmlLpiMethod (=0D - IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,=0D - IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeInfo,=0D - IN AML_OBJECT_NODE_HANDLE *Node=0D + IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,=0D + IN CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcHierarchyNodeInfo,=0D + IN AML_OBJECT_NODE_HANDLE *Node=0D )=0D {=0D EFI_STATUS Status;=0D @@ -860,7 +860,7 @@ CreateAmlCpu ( return Status;=0D }=0D =0D -/** Create a Cpu in the AML namespace from a CM_ARM_PROC_HIERARCHY_INFO=0D +/** Create a Cpu in the AML namespace from a CM_ARCH_COMMON_PROC_HIERARCHY= _INFO=0D CM object.=0D =0D @param [in] Generator The SSDT Cpu Topology generator.=0D @@ -868,8 +868,8 @@ CreateAmlCpu ( Protocol Interface.=0D @param [in] ParentNode Parent node to attach the Cpu node t= o.=0D @param [in] CpuName Value used to generate the node name= .=0D - @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO describin= g=0D - the Cpu.=0D + @param [in] ProcHierarchyNodeInfo CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D + describing the Cpu.=0D =0D @retval EFI_SUCCESS Success.=0D @retval EFI_INVALID_PARAMETER Invalid parameter.=0D @@ -883,7 +883,7 @@ CreateAmlCpuFromProcHierarchy ( IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,= =0D IN AML_NODE_HANDLE ParentNode,=0D IN UINT32 CpuName,=0D - IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNo= deInfo=0D + IN CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcHierarchyNo= deInfo=0D )=0D {=0D EFI_STATUS Status;=0D @@ -914,7 +914,7 @@ CreateAmlCpuFromProcHierarchy ( }=0D =0D // If a set of Lpi states is associated with the=0D - // CM_ARM_PROC_HIERARCHY_INFO, create an _LPI method returning them.=0D + // CM_ARCH_COMMON_PROC_HIERARCHY_INFO, create an _LPI method returning t= hem.=0D if (ProcHierarchyNodeInfo->LpiToken !=3D CM_NULL_TOKEN) {=0D Status =3D CreateAmlLpiMethod (Generator, ProcHierarchyNodeInfo, CpuNo= de);=0D if (EFI_ERROR (Status)) {=0D @@ -961,7 +961,7 @@ CreateAmlCpuFromProcHierarchy ( =0D /** Create a Processor Container in the AML namespace.=0D =0D - Any CM_ARM_PROC_HIERARCHY_INFO object with the following flags is=0D + Any CM_ARCH_COMMON_PROC_HIERARCHY_INFO object with the following flags i= s=0D assumed to be a processor container:=0D - EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL=0D - EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID=0D @@ -979,8 +979,8 @@ CreateAmlCpuFromProcHierarchy ( Protocol Interface.=0D @param [in] ParentNode Parent node to attach the processor= =0D container node to.=0D - @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO object us= ed=0D - to create the node.=0D + @param [in] ProcHierarchyNodeInfo CM_ARCH_COMMON_PROC_HIERARCHY_INFO o= bject=0D + used to create the node.=0D @param [in] ProcContainerName Name of the processor container.=0D @param [in] ProcContainerUid Uid of the processor container.=0D @param [out] ProcContainerNodePtr If success, contains the created pro= cessor=0D @@ -997,7 +997,7 @@ CreateAmlProcessorContainer ( IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,=0D IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,= =0D IN AML_NODE_HANDLE ParentNode,=0D - IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNo= deInfo,=0D + IN CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcHierarchyNo= deInfo,=0D IN UINT16 ProcContainerNam= e,=0D IN UINT32 ProcContainerUid= ,=0D OUT AML_OBJECT_NODE_HANDLE *ProcContainerNo= dePtr=0D @@ -1050,7 +1050,7 @@ CreateAmlProcessorContainer ( }=0D =0D // If a set of Lpi states are associated with the=0D - // CM_ARM_PROC_HIERARCHY_INFO, create an _LPI method returning them.=0D + // CM_ARCH_COMMON_PROC_HIERARCHY_INFO, create an _LPI method returning t= hem.=0D if (ProcHierarchyNodeInfo->LpiToken !=3D CM_NULL_TOKEN) {=0D Status =3D CreateAmlLpiMethod (=0D Generator,=0D @@ -1126,8 +1126,7 @@ CheckProcNode ( @param [in] Generator The SSDT Cpu Topology generator.=0D @param [in] CfgMgrProtocol Pointer to the Configuration Manager= =0D Protocol Interface.=0D - @param [in] NodeToken Token of the CM_ARM_PROC_HIERARCHY_I= NFO=0D - currently handled.=0D + @param [in] NodeToken Token of the CM_ARCH_COMMON_PROC_HIE= RARCHY_INFO currently handled.=0D @param [in] ParentNode Parent node to attach the created=0D node to.=0D @param [in,out] ProcContainerIndex Pointer to the current processor con= tainer=0D @@ -1167,7 +1166,7 @@ CreateAmlCpuTopologyTree ( ProcContainerName =3D 0;=0D =0D for (Index =3D 0; Index < Generator->ProcNodeCount; Index++) {=0D - // Find the children of the CM_ARM_PROC_HIERARCHY_INFO=0D + // Find the children of the CM_ARCH_COMMON_PROC_HIERARCHY_INFO=0D // currently being handled (i.e. ParentToken =3D=3D NodeToken).=0D if (Generator->ProcNodeList[Index].ParentToken =3D=3D NodeToken) {=0D // Only Cpus (leaf nodes in this tree) have a AcpiIdObjectToken.=0D @@ -1270,8 +1269,8 @@ CreateAmlCpuTopologyTree ( return EFI_SUCCESS;=0D }=0D =0D -/** Create the processor hierarchy AML tree from CM_ARM_PROC_HIERARCHY_INF= O=0D - CM objects.=0D +/** Create the processor hierarchy AML tree from=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO CM objects.=0D =0D @param [in] Generator The SSDT Cpu Topology generator.=0D @param [in] CfgMgrProtocol Pointer to the Configuration Manager=0D @@ -1457,12 +1456,12 @@ BuildSsdtCpuTopologyTable ( OUT EFI_ACPI_DESCRIPTION_HEADER **CONST Table=0D )=0D {=0D - EFI_STATUS Status;=0D - AML_ROOT_NODE_HANDLE RootNode;=0D - AML_OBJECT_NODE_HANDLE ScopeNode;=0D - CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;=0D - UINT32 ProcHierarchyNodeCount;=0D - ACPI_CPU_TOPOLOGY_GENERATOR *Generator;=0D + EFI_STATUS Status;=0D + AML_ROOT_NODE_HANDLE RootNode;=0D + AML_OBJECT_NODE_HANDLE ScopeNode;=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;=0D + UINT32 ProcHierarchyNodeCount;=0D + ACPI_CPU_TOPOLOGY_GENERATOR *Generator;=0D =0D ASSERT (This !=3D NULL);=0D ASSERT (AcpiTableInfo !=3D NULL);=0D @@ -1490,7 +1489,7 @@ BuildSsdtCpuTopologyTable ( =0D // Get the processor hierarchy info and update the processor topology=0D // structure count with Processor Hierarchy Nodes (Type 0)=0D - Status =3D GetEArmObjProcHierarchyInfo (=0D + Status =3D GetEArchCommonObjProcHierarchyInfo (=0D CfgMgrProtocol,=0D CM_NULL_TOKEN,=0D &ProcHierarchyNodeList,=0D @@ -1514,7 +1513,7 @@ BuildSsdtCpuTopologyTable ( goto exit_handler;=0D }=0D } else {=0D - // Generate the topology from CM_ARM_PROC_HIERARCHY_INFO objects.=0D + // Generate the topology from CM_ARCH_COMMON_PROC_HIERARCHY_INFO objec= ts.=0D Generator->ProcNodeList =3D ProcHierarchyNodeList;=0D Generator->ProcNodeCount =3D ProcHierarchyNodeCount;=0D =0D diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/Ss= dtCpuTopologyGenerator.h b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTop= ologyLibArm/SsdtCpuTopologyGenerator.h index 889711789fa0..6fb44c7e5887 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.h +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.h @@ -69,12 +69,12 @@ =0D /** A structure used to handle the Lpi structures referencing.=0D =0D - A CM_ARM_PROC_HIERARCHY_INFO structure references a CM_ARCH_COMMON_OBJ_R= EF.=0D + A CM_ARCH_COMMON_PROC_HIERARCHY_INFO structure references a CM_ARCH_COMM= ON_OBJ_REF.=0D This CM_ARCH_COMMON_OBJ_REF references CM_ARCH_COMMON_LPI_INFO structure= s.=0D =0D Example:=0D (Cpu0) (Cpu1)=0D - CM_ARM_PROC_HIERARCHY_INFO CM_ARM_PROC_HIERARCHY_INFO=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO CM_ARCH_COMMON_PROC_HIERARCHY_I= NFO=0D | |=0D +----------------------------------------=0D |=0D @@ -88,7 +88,7 @@ (A first Lpi state) (A second Lpi state)=0D CM_ARCH_COMMON_LPI_INFO[0] CM_ARCH_COMMON_LPI_INF= O[1]=0D =0D - Here, Cpu0 and Cpu1 have the same Lpi states. Both CM_ARM_PROC_HIERARCHY= _INFO=0D + Here, Cpu0 and Cpu1 have the same Lpi states. Both CM_ARCH_COMMON_PROC_H= IERARCHY_INFO=0D structures reference the same CM_ARCH_COMMON_OBJ_REF. An entry is create= d in the=0D TokenTable such as:=0D 0 <-> CM_ARCH_COMMON_OBJ_REF=0D @@ -130,16 +130,16 @@ typedef struct TokenTable { */=0D typedef struct AcpiCpuTopologyGenerator {=0D /// ACPI Table generator header=0D - ACPI_TABLE_GENERATOR Header;=0D + ACPI_TABLE_GENERATOR Header;=0D =0D // Private fields are defined from here.=0D =0D /// Private object used to handle token referencing.=0D - TOKEN_TABLE TokenTable;=0D - /// List of CM_ARM_PROC_HIERARCHY_INFO CM objects.=0D - CM_ARM_PROC_HIERARCHY_INFO *ProcNodeList;=0D - /// Count of CM_ARM_PROC_HIERARCHY_INFO CM objects.=0D - UINT32 ProcNodeCount;=0D + TOKEN_TABLE TokenTable;=0D + /// List of CM_ARCH_COMMON_PROC_HIERARCHY_INFO CM objects.=0D + CM_ARCH_COMMON_PROC_HIERARCHY_INFO *ProcNodeList;=0D + /// Count of CM_ARCH_COMMON_PROC_HIERARCHY_INFO CM objects.=0D + UINT32 ProcNodeCount;=0D } ACPI_CPU_TOPOLOGY_GENERATOR;=0D =0D #pragma pack()=0D diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTok= enFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectToke= nFixer.c index de3338d10884..fd2a321bfb55 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c @@ -163,7 +163,6 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] =3D { NULL, ///< 17 - GIC ITS Identifier Array=0D NULL, ///< 18 - ID Mapping Array=0D NULL, ///< 19 - SMMU Interrupt Array=0D - TokenFixerNotImplemented, ///< 20 - Processor Hierarchy Info=0D TokenFixerNotImplemented, ///< 21 - Cache Info=0D NULL, ///< 22 - CMN-600 Info=0D NULL, ///< 23 - Reserved Memory Range Node=0D diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationMa= nagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/Config= urationManagerObjectParser.c index 17388b183554..c48e29e5053d 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c @@ -322,9 +322,9 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonGenericInterrup= tParser[] =3D { { "Flags", 4, "0x%x", NULL }=0D };=0D =0D -/** A parser for EArmObjProcHierarchyInfo.=0D +/** A parser for EArchCommonObjProcHierarchyInfo.=0D */=0D -STATIC CONST CM_OBJ_PARSER CmArmProcHierarchyInfoParser[] =3D {=0D +STATIC CONST CM_OBJ_PARSER CmArchCommonProcHierarchyInfoParser[] =3D {=0D { "Token", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }= ,=0D { "Flags", 4, "0x%x", NULL }= ,=0D { "ParentToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }= ,=0D @@ -686,6 +686,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceOb= jectParser[] =3D { CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandlePci, CmArchC= ommonDeviceHandlePciParser),=0D CM_PARSER_ADD_OBJECT (EArchCommonObjGenericInitiatorAffinityInfo,CmArchC= ommonGenericInitiatorAffinityInfoParser),=0D CM_PARSER_ADD_OBJECT (EArchCommonObjLpiInfo, CmArchC= ommonLpiInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArchCommonObjProcHierarchyInfo, CmArchC= ommonProcHierarchyInfoParser),=0D CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)=0D };=0D =0D @@ -712,7 +713,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectPar= ser[] =3D { CM_PARSER_ADD_OBJECT (EArmObjGicItsIdentifierArray, CmArmGicItsIden= tifierParser),=0D CM_PARSER_ADD_OBJECT (EArmObjIdMappingArray, CmArmIdMappingP= arser),=0D CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray, CmArchCommonGen= ericInterruptParser),=0D - CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo, CmArmProcHierar= chyInfoParser),=0D CM_PARSER_ADD_OBJECT (EArmObjCacheInfo, CmArmCacheInfoP= arser),=0D CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600Info= Parser),=0D CM_PARSER_ADD_OBJECT (EArmObjRmr, CmArmRmrInfoPar= ser),=0D diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md index 055836a7e31e..e0af0fd336bb 100644 --- a/DynamicTablesPkg/Readme.md +++ b/DynamicTablesPkg/Readme.md @@ -460,20 +460,19 @@ The CM_OBJECT_ID type is used to identify the Configu= ration Manager | 17 | GIC ITS Identifier Array | |=0D | 18 | ID Mapping Array | |=0D | 19 | SMMU Interrupt Array | |=0D -| 20 | Processor Hierarchy Info | Move to Arch Common = NS |=0D -| 21 | Cache Info | Move to Arch Common = NS |=0D -| 22 | CMN 600 Info | |=0D -| 23 | Reserved Memory Range Node | |=0D -| 24 | Memory Range Descriptor | |=0D -| 25 | Continuous Performance Control Info | Move to Arch Common = NS |=0D -| 26 | Pcc Subspace Type 0 Info | Move to Arch Common = NS |=0D -| 27 | Pcc Subspace Type 1 Info | Move to Arch Common = NS |=0D -| 28 | Pcc Subspace Type 2 Info | Move to Arch Common = NS |=0D -| 29 | Pcc Subspace Type 3 Info | Move to Arch Common = NS |=0D -| 30 | Pcc Subspace Type 4 Info | Move to Arch Common = NS |=0D -| 31 | Pcc Subspace Type 5 Info | Move to Arch Common = NS |=0D -| 32 | Embedded Trace Extension/Module Info | |=0D -| 33 | P-State Dependency (PSD) Info | Move to Arch Common = NS |=0D +| 20 | Cache Info | Move to Arch Common = NS |=0D +| 21 | CMN 600 Info | |=0D +| 22 | Reserved Memory Range Node | |=0D +| 23 | Memory Range Descriptor | |=0D +| 24 | Continuous Performance Control Info | Move to Arch Common = NS |=0D +| 25 | Pcc Subspace Type 0 Info | Move to Arch Common = NS |=0D +| 26 | Pcc Subspace Type 1 Info | Move to Arch Common = NS |=0D +| 27 | Pcc Subspace Type 2 Info | Move to Arch Common = NS |=0D +| 28 | Pcc Subspace Type 3 Info | Move to Arch Common = NS |=0D +| 29 | Pcc Subspace Type 4 Info | Move to Arch Common = NS |=0D +| 30 | Pcc Subspace Type 5 Info | Move to Arch Common = NS |=0D +| 31 | Embedded Trace Extension/Module Info | |=0D +| 32 | P-State Dependency (PSD) Info | Move to Arch Common = NS |=0D | `*` | All other values are reserved. | |=0D =0D #### Object ID's in the Arch Common Namespace:=0D @@ -496,4 +495,6 @@ The CM_OBJECT_ID type is used to identify the Configura= tion Manager | 13 | Device Handle PCI | |=0D | 14 | Generic Initiator Affinity Info | |=0D | 15 | Low Power Idle State Info | |=0D +| 16 | Processor Hierarchy Info | |=0D | `*` | All other values are reserved. | |=0D +=0D --=20 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116988): https://edk2.groups.io/g/devel/message/116988 Mute This Topic: https://groups.io/mt/105068163/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-