From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.54]) by mx.groups.io with SMTP id smtpd.web10.374.1667836639102292325 for ; Mon, 07 Nov 2022 07:57:19 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=YGGEv32R; 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.94.54, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M8btc+OGtXjNpD6rbSgjWI/7WdkhGT7dp86TWVxjrbYElmh+viNIirLWOixdTMvH0vD1hzWUPwzsWZwTQy7I3lkq+cULdVkoRzWgLAMMgHnyOJ6Hy/f7rYQ0IPj9O45pqzVS70twsbw/fRcwkkIKdSS/wH1tt5LrbgujnNDnwf/pRKu2HVyeDuAHD6M3lYoy45evYTqzf/OyApu456ABjvNJm+7HkB3kV1K1bLpQTjfIxyHmw2HnjWHfkZt4XazTfARb292SwxokC2LYqGTkcqqIGHp/u0hD2jYxg1054MVunP8gOhQeY8vi3rfZ1Adhpo4oPBBq/oZ7c7OIC2rQbA== 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=EeZZfZpIkKUDlle0NhyZLOxh2GYd7XQ82cTLj9+vw9A=; b=MA/TrwD89RBx68Gl4ctwqXotJV9kjk+vve4L691QaAfTUj3cZPRxhwFZUznBaHi0KqSoOW8Cf2/qO/qbp5PSNs0apVwiLiUwMxAkAhu9HzxD8Hi+9jiJx7XlwnarDi8dc2vzmXmT9SpymRx5I2WNjGwNbT4EHPjKHoSq7R8p+L10IkzwhBz5DQwwLnqAXxPlKiYsIVQcpr6iRYIboI6z5nCTeEP73lTh9r/Ml8MiFKZoKWapTNMXyO86T/pgkkeUApGWRbd0SfV73iDtCTcTn+oEmNH5aWY2mLe28p6lNmRI8UOBm/CExEczWIMhE9nNUGhbXUCiwCf/ouhbtu4AdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); 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=EeZZfZpIkKUDlle0NhyZLOxh2GYd7XQ82cTLj9+vw9A=; b=YGGEv32RG/ALKac9OoQxN9pGJmnQOhymgDD0US8uHXJZT6y9fDebs4cuPDI+ELVenyp4PNWUjqfjlsJMG1hYdCAdH+xjfhTeWLT/DeITjhLuJYl1Tv1JVwLJ/H3+idNDTOoY5YHdlQeHoVzMekDQg9o7go2cHHlu9SOmWnRn5SIEL+439Ewh/PcOapRYA5dcWU5cyl103qswDFQSHeyedPyC2kjw0iRvS1k8ViBYGUib/gK8eJ/zp8ixlfkdPyWEPX1+ZMrz4ynRI26ecdgTiZXpMVkc2Z9W4sFGKqan1Oe7BxIddTZoinC1pSRX/NuUWawRxIFv9CbUnsIeXKKQQQ== Received: from DM6PR21CA0005.namprd21.prod.outlook.com (2603:10b6:5:174::15) by BL0PR12MB5507.namprd12.prod.outlook.com (2603:10b6:208:1c4::20) 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 15:57:16 +0000 Received: from DM6NAM11FT049.eop-nam11.prod.protection.outlook.com (2603:10b6:5:174:cafe::d6) by DM6PR21CA0005.outlook.office365.com (2603:10b6:5:174::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.2 via Frontend Transport; Mon, 7 Nov 2022 15:57:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by DM6NAM11FT049.mail.protection.outlook.com (10.13.172.188) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20 via Frontend Transport; Mon, 7 Nov 2022 15:57:16 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Mon, 7 Nov 2022 07:57:14 -0800 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Mon, 7 Nov 2022 07:57:13 -0800 Received: from f9050a1d9579.nvidia.com (10.127.8.9) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.986.29 via Frontend Transport; Mon, 7 Nov 2022 07:57:12 -0800 From: "Jeff Brasen" To: CC: , , , , , Jeff Brasen Subject: [PATCH] DynamicTablesPkg: Allow for specified CPU names Date: Mon, 7 Nov 2022 08:57:11 -0700 Message-ID: <0fd42dc1fd90f28521a3a1e47934fa7d45bcec6b.1667836523.git.jbrasen@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-NVConfidentiality: public Return-Path: jbrasen@nvidia.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT049:EE_|BL0PR12MB5507:EE_ X-MS-Office365-Filtering-Correlation-Id: f8448092-a9f6-484c-2b69-08dac0d8be25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wQBvNZgOXXrxIQ18sxXMo+xIPwndmjI8H3JXbjTiXJ0Dx8jgFq5dYyF0Jz2oDmTc23KDZD52J1hCeEh8fSrSJgOgp5AYTK3HOfWcpO/Au/FgJuOpihBSTyBNl9tU2VG/FNs/ahj59rDqm0e0kRTs3r0s5O78zdV23hMja1vns+OYAheuFCWV9SE2vjOYP1ow1k+KeDaP4Mmo5eijzIpgRb/JyIR1X4Y8+MUqCMg9/qbWf4Nipo0RpokvHlML1EgiHZKRWClYEe79tJO5nuOMPo1pFXO7TvR1BVJlBSJZh5HkJx+wttmMmgwYzsG95wRA23MPA5N1Ldl8Mrvan2gN3nBs4WTPO/eQYSo2mu24IO/Ix7E0g1J44OfA6HV7yyyagq0C/cHht1JfyXdJeES+zTPgbNCMzfaXq38o+cUQiH5hT0bx5hSg6TK1jPwD6qfUn135IE06NNmhYcTicqTiqtYO6xfYv+dBLIs+Pol7HwCpLxCNxKyQl8Ppyg9BrOv/JTa4e2FhJEyowHCPEBSmu8rDw0rjmzob1e3vNsI+dN1a9P+9tzlHXW00GAWzxHM/w7a2fn9hTw5VYCHNWTngsa0BKe0w72jJnl9sHFcbUWx5E8UMeFz4CdarYoZ0Xb1NRffu9N/q1QhGdLaUy+9vQgk1l7QvrKKMQ5jR6SqGBxm4xvw/6fKJ6tLMmCqjVfkNj+pTspzYK39jhPcZav4slj5k/MJdKAxSI3oBNYDuyonr1SOYpC6QQ21ZBfGyk9YoFW4auzUOVOWCAC+Ni1oCPg== X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(346002)(39860400002)(136003)(451199015)(46966006)(40470700004)(36840700001)(2906002)(478600001)(8676002)(70586007)(82740400003)(4326008)(8936002)(70206006)(41300700001)(40480700001)(316002)(5660300002)(40460700003)(6916009)(83380400001)(7636003)(356005)(36860700001)(7696005)(107886003)(86362001)(186003)(336012)(47076005)(426003)(2616005)(54906003)(26005)(82310400005)(36756003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2022 15:57:16.0360 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f8448092-a9f6-484c-2b69-08dac0d8be25 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT049.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB5507 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Allow object to specify the name of processor and processor container=0D nodes and the UID of processor containers.=0D =0D This allows these to be more accurately referenced from other tables.=0D For example for the _PSL method or the UID in the APMT table.=0D =0D The UID and Name for processor container may be different as if the=0D intention is to set names as the corresponding affinity level the UID=0D may need to be different if there are multiple levels of containers.=0D =0D Signed-off-by: Jeff Brasen =0D ---=0D .../Include/ArmNameSpaceObjects.h | 11 +++++=0D .../SsdtCpuTopologyGenerator.c | 40 ++++++++++++++-----=0D .../ConfigurationManagerObjectParser.c | 3 ++=0D 3 files changed, 43 insertions(+), 11 deletions(-)=0D =0D diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTables= Pkg/Include/ArmNameSpaceObjects.h=0D index 6aafd41a2e..19098609de 100644=0D --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h=0D +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h=0D @@ -768,6 +768,17 @@ typedef struct CmArmProcHierarchyInfo {=0D /// Token identifying a CM_ARM_OBJ_REF structure, itself referencing=0D /// CM_ARM_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 diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/Ss= dtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTop= ologyLibArm/SsdtCpuTopologyGenerator.c=0D index d06c7615fb..92fa904103 100644=0D --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c=0D +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c=0D @@ -553,7 +553,7 @@ GenerateLpiStates (=0D @param [in] Generator The SSDT Cpu Topology generator.=0D @param [in] ParentNode Parent node to attach the Cpu node to.=0D @param [in] GicCInfo CM_ARM_GICC_INFO object used to create the nod= e.=0D - @param [in] CpuIndex Index used to generate the node name.=0D + @param [in] CpuName Value used to generate the node name.=0D @param [out] CpuNodePtr If not NULL, return the created Cpu node.=0D =0D @retval EFI_SUCCESS Success.=0D @@ -567,7 +567,7 @@ CreateAmlCpu (=0D IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,=0D IN AML_NODE_HANDLE ParentNode,=0D IN CM_ARM_GICC_INFO *GicCInfo,=0D - IN UINT32 CpuIndex,=0D + IN UINT32 CpuName,=0D OUT AML_OBJECT_NODE_HANDLE *CpuNodePtr OPTIONAL=0D )=0D {=0D @@ -579,7 +579,7 @@ CreateAmlCpu (=0D ASSERT (ParentNode !=3D NULL);=0D ASSERT (GicCInfo !=3D NULL);=0D =0D - Status =3D WriteAslName ('C', CpuIndex, AslName);=0D + Status =3D WriteAslName ('C', CpuName, AslName);=0D if (EFI_ERROR (Status)) {=0D ASSERT (0);=0D return Status;=0D @@ -628,7 +628,7 @@ CreateAmlCpu (=0D @param [in] CfgMgrProtocol Pointer to the Configuration Manager= =0D Protocol Interface.=0D @param [in] ParentNode Parent node to attach the Cpu node t= o.=0D - @param [in] CpuIndex Index used to generate the node name= .=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 =0D @@ -643,7 +643,7 @@ CreateAmlCpuFromProcHierarchy (=0D IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,=0D IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,= =0D IN AML_NODE_HANDLE ParentNode,=0D - IN UINT32 CpuIndex,=0D + IN UINT32 CpuName,=0D IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNo= deInfo=0D )=0D {=0D @@ -668,7 +668,7 @@ CreateAmlCpuFromProcHierarchy (=0D return Status;=0D }=0D =0D - Status =3D CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuIndex, &Cpu= Node);=0D + Status =3D CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuName, &CpuN= ode);=0D if (EFI_ERROR (Status)) {=0D ASSERT (0);=0D return Status;=0D @@ -735,7 +735,8 @@ CreateAmlProcessorContainer (=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 UINT32 ProcContainerInd= ex,=0D + IN UINT16 ProcContainerNam= e,=0D + IN UINT32 ProcContainerUid= ,=0D OUT AML_OBJECT_NODE_HANDLE *ProcContainerNo= dePtr=0D )=0D {=0D @@ -749,7 +750,7 @@ CreateAmlProcessorContainer (=0D ASSERT (ProcHierarchyNodeInfo !=3D NULL);=0D ASSERT (ProcContainerNodePtr !=3D NULL);=0D =0D - Status =3D WriteAslName ('C', ProcContainerIndex, AslNameProcContainer);= =0D + Status =3D WriteAslName ('C', ProcContainerName, AslNameProcContainer);= =0D if (EFI_ERROR (Status)) {=0D ASSERT (0);=0D return Status;=0D @@ -765,7 +766,7 @@ CreateAmlProcessorContainer (=0D // and EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID is set for non-Cpus.=0D Status =3D AmlCodeGenNameInteger (=0D "_UID",=0D - ProcContainerIndex,=0D + ProcContainerUid,=0D ProcContainerNode,=0D NULL=0D );=0D @@ -838,6 +839,8 @@ CreateAmlCpuTopologyTree (=0D UINT32 Index;=0D UINT32 CpuIndex;=0D AML_OBJECT_NODE_HANDLE ProcContainerNode;=0D + UINT32 Uid;=0D + UINT16 Name;=0D =0D ASSERT (Generator !=3D NULL);=0D ASSERT (Generator->ProcNodeList !=3D NULL);=0D @@ -868,11 +871,17 @@ CreateAmlCpuTopologyTree (=0D return EFI_INVALID_PARAMETER;=0D }=0D =0D + if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) {=0D + Name =3D Generator->ProcNodeList[Index].OverrideName;=0D + } else {=0D + Name =3D CpuIndex;=0D + }=0D +=0D Status =3D CreateAmlCpuFromProcHierarchy (=0D Generator,=0D CfgMgrProtocol,=0D ParentNode,=0D - CpuIndex,=0D + Name,=0D &Generator->ProcNodeList[Index]=0D );=0D if (EFI_ERROR (Status)) {=0D @@ -897,12 +906,21 @@ CreateAmlCpuTopologyTree (=0D return EFI_INVALID_PARAMETER;=0D }=0D =0D + if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) {=0D + Name =3D Generator->ProcNodeList[Index].OverrideName;=0D + Uid =3D Generator->ProcNodeList[Index].OverrideUid;=0D + } else {=0D + Name =3D *ProcContainerIndex;=0D + Uid =3D *ProcContainerIndex;=0D + }=0D +=0D Status =3D CreateAmlProcessorContainer (=0D Generator,=0D CfgMgrProtocol,=0D ParentNode,=0D &Generator->ProcNodeList[Index],=0D - *ProcContainerIndex,=0D + Name,=0D + Uid,=0D &ProcContainerNode=0D );=0D if (EFI_ERROR (Status)) {=0D diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationMa= nagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/Config= urationManagerObjectParser.c=0D index 5a01ed0fb8..5e4b88e8cc 100644=0D --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c=0D +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c=0D @@ -305,6 +305,9 @@ STATIC CONST CM_OBJ_PARSER CmArmProcHierarchyInfoParse= r[] =3D {=0D { "NoOfPrivateResources", 4, "0x%x", NULL }= ,=0D { "PrivateResourcesArrayToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }= ,=0D { "LpiToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }= ,=0D + { "OverrideNameUidEnabled", 1, "%d", NULL }= ,=0D + { "OverrideName", 2, "0x%x", NULL }= ,=0D + { "OverrideUid", 4, "0x%x", NULL }= =0D };=0D =0D /** A parser for EArmObjCacheInfo.=0D -- =0D 2.25.1=0D =0D