From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.86]) by mx.groups.io with SMTP id smtpd.web10.18538.1675447857364937565 for ; Fri, 03 Feb 2023 10:10:57 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=pKz675wB; 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.93.86, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WIypMjDv+sOcnTu0nc8Aq3yHPVL1CfdYZyWCFb0gVp2PhtmqUG0u+P+J2vHvhiQE93WhI4KApuOZ4/WBTomnxZgu2aAZO+CdtnE6aqTSj5/KFBT0D/dCGnO03y6kwUr8RnT6q9B+ywIrt9PAwmRMvhqxNr0u5W3y7D42mZ7hVzWhdf3b7/JaPcOxfalR94ud9wq6kuQ8Pwdex4tI1OucEED7K5oVC42tkp2bvTyXAl9cejUtx+wbABjJXfrkw36sI0+CcbK9X/2ruMyRqCrvMeuqnHyq6VJhtG459YIl7LoOUuS4cmixpafNAioEjVC9Q7y2ghQuao6TbZcsj6nzyg== 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=VOmHOKnmczAMQwxAwV/WOw6emrJpDmiLTFPn/oZnK/4=; b=KuUQTOOSQ5L5tpq7GiN99OPNGv5zdS8Brxv9VT8J+Ap8omqCXVBEv376u1aOQlOm1Fzaq0Ww0JFaJgCVA5OFHx493NNRRnf5fVw4Lf8Xl3TJWuWUhOaZC+4z6Oo3tK8KLBVYCvNhGDFFct5U7VZvu++BMb6CAPZ96YkX5i7JXmVkAENSErS/a4CvmpQ5+cUJ+WMnIeu5UvyAk1DAjaZPtiV3cuzvVGm2HDWt6THjvriTbp+J6ceiT0+92/NR3eUdYvqoORMTwWTSF8GTr6PfhYbBS4qbAIRgIA2tbphkT2f1xzS1PsI1zB/Drr0rUo6AisNINhhO4R+xoGop/wqPdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) 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=VOmHOKnmczAMQwxAwV/WOw6emrJpDmiLTFPn/oZnK/4=; b=pKz675wBbmxAT/ffOJNupyFPQDlXOKDwXEx05tpd3HGW0eOl8HIzyoOJkhXRm671rgYB91Blzz7JGJkQjQDeBNy+LkszxS6rv4iMjFXxa/iUgylgdmTblefWZb8QppvRHCzPZDcOWt/qPcJLBLzWJJ2ElpcAhtsf1cRpP/fa4srbsTMm6ZktlEi3GxZkwS3BYQQj6TeJvRa+vWsxA5eZawzRIAU6WxU38lDW2YQhh8HoF1OEJbSbQVYEZ2sPSrmIMe+eYMVkDHoqdGHyM9wWqd7y3m8KZthXA3I8Z5rDQIW6B3MJBPOqG308psd/aoflJQ9JdxyH2PZxBPqwgyHuPA== Received: from MW4PR04CA0334.namprd04.prod.outlook.com (2603:10b6:303:8a::9) by IA1PR12MB6354.namprd12.prod.outlook.com (2603:10b6:208:3e2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.27; Fri, 3 Feb 2023 18:10:55 +0000 Received: from CO1NAM11FT090.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8a:cafe::f3) by MW4PR04CA0334.outlook.office365.com (2603:10b6:303:8a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.27 via Frontend Transport; Fri, 3 Feb 2023 18:10:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CO1NAM11FT090.mail.protection.outlook.com (10.13.175.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31 via Frontend Transport; Fri, 3 Feb 2023 18:10:54 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Fri, 3 Feb 2023 10:10:46 -0800 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Fri, 3 Feb 2023 10:10:46 -0800 Received: from f9050a1d9579.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Fri, 3 Feb 2023 10:10:45 -0800 From: "Jeff Brasen" To: CC: , , , , , Jeff Brasen Subject: [PATCH v2] DynamicTablesPkg: Allow multiple top level physical nodes Date: Fri, 3 Feb 2023 11:10:42 -0700 Message-ID: <2fbd84095cc52b908f0a59d98358f36a396c319b.1675447806.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: CO1NAM11FT090:EE_|IA1PR12MB6354:EE_ X-MS-Office365-Filtering-Correlation-Id: 782d9603-fcee-4321-7323-08db0611fe0e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KXeCs//Xye16GkYqT8GL201neDH+ZJnEQ/Eemj1JfHcf91GjimgIvNKibL4B6OOKP06taOO5dNAImdoWNDI1XtLN5lB2QTYjG2CVMw0FNB4xIxPNTna0fCQapAYrrBc9NIO3MKqjNtYQ9TfrEp/SoWpghekdLOwKFCslyhrciWMEboYioGZF7es6cp16ciTTCdgJrXmf0GS6GnKMb0cvlXWeTxTZfhhSgbeXIPN2JeyvpOoS2LsvhFncsYER9SRgbsLALP4xvNp0FKsySYV1arMKv/chuVGLczF0+7faOvAOZitbmdWua7pZxI1gpvjPMNP09lsVCgcMHYI5I5Apaz65RKRutZwxREVl/Qft6Py0aHBGRpbBgPi/kBTbPUT0YgcJa5qkddqoh4I/NN9QbxpoYcIMWqTHPA39iwWrWW0gymQLbDS5/PHlsVSw89wqSbvty1EKdamE+1RK3sKPqKD5M76mXeGQvn1Ta/JPGaXBDuPReUT47R6uoIwWMDZJERVgREzqmduTvXzpB4kwuDmu8TlEm/VF7gKvnivq/2EP8F3lxEs3IHbCazmkmm/iBrlRXEodV1ikaNJqwuj7j4Wu76neuBJ6LnH98b+ikyldgvR0c5XRQ1Pu2V9KVcsiqLkf/O50zXBmNK2621jYz9SHnc+f33spQmaSmcoYo5HSROJf8qNytgg2bnuu+NxflTJHKYj3qJectKXE0mSMkg== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(376002)(346002)(396003)(451199018)(36840700001)(40470700004)(46966006)(70586007)(36860700001)(40460700003)(8676002)(7696005)(478600001)(26005)(36756003)(82310400005)(54906003)(6666004)(186003)(316002)(86362001)(5660300002)(2906002)(6916009)(70206006)(41300700001)(8936002)(107886003)(4326008)(40480700001)(336012)(2616005)(7636003)(83380400001)(426003)(47076005)(356005)(82740400003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2023 18:10:54.8690 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 782d9603-fcee-4321-7323-08db0611fe0e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT090.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6354 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain In SSDT CPU topology generator allow for multiple top level physical=0D nodes as would be seen with a multi-socket system. This will create a=0D top level processor container for all systems.=0D =0D Signed-off-by: Jeff Brasen =0D ---=0D .../SsdtCpuTopologyGenerator.c | 43 ++++++-------------=0D 1 file changed, 12 insertions(+), 31 deletions(-)=0D =0D diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/Ss= dtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTop= ologyLibArm/SsdtCpuTopologyGenerator.c=0D index c24da8ec71..46b757e0b2 100644=0D --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c=0D +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c=0D @@ -814,7 +814,8 @@ CreateAmlProcessorContainer (=0D Protocol Interface.=0D @param [in] NodeToken Token of the CM_ARM_PROC_HIERARCHY_I= NFO=0D currently handled.=0D - Cannot be CM_NULL_TOKEN.=0D + CM_NULL_TOKEN if top level container= =0D + should be created.=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 @@ -841,12 +842,12 @@ CreateAmlCpuTopologyTree (=0D AML_OBJECT_NODE_HANDLE ProcContainerNode;=0D UINT32 Uid;=0D UINT16 Name;=0D + UINT32 NodeFlags;=0D =0D ASSERT (Generator !=3D NULL);=0D ASSERT (Generator->ProcNodeList !=3D NULL);=0D ASSERT (Generator->ProcNodeCount !=3D 0);=0D ASSERT (CfgMgrProtocol !=3D NULL);=0D - ASSERT (NodeToken !=3D CM_NULL_TOKEN);=0D ASSERT (ParentNode !=3D NULL);=0D ASSERT (ProcContainerIndex !=3D NULL);=0D =0D @@ -893,8 +894,14 @@ CreateAmlCpuTopologyTree (=0D } else {=0D // If this is not a Cpu, then this is a processor container.=0D =0D + NodeFlags =3D Generator->ProcNodeList[Index].Flags;=0D + // Allow physical property for top level nodes=0D + if (NodeToken =3D=3D CM_NULL_TOKEN) {=0D + NodeFlags &=3D ~EFI_ACPI_6_3_PPTT_PACKAGE_PHYSICAL;=0D + }=0D +=0D // Acpi processor Id for clusters is not handled.=0D - if ((Generator->ProcNodeList[Index].Flags & PPTT_PROCESSOR_MASK) != =3D=0D + if ((NodeFlags & PPTT_PROCESSOR_MASK) !=3D=0D PPTT_CLUSTER_PROCESSOR_MASK)=0D {=0D DEBUG ((=0D @@ -974,8 +981,6 @@ CreateTopologyFromProcHierarchy (=0D )=0D {=0D EFI_STATUS Status;=0D - UINT32 Index;=0D - UINT32 TopLevelProcNodeIndex;=0D UINT32 ProcContainerIndex;=0D =0D ASSERT (Generator !=3D NULL);=0D @@ -984,8 +989,7 @@ CreateTopologyFromProcHierarchy (=0D ASSERT (CfgMgrProtocol !=3D NULL);=0D ASSERT (ScopeNode !=3D NULL);=0D =0D - TopLevelProcNodeIndex =3D MAX_UINT32;=0D - ProcContainerIndex =3D 0;=0D + ProcContainerIndex =3D 0;=0D =0D Status =3D TokenTableInitialize (Generator, Generator->ProcNodeCount);=0D if (EFI_ERROR (Status)) {=0D @@ -993,33 +997,10 @@ CreateTopologyFromProcHierarchy (=0D return Status;=0D }=0D =0D - // It is assumed that there is one unique CM_ARM_PROC_HIERARCHY_INFO=0D - // structure with no ParentToken and the EFI_ACPI_6_3_PPTT_PACKAGE_PHYSI= CAL=0D - // flag set. All other CM_ARM_PROC_HIERARCHY_INFO are non-physical and=0D - // have a ParentToken.=0D - for (Index =3D 0; Index < Generator->ProcNodeCount; Index++) {=0D - if ((Generator->ProcNodeList[Index].ParentToken =3D=3D CM_NULL_TOKEN) = &&=0D - (Generator->ProcNodeList[Index].Flags &=0D - EFI_ACPI_6_3_PPTT_PACKAGE_PHYSICAL))=0D - {=0D - if (TopLevelProcNodeIndex !=3D MAX_UINT32) {=0D - DEBUG ((=0D - DEBUG_ERROR,=0D - "ERROR: SSDT-CPU-TOPOLOGY: Top level CM_ARM_PROC_HIERARCHY_INFO = "=0D - "must be unique\n"=0D - ));=0D - ASSERT (0);=0D - goto exit_handler;=0D - }=0D -=0D - TopLevelProcNodeIndex =3D Index;=0D - }=0D - } // for=0D -=0D Status =3D CreateAmlCpuTopologyTree (=0D Generator,=0D CfgMgrProtocol,=0D - Generator->ProcNodeList[TopLevelProcNodeIndex].Token,=0D + CM_NULL_TOKEN,=0D ScopeNode,=0D &ProcContainerIndex=0D );=0D -- =0D 2.25.1=0D =0D