From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.51]) by mx.groups.io with SMTP id smtpd.web09.74.1667837215695474007 for ; Mon, 07 Nov 2022 08:06:55 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=VW/Iau5q; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.223.51, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GZiaChawoIiAieScy/W15Gaq9w8QhqqVP0+vgZ8Pgj2AkTmWK9rt3MLRttf2dvwuh2n8xPrxDVsU97tE/3PONByFnYAGfghtpiIt0tJrMc9EccM16MNoqOAs341uzVm7IcgERRGnhzGwFhiBg+wqOOeO71sVjBE8HvFCGROyiAlBmch+DMUnubJsmHyjFGVy/paT+J2l0D3XzaQMSnVeXiH1nsSq2tjeniYygQOKYys/92efAFEyAIKvfIL15ugzRSgMPdtNuT7lHLxbHcYHkB6Ok3ST9NiTaIJsewY/AxEEqsV4Kamr/XKPVUX4ILXsoBrZl7Ri/mdwqoeDQO2NHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t3zAIU6YCZsnlqnVXVjSEkJ27DT1Wxfza3BYKPk3NEQ=; b=HEHoLZSxnT4dlg+h6SAr/SKv4Hn1YI7wgVtMtPbJU21YxKkFU93P6j0MGsSjN5oEitsxlGYqZY1LRmCilL+KI5jZMhS+31eBIyhquc7ZqeQqZTY0UW25aO4xFHjeE24z+KJkP7EbHkUM2JUC/KwL0XNIOYqjvht1r5m2epityu/095F9ibKHUBDQzYGESXHiFDCSppz76Do5KNnKklAEdcQyGNGYA6sKuzR2Z8sPXLopgngV4rGrtdKk49M0msNbV/7aCoZGZOxImOmYBF51Rjejw5FlMviQbR1kU+A2/NMkMVXCU8KYVekhYlh+6YY1jYyUShDRYPxECUfG1eFpFQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t3zAIU6YCZsnlqnVXVjSEkJ27DT1Wxfza3BYKPk3NEQ=; b=VW/Iau5qINYyjLfeh2Oy3t/4dGcwjvBdqGj+1aObcO96UBcPst4e+pOLp5oeSP9OG51JgV+miwX9ohkmOew8BQeznaMnc6M9TFYQP1TCkUV+BZgMgWT1GhJKmYN/xCmY7CBMytje3477uTy6cbeGp+96RShVEbcOkWGzd8NG4a00CV3BG3U+XN1/DZ3VN16mP2uzGJ2hPtEsAl48E5p/u6K3pVi4/hK+kHRzenzWiz2dG6K8PasxDpxvUV9UEfPISnhX9HJMDCFdnPe7XpoWFlP84QIzu+5+cep4aAk9u+NA9y/AQHhg7KwXDMpy65lOCjJwEPPInONtKAGGjuRL1w== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by DM6PR12MB4863.namprd12.prod.outlook.com (2603:10b6:5:1b9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.26; Mon, 7 Nov 2022 16:06:52 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::baf1:6393:bf72:9bf2]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::baf1:6393:bf72:9bf2%9]) with mapi id 15.20.5791.024; Mon, 7 Nov 2022 16:06:52 +0000 From: "Jeff Brasen" To: "devel@edk2.groups.io" CC: "Sami.Mujawar@arm.com" , "Alexei.Fedorov@arm.com" , "pierre.gondois@arm.com" , "quic_llindhol@quicinc.com" , "ardb+tianocore@kernel.org" Subject: Re: [PATCH] DynamicTablesPkg: Allow for specified CPU names Thread-Topic: [PATCH] DynamicTablesPkg: Allow for specified CPU names Thread-Index: AQHY8sGe977I2R5ag0mqbHs58AcQ6q4zndiQ Date: Mon, 7 Nov 2022 16:06:52 +0000 Message-ID: References: <0fd42dc1fd90f28521a3a1e47934fa7d45bcec6b.1667836523.git.jbrasen@nvidia.com> In-Reply-To: <0fd42dc1fd90f28521a3a1e47934fa7d45bcec6b.1667836523.git.jbrasen@nvidia.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR12MB5789:EE_|DM6PR12MB4863:EE_ x-ms-office365-filtering-correlation-id: 182e195b-e19f-4ced-c1b9-08dac0da1587 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YojLaJ2lYV+PhJ4kn3VJmKjUEt1TZtszpwJdW6JiUBNhdzrLpdfZLEGeBG4k/si6PBpcQd0v0WiOR0IxwWFDKHzotaNN+h5Hrgm6YdTNOqyT2FhZDaO6Iila/p5MWTDhCdfTeisofFN+3YQllrLxP9ggYRO0Fs/2nSv2yq90xj2Ho6FjKYYNeklwWuNzHjSPguRBcvg2LckVMoC6UIe7wZFABmfujBnUETW4oJIws2Q+8h7hTfJaUi93MqMh1pgDcF2KHzc4Ikz/PBIIDwoAypblJHwl5Pvas1D1JfP9k91+AIzHn3wtocZoz29C+hihNwCiPvdm2H1wLuMEqPM4a/uItFaDBLAbeI6+hAGpEfRtDCoCt0V0kmmV0Un46RV5/HAG/z5/lSrYzFz5cQ40k7BKrY1cxFJOrcrIXEoaUJeyquVwWra16tTHkasu3lnrqzdNSkeinc+rxAwmazFx1/C5eyce752/jfEmpDvlTXFc1LChw2XSLIS6vFZxx+JoOjhYqyPCouBujlOis8C/ocdO4epNB8J01htAqxJhVr05VnjQqRIFpy4zcQcsefD4FgqNZ3LJ1D+AfV/K32KDE/CmbAWtGOHysu99DvzWNF2e78I200poNiqGFRqXKc1NU4YdtiaVvp/1sV8YiHUglwjsMxk5fkmDTE+ZOuSXKnPFIo5oR1hm792GiaZUoHgidae1I9twrG6BzZuKSy2vDd4+1qLkL8pq8kDR0dNeMEc2O6bqJcmx8u46y6m4n0ITTZ8SsQ5tHKNdJis44r0jsg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(376002)(366004)(396003)(346002)(451199015)(186003)(7696005)(38100700002)(122000001)(9686003)(26005)(53546011)(6506007)(83380400001)(2906002)(55016003)(8676002)(478600001)(316002)(54906003)(52536014)(71200400001)(41300700001)(5660300002)(8936002)(4326008)(76116006)(6916009)(66946007)(66446008)(66556008)(66476007)(64756008)(33656002)(38070700005)(86362001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?6Pbq4dsMuoixqr5JsJB7oYsWF0kfML/2+JxH80Y9Si1sDvkOIt6AiTz5mv14?= =?us-ascii?Q?bcUYsDaeVPltWFsqgYZs0jfjq20IIuRaeLPDKCa2e5vVET28st02cqodJ4Lh?= =?us-ascii?Q?PMGfPWnpZj/dbutpp8D1bIBb35ihRYCGC3yPBbEgRV+q4MMKfWLO4pq1/yPg?= =?us-ascii?Q?RkgHqkV/banWvmF1GCvZpwqQcbX13Bua0bQjDSFGS7woxSVfju6wd2cVKuhm?= =?us-ascii?Q?NukLAN4y06yrq0gCPTyRLEFjgDpSqT1t+XJXzUIvhQwHtvX6XOwehlKRdg0t?= =?us-ascii?Q?c1WxDQ0hnp21vVpBaEQ+rMgKmpTec+I/taSDi8HPl98ZvU6GUTVT9iNnjLVJ?= =?us-ascii?Q?HE6iS6M5C1urYuVNv45h/4bhUO+4WRR7ZqeBW5CvODT5pmhDH9bP9Id5AkEC?= =?us-ascii?Q?v4X9X3cQw41iJhtu9z1Cx57yRgxx77U4wxXebrKoAUeRkz3ALHJG2fkOxWkS?= =?us-ascii?Q?V9qMUOACyBFAmZ81kRsA5yRZimgfw8otzSmJj828S7NWJg9O1GGREPAYzOpc?= =?us-ascii?Q?yGLxHv+84/SnEeG02R1k47NoOgB0jymTykJV+WloXX7z4ouTjp4bBV4NAyqs?= =?us-ascii?Q?HQLFquy2Xe1UBqX2A/W5TLMtuZhaDpl9UMgqdr0Dcylr9PBFsc61QKQPyq/m?= =?us-ascii?Q?Pf7r68bg+RwxGzaA1T+75EIahhuaIUvEp4yLnenzMe6qzM4g2EmiVnBL8Y7i?= =?us-ascii?Q?in1ep2OSeoje/fuj0b51BD+/1PQrVlOAzJB4sZYdCbFmV3UTS0dFW14z+DQH?= =?us-ascii?Q?JKs2H57xqf1j63y2VNZ4FPhaZC0/CAkpZTSiqVU/thB0bPneH9zwiRGjUsbo?= =?us-ascii?Q?Hef+T1Zh1VVURbss5VwgDiXYBlV0AYqxi4ajrCStT9Rl2TqwxQ+Xa1+CUMHm?= =?us-ascii?Q?BF4oxrSuiv+/7AQWkE6CMaz6LxXVGOSh6XZzHG1GbztLbyjvlEnKApEBJMgy?= =?us-ascii?Q?KFgcFBAwh/Es8OPCb/yg6zn04PjhTcmhDJKhcjzZX0n8+AbZqHI/9PD5YLZ5?= =?us-ascii?Q?Du8krlkUKUQxnFYZhg+SXmlXXeGMXqGhzD6ugZcw4IxpF+5tk6nks6LGSnpo?= =?us-ascii?Q?jlXUAEtHcmFv8dN74kbMwaQyhNWMe9Xf50rKjVWZ44o3DDSuxnqp00gIuIOI?= =?us-ascii?Q?1UCh8mRiKmHUO6sJjOUAubRQDblwY+hv93v9rzuFXfXmzx7Urt9gh7oo5Xn0?= =?us-ascii?Q?59InilMzjGDs125s1rhoyU0TI3kt9acWvyo49ZPTf5Jd3gi+j6PaaNjZe1P5?= =?us-ascii?Q?cdk08pw5w52kIYVQl09vygQPGGcvddMT3KSvwDgUFCP+MKjGKg7QP2hf1X8L?= =?us-ascii?Q?+C+VpRlNNqnU6yaVCAi87jrS7uWObFBdoN6UpN2dap/GUymHIT+14VYu/5kP?= =?us-ascii?Q?y0drSPBRIPHOnFgz3IML8sRAwEV9xzHStOegyqFIAIBcFXl9vELWuSSyX74d?= =?us-ascii?Q?ZaFzc4UR2a/Yo8+bYi1Cs9Ncxs+LEaiGAbEb4Myik1S7iZtmQfXk196eSG9Y?= =?us-ascii?Q?Sp05/Iqq+aYmu5LBzRpGDVrp+4GHK5EVoW6fDqHw8jgvMFbuK6BrVvh8T7bm?= =?us-ascii?Q?xeVjqJ+k4G26yS1PP6i6B/lDrtq459keFnM/AgyT?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 182e195b-e19f-4ced-c1b9-08dac0da1587 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2022 16:06:52.2656 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +NNlBK5yvfT4B9S4eJQ9jTS2XS8Irm4sfDhD/XQ0KsG/88ZmnQa5c0WqJsutIxwNj0TYwH+T5lXsd8BGrxIing== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4863 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This was the simplest approach that I had to solve this issue, but not sure= if it would be better to do something smarter. A couple other ideas I had = where: - Specify the affinity level that CPUs use and use the levels above that fo= r the containers. - Have a new object that has the container levels and affinity mapping. Thi= s wouldn't support unbalanced layouts. - I can't think of a good way to auto detect the cpu level affinity level b= ut that would be nice.=20 -Jeff > -----Original Message----- > From: Jeff Brasen > Sent: Monday, November 7, 2022 8:57 AM > To: devel@edk2.groups.io > Cc: Sami.Mujawar@arm.com; Alexei.Fedorov@arm.com; > pierre.gondois@arm.com; quic_llindhol@quicinc.com; > ardb+tianocore@kernel.org; Jeff Brasen > Subject: [PATCH] DynamicTablesPkg: Allow for specified CPU names >=20 > Allow object to specify the name of processor and processor container >=20 > nodes and the UID of processor containers. >=20 >=20 >=20 > This allows these to be more accurately referenced from other tables. >=20 > For example for the _PSL method or the UID in the APMT table. >=20 >=20 >=20 > The UID and Name for processor container may be different as if the >=20 > intention is to set names as the corresponding affinity level the UID >=20 > may need to be different if there are multiple levels of containers. >=20 >=20 >=20 > Signed-off-by: Jeff Brasen >=20 > --- >=20 > .../Include/ArmNameSpaceObjects.h | 11 +++++ >=20 > .../SsdtCpuTopologyGenerator.c | 40 ++++++++++++++----- >=20 > .../ConfigurationManagerObjectParser.c | 3 ++ >=20 > 3 files changed, 43 insertions(+), 11 deletions(-) >=20 >=20 >=20 > diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h > b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h >=20 > index 6aafd41a2e..19098609de 100644 >=20 > --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h >=20 > +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h >=20 > @@ -768,6 +768,17 @@ typedef struct CmArmProcHierarchyInfo { >=20 > /// Token identifying a CM_ARM_OBJ_REF structure, itself referencing >=20 > /// CM_ARM_LPI_INFO objects. >=20 > CM_OBJECT_TOKEN LpiToken; >=20 > + /// Set to TRUE if UID should override index for name and _UID >=20 > + /// for processor container nodes and name of processors. >=20 > + /// This should be consistently set for containers or processors to av= oid >=20 > + /// duplicate values >=20 > + BOOLEAN OverrideNameUidEnabled; >=20 > + /// If OverrideNameUidEnabled is TRUE then this value will be used for > name of >=20 > + /// processors and processor containers. >=20 > + UINT16 OverrideName; >=20 > + /// If OverrideNameUidEnabled is TRUE then this value will be used for >=20 > + /// the UID of processor containers. >=20 > + UINT32 OverrideUid; >=20 > } CM_ARM_PROC_HIERARCHY_INFO; >=20 >=20 >=20 > /** A structure that describes the Cache Type Structure (Type 1) in PPTT >=20 > diff --git > a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCp > uTopologyGenerator.c > b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCp > uTopologyGenerator.c >=20 > index d06c7615fb..92fa904103 100644 >=20 > --- > a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCp > uTopologyGenerator.c >=20 > +++ > b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCp > uTopologyGenerator.c >=20 > @@ -553,7 +553,7 @@ GenerateLpiStates ( >=20 > @param [in] Generator The SSDT Cpu Topology generator. >=20 > @param [in] ParentNode Parent node to attach the Cpu node to. >=20 > @param [in] GicCInfo CM_ARM_GICC_INFO object used to create the > node. >=20 > - @param [in] CpuIndex Index used to generate the node name. >=20 > + @param [in] CpuName Value used to generate the node name. >=20 > @param [out] CpuNodePtr If not NULL, return the created Cpu node. >=20 >=20 >=20 > @retval EFI_SUCCESS Success. >=20 > @@ -567,7 +567,7 @@ CreateAmlCpu ( >=20 > IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, >=20 > IN AML_NODE_HANDLE ParentNode, >=20 > IN CM_ARM_GICC_INFO *GicCInfo, >=20 > - IN UINT32 CpuIndex, >=20 > + IN UINT32 CpuName, >=20 > OUT AML_OBJECT_NODE_HANDLE *CpuNodePtr OPTIONAL >=20 > ) >=20 > { >=20 > @@ -579,7 +579,7 @@ CreateAmlCpu ( >=20 > ASSERT (ParentNode !=3D NULL); >=20 > ASSERT (GicCInfo !=3D NULL); >=20 >=20 >=20 > - Status =3D WriteAslName ('C', CpuIndex, AslName); >=20 > + Status =3D WriteAslName ('C', CpuName, AslName); >=20 > if (EFI_ERROR (Status)) { >=20 > ASSERT (0); >=20 > return Status; >=20 > @@ -628,7 +628,7 @@ CreateAmlCpu ( >=20 > @param [in] CfgMgrProtocol Pointer to the Configuration Manag= er >=20 > Protocol Interface. >=20 > @param [in] ParentNode Parent node to attach the Cpu node= to. >=20 > - @param [in] CpuIndex Index used to generate the node na= me. >=20 > + @param [in] CpuName Value used to generate the node na= me. >=20 > @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO > describing >=20 > the Cpu. >=20 >=20 >=20 > @@ -643,7 +643,7 @@ CreateAmlCpuFromProcHierarchy ( >=20 > IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, >=20 > IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST > CfgMgrProtocol, >=20 > IN AML_NODE_HANDLE ParentNode, >=20 > - IN UINT32 CpuIndex, >=20 > + IN UINT32 CpuName, >=20 > IN CM_ARM_PROC_HIERARCHY_INFO > *ProcHierarchyNodeInfo >=20 > ) >=20 > { >=20 > @@ -668,7 +668,7 @@ CreateAmlCpuFromProcHierarchy ( >=20 > return Status; >=20 > } >=20 >=20 >=20 > - Status =3D CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuIndex, > &CpuNode); >=20 > + Status =3D CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuName, > &CpuNode); >=20 > if (EFI_ERROR (Status)) { >=20 > ASSERT (0); >=20 > return Status; >=20 > @@ -735,7 +735,8 @@ CreateAmlProcessorContainer ( >=20 > IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST > CfgMgrProtocol, >=20 > IN AML_NODE_HANDLE ParentNode, >=20 > IN CM_ARM_PROC_HIERARCHY_INFO > *ProcHierarchyNodeInfo, >=20 > - IN UINT32 ProcContainerI= ndex, >=20 > + IN UINT16 ProcContainerN= ame, >=20 > + IN UINT32 ProcContainerU= id, >=20 > OUT AML_OBJECT_NODE_HANDLE *ProcContainer= NodePtr >=20 > ) >=20 > { >=20 > @@ -749,7 +750,7 @@ CreateAmlProcessorContainer ( >=20 > ASSERT (ProcHierarchyNodeInfo !=3D NULL); >=20 > ASSERT (ProcContainerNodePtr !=3D NULL); >=20 >=20 >=20 > - Status =3D WriteAslName ('C', ProcContainerIndex, AslNameProcContainer= ); >=20 > + Status =3D WriteAslName ('C', ProcContainerName, AslNameProcContainer)= ; >=20 > if (EFI_ERROR (Status)) { >=20 > ASSERT (0); >=20 > return Status; >=20 > @@ -765,7 +766,7 @@ CreateAmlProcessorContainer ( >=20 > // and EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID is set for non-Cpus. >=20 > Status =3D AmlCodeGenNameInteger ( >=20 > "_UID", >=20 > - ProcContainerIndex, >=20 > + ProcContainerUid, >=20 > ProcContainerNode, >=20 > NULL >=20 > ); >=20 > @@ -838,6 +839,8 @@ CreateAmlCpuTopologyTree ( >=20 > UINT32 Index; >=20 > UINT32 CpuIndex; >=20 > AML_OBJECT_NODE_HANDLE ProcContainerNode; >=20 > + UINT32 Uid; >=20 > + UINT16 Name; >=20 >=20 >=20 > ASSERT (Generator !=3D NULL); >=20 > ASSERT (Generator->ProcNodeList !=3D NULL); >=20 > @@ -868,11 +871,17 @@ CreateAmlCpuTopologyTree ( >=20 > return EFI_INVALID_PARAMETER; >=20 > } >=20 >=20 >=20 > + if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) { >=20 > + Name =3D Generator->ProcNodeList[Index].OverrideName; >=20 > + } else { >=20 > + Name =3D CpuIndex; >=20 > + } >=20 > + >=20 > Status =3D CreateAmlCpuFromProcHierarchy ( >=20 > Generator, >=20 > CfgMgrProtocol, >=20 > ParentNode, >=20 > - CpuIndex, >=20 > + Name, >=20 > &Generator->ProcNodeList[Index] >=20 > ); >=20 > if (EFI_ERROR (Status)) { >=20 > @@ -897,12 +906,21 @@ CreateAmlCpuTopologyTree ( >=20 > return EFI_INVALID_PARAMETER; >=20 > } >=20 >=20 >=20 > + if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) { >=20 > + Name =3D Generator->ProcNodeList[Index].OverrideName; >=20 > + Uid =3D Generator->ProcNodeList[Index].OverrideUid; >=20 > + } else { >=20 > + Name =3D *ProcContainerIndex; >=20 > + Uid =3D *ProcContainerIndex; >=20 > + } >=20 > + >=20 > Status =3D CreateAmlProcessorContainer ( >=20 > Generator, >=20 > CfgMgrProtocol, >=20 > ParentNode, >=20 > &Generator->ProcNodeList[Index], >=20 > - *ProcContainerIndex, >=20 > + Name, >=20 > + Uid, >=20 > &ProcContainerNode >=20 > ); >=20 > if (EFI_ERROR (Status)) { >=20 > diff --git > a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManag > erObjectParser.c > b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManag > erObjectParser.c >=20 > index 5a01ed0fb8..5e4b88e8cc 100644 >=20 > --- > a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManag > erObjectParser.c >=20 > +++ > b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManag > erObjectParser.c >=20 > @@ -305,6 +305,9 @@ STATIC CONST CM_OBJ_PARSER > CmArmProcHierarchyInfoParser[] =3D { >=20 > { "NoOfPrivateResources", 4, "0x%x", NULL= }, >=20 > { "PrivateResourcesArrayToken", sizeof (CM_OBJECT_TOKEN), "0x%p", > NULL }, >=20 > { "LpiToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL= }, >=20 > + { "OverrideNameUidEnabled", 1, "%d", NULL= }, >=20 > + { "OverrideName", 2, "0x%x", NULL= }, >=20 > + { "OverrideUid", 4, "0x%x", NULL= } >=20 > }; >=20 >=20 >=20 > /** A parser for EArmObjCacheInfo. >=20 > -- >=20 > 2.25.1 >=20 >=20