From nobody Sun Feb 8 21:29:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+93970+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1663624897735350.7512066412172; Mon, 19 Sep 2022 15:01:37 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id YsIpYY1788612x3tyZC29Yt7; Mon, 19 Sep 2022 15:01:37 -0700 X-Received: from NAM04-DM6-obe.outbound.protection.outlook.com (NAM04-DM6-obe.outbound.protection.outlook.com [40.107.102.83]) by mx.groups.io with SMTP id smtpd.web12.5062.1663624896659048645 for ; Mon, 19 Sep 2022 15:01:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OvDCKUPY98eXdxO9TFsr8i8Tr2Xq8y+Tx4PZFPlmh0fSVp414iQUqjxfDNJY4YJMKGKywJD6pX7XEOuf40T2rAdTawfmsDBbQ0juiYcxqTIr1MLGTZOYBAhMccm4jhY/rbbo5nEHYOq6vcebj3BS1tg6MAJxz6aN0Q22/hc5/LNASNaFhHMX7+wk7GYsYdvKi45IE99Up5a2TlrTUy1kHyydW5YDkCHzySWjIwwRQ9imFzt2Qt07JNeFA80UJQ/taozJMV5DKicGsARah3giTpm0K1e2JlFZUaSAq/O8Y6hBR8CcDzFSEW8WJjW5OUqonzWv9cyfSVcLK3GidyFrYw== 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=o29N+fsz4FJVamCJ5J0XJneZ5mWurTTSj6LNAFuc2AY=; b=RiGt1vw/b1BGK+CoyGNdskCzijHxsi+mAdHzVpmRcY6zWW8G0gIooBGK9D1UdDz5J34wAUx6kvhv+PLmBs7+NrPt86CHTVmU+QpXZxOP574DJ7K5CpHoMKS4Tw7ZjmV4HE6GmVrOA6vqB+kG33fJcMZioaNicYqBvuzwlUH0r8+dIz+qD59BQ+MYf2HEb9qKjrt4A2x2jRSSyrjBLCJ31eKfIA+eng098CDpIzSjYtIrEp3dZBUrQGsTTrttCA6kMeXClBukYxTWEQE6a9uwaLCPAfE9nbaJIW3mqGI/p2D4Plx0MTwBo7pbOtPi6NfO3OLLSldlqhb3+0sryNRTdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) 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 X-Received: from BN9PR03CA0405.namprd03.prod.outlook.com (2603:10b6:408:111::20) by SA1PR12MB7151.namprd12.prod.outlook.com (2603:10b6:806:2b1::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.19; Mon, 19 Sep 2022 22:01:33 +0000 X-Received: from BN8NAM11FT039.eop-nam11.prod.protection.outlook.com (2603:10b6:408:111:cafe::78) by BN9PR03CA0405.outlook.office365.com (2603:10b6:408:111::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.21 via Frontend Transport; Mon, 19 Sep 2022 22:01:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+93970+1787277+3901457@groups.io; helo=mail02.groups.io; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT039.mail.protection.outlook.com (10.13.177.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.12 via Frontend Transport; Mon, 19 Sep 2022 22:01:33 +0000 X-Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Mon, 19 Sep 2022 15:01:19 -0700 X-Received: from drhqmail202.nvidia.com (10.126.190.181) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Mon, 19 Sep 2022 15:01:19 -0700 X-Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Mon, 19 Sep 2022 15:01:18 -0700 X-Received: from f153882e4be8.nvidia.com (10.127.8.12) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.986.29 via Frontend Transport; Mon, 19 Sep 2022 15:01:18 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , , , Jeff Brasen Subject: [edk2-devel] [PATCH v4 3/3] DynamicTablesPkg: SSDT CPU _CPC generator Date: Mon, 19 Sep 2022 16:01:11 -0600 Message-ID: <7bd8126e9f99e06fe0dc647e00e1a955856db018.1663624166.git.jbrasen@nvidia.com> In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT039:EE_|SA1PR12MB7151:EE_ X-MS-Office365-Filtering-Correlation-Id: bd37e3be-4973-410d-2c66-08da9a8a83d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: mtzBxaENVAIFx8+RDmNnSG0ySd/S/6YuZ3l9/1PcppusFVgQ6hzpHqh39GO87E6qXkVM3xAK+OKMCT0O6hayQhesE4gtUw/v2qaP3vXo9W9WXO4xOo4k/7aDcIVhWfmCGjo3PRIh8r3UVLzs8eaHMt1ABnbw4evPvzcxZjRJxJpU8lC/oan7tTuSbupBb3z/+lhccEZPtCydZYN8WjJtmZskm4T/ukBfJk05V2d8fxbpc+rHuJG6+G5wz9/kXPWGq/eeJEcSYPshxX1ca6s4Dv6KAUf+zoG7GUAODrr1k/bYgOxSngT/0I9TJUdT4UHz0wVZKahfWjU3RvmWDSJOz/xHwWs+7aFH9MkavbQ6WH4N/q3k/EaFwjy806CmksB0NuG2Eh/VnjMh4q9nAdjJtPrEmt4VbP5ZlhIyxMplzXv11hNF0XVNR3i9dLLuMFNAThKFSbxuu2ek2nv+Fw3Wcz21KTAYCN42gPkTfezcp084mmKbkS6LJ72dYINEvdEZW/VWvR9aMXa+9l3njJTvYscqQ2jNDiOZO8tGTgGgauJHqg7F2w2gPmHXy/P1+zxU9BQGCRvRrRmKmuFGnruRaacOKDDiPsEyn7tVV+TQMOuGQfz3iN93FV/sTxQ3LeiZ1HFE6BvR11IyKHK9/9rkm32uSHn8PsWjOkYWCdc02xS6qPZyPEeRyTUyiXkCLm8iRpYmTBQB8rpgZQ2lH1wMlR6nI8tWu/kFnJU3/VYJhHh05wwzzh12MayTu7MF/Hj9H5Gr5HYnhgHvTNbgQBjocw== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2022 22:01:33.2305 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bd37e3be-4973-410d-2c66-08da9a8a83d8 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.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT039.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7151 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,jbrasen@nvidia.com X-Gm-Message-State: dm93wz8uiyyvBCbtGshmf1x5x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1663624897; bh=DfqF5NAZJBBrNXrX7aqCzi21qNYkGhES9fu3tXSTCIg=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=fmUtfTxzZ4FyYXCE4liQfc2qC0KPi+UBxy9ccoxJePCDQWaNKqpMZVz5fg7dzVk/ZN+ ShT3au0pQU9m2ELyQulolCOh9OlvYlmNfS+Tw7BazPWHL5k/27XGgnUO6KXFVO8OWiyph OkVLGushjCIfkR+SyLXnH5/hucKFRf2UnPM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1663624898859100005 Content-Type: text/plain; charset="utf-8" Add code to use a token attached to GICC to generate _CPC object on cpus. Signed-off-by: Jeff Brasen --- .../SsdtCpuTopologyGenerator.c | 133 +++++++++++++++++- 1 file changed, 127 insertions(+), 6 deletions(-) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/Ss= dtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTop= ologyLibArm/SsdtCpuTopologyGenerator.c index 8561f48e1f..22422aef75 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTo= pologyGenerator.c @@ -76,6 +76,16 @@ GET_OBJECT_LIST ( CM_ARM_LPI_INFO ); =20 +/** + This macro expands to a function that retrieves the CPC + information from the Configuration Manager. +*/ +GET_OBJECT_LIST ( + EObjNameSpaceArm, + EArmObjCpcInfo, + CM_ARM_CPC_INFO + ); + /** Initialize the TokenTable. =20 One entry should be allocated for each CM_ARM_PROC_HIERARCHY_INFO @@ -229,6 +239,93 @@ WriteAslName ( return EFI_SUCCESS; } =20 +/** Create and add an _CPC Node to Cpu Node. + + For instance, transform an AML node from: + Device (C002) + { + Name (_UID, 2) + Name (_HID, "ACPI0007") + } + + To: + Device (C002) + { + Name (_UID, 2) + Name (_HID, "ACPI0007") + Name(_CPC, Package() + { + NumEntries, // Integer + Revision, // Integer + HighestPerformance, // Integer or Buffer (Res= ource Descriptor) + NominalPerformance, // Integer or Buffer (Res= ource Descriptor) + LowestNonlinearPerformance, // Integer or Buffer (Res= ource Descriptor) + LowestPerformance, // Integer or Buffer (Res= ource Descriptor) + GuaranteedPerformanceRegister, // Buffer (Resource Descr= iptor) + DesiredPerformanceRegister , // Buffer (Resource Descr= iptor) + MinimumPerformanceRegister , // Buffer (Resource Descr= iptor) + MaximumPerformanceRegister , // Buffer (Resource Descr= iptor) + PerformanceReductionToleranceRegister, // Buffer (Resource Descr= iptor) + TimeWindowRegister, // Buffer (Resource Descr= iptor) + CounterWraparoundTime, // Integer or Buffer (Res= ource Descriptor) + ReferencePerformanceCounterRegister, // Buffer (Resource Descr= iptor) + DeliveredPerformanceCounterRegister, // Buffer (Resource Descr= iptor) + PerformanceLimitedRegister, // Buffer (Resource Descr= iptor) + CPPCEnableRegister // Buffer (Resource Descr= iptor) + AutonomousSelectionEnable, // Integer or Buffer (Res= ource Descriptor) + AutonomousActivityWindowRegister, // Buffer (Resource Descr= iptor) + EnergyPerformancePreferenceRegister, // Buffer (Resource Descr= iptor) + ReferencePerformance // Integer or Buffer (Res= ource Descriptor) + LowestFrequency, // Integer or Buffer (Res= ource Descriptor) + NominalFrequency // Integer or Buffer (Res= ource Descriptor) + }) + } + + @param [in] Generator The SSDT Cpu Topology generator. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol Interface. + @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO describing + the Cpu. + @param [in] Node CPU Node to which the _CPC node is + attached. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +STATIC +EFI_STATUS +EFIAPI +CreateAmlCpcNode ( + IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + IN CM_ARM_GICC_INFO *GicCInfo, + IN AML_OBJECT_NODE_HANDLE *Node + ) +{ + EFI_STATUS Status; + CM_ARM_CPC_INFO *CpcInfo; + + Status =3D GetEArmObjCpcInfo ( + CfgMgrProtocol, + GicCInfo->CpcToken, + &CpcInfo, + NULL + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D AmlCreateCpcNode ( + CpcInfo, + Node, + NULL + ); + ASSERT_EFI_ERROR (Status); + return Status; +} + /** Create and add an _LPI method to Cpu/Cluster Node. =20 For instance, transform an AML node from: @@ -581,7 +678,20 @@ CreateAmlCpuFromProcHierarchy ( // CM_ARM_PROC_HIERARCHY_INFO, create an _LPI method returning them. if (ProcHierarchyNodeInfo->LpiToken !=3D CM_NULL_TOKEN) { Status =3D CreateAmlLpiMethod (Generator, ProcHierarchyNodeInfo, CpuNo= de); - ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + return Status; + } + } + + // If a CPC info is associated with the + // GicCinfo, create an _CPC method returning them. + if (GicCInfo->CpcToken !=3D CM_NULL_TOKEN) { + Status =3D CreateAmlCpcNode (Generator, CfgMgrProtocol, GicCInfo, CpuN= ode); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + return Status; + } } =20 return Status; @@ -934,10 +1044,11 @@ CreateTopologyFromGicC ( IN AML_OBJECT_NODE_HANDLE ScopeNode ) { - EFI_STATUS Status; - CM_ARM_GICC_INFO *GicCInfo; - UINT32 GicCInfoCount; - UINT32 Index; + EFI_STATUS Status; + CM_ARM_GICC_INFO *GicCInfo; + UINT32 GicCInfoCount; + UINT32 Index; + AML_OBJECT_NODE_HANDLE CpuNode; =20 ASSERT (Generator !=3D NULL); ASSERT (CfgMgrProtocol !=3D NULL); @@ -961,12 +1072,22 @@ CreateTopologyFromGicC ( ScopeNode, &GicCInfo[Index], Index, - NULL + &CpuNode ); if (EFI_ERROR (Status)) { ASSERT (0); break; } + + // If a CPC info is associated with the + // GicCinfo, create an _CPC method returning them. + if (GicCInfo->CpcToken !=3D CM_NULL_TOKEN) { + Status =3D CreateAmlCpcNode (Generator, CfgMgrProtocol, &GicCInfo[In= dex], CpuNode); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + break; + } + } } // for =20 return Status; --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#93970): https://edk2.groups.io/g/devel/message/93970 Mute This Topic: https://groups.io/mt/93792020/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-