From nobody Fri May 17 10:34:18 2024 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+106775+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1689027977; cv=none; d=zohomail.com; s=zohoarc; b=aUHaVFFdB00s4aJiuF5t0w/uWXogst+5VyhWlSviNQbxpQMpLAjpO7A0pK/DruckP8Rbb5Xu6HcD4x8rtGK+lsaowN6XcniGateK61nMQdwQXSfgRkfRewrZaDni+Q/4SYz1WA/Ao8g5SRey8qhMdXkYQoTxt45MiTs0cApp3RU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689027977; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=9UZTOf+RKr8B1ltlk5dLh4D74CuWUkaBjTM/u99Liec=; b=fBCQpubYxdFvHqQZ2mfaqc2wl9pV1d7xPCVGK2jPam7JkpRP6LBtq7xEk2aubFdJGCmTnnUlT+xs3bPtfFVnkD9PUtLshJW4V5aSpSZnnrnjSjw+NHaURsap/5/cNoet+khDkVI2Rs5TsiJxHcn8xWnKzAEcphZMbWGxrKIwI/I= ARC-Authentication-Results: i=1; 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+106775+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1689027977224448.24123965999115; Mon, 10 Jul 2023 15:26:17 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id SyETYY1788612x0lpYHnHvet; Mon, 10 Jul 2023 15:26:16 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.43]) by mx.groups.io with SMTP id smtpd.web10.210.1689027976069846243 for ; Mon, 10 Jul 2023 15:26:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tw5P2/HHlU7mJuOhRS9I9gYgSc/hwuxph7hO2iVM8mHKujafDTr5+J1pbnaIk1e/L0v0sVjfROKa5AmKYAhU7/Zd1MfHKN3BE7fXzQKAOg9khwwil9WtmmtHLe1px0/0nmxYzrLhB6RYdLUxYrsGLG3T8Q03/gRelDP4kUK6owM5IfAIe8cZaQ5tLrN5EmzVhPClTWraXHMBZN5dO9IKVNwlNDvHDhUJKLwT7grJJlSTZUMibtilkqqXvy6bwcuag8Gg+QNs3QRd1ZjB9w6K/YK3yC7vGvvZvhvr8YBDZsI6qlRTDwoF19ZjHqS/q6XIoKyGWaa/s92RXAKaNHuX3w== 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=3U0K6rmGR1FMn0I08sxsNTtraTGa1SORQsuZWm5NATE=; b=DzhUVC7S2uTfCfG5tu4zhiB/N7JBnjIqVhT+AEPimc9HzqhzkiUguiw3FAHaxgIO0YxywY10NSVCM090wtEQb9BYZl3+Ion2KTkWL6bDQEE6yjovwsAP2fKt1NS+17S5PVWX749k9SY/UdgRThkHAxNGG+fNCNjFmdO3SQHz6sJE2HCecrAvANrav799tD8rWZYFzFAGB/p4FKcF6TbWWdk+qOvtcM0qN+/WHk6fPl0cHrY7Zpz0tf92wpIz6f7WT8WUhY8Jrx5htwietTgI/LXPLulNpUeIF3tcsiHvqlq6ax7csJZhuOqA8z6WYm9N5h1pieojDMLjHI8Aqii8gg== 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 MW4PR04CA0336.namprd04.prod.outlook.com (2603:10b6:303:8a::11) by SN7PR12MB6888.namprd12.prod.outlook.com (2603:10b6:806:260::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.26; Mon, 10 Jul 2023 22:26:13 +0000 X-Received: from CO1NAM11FT108.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8a:cafe::44) by MW4PR04CA0336.outlook.office365.com (2603:10b6:303:8a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31 via Frontend Transport; Mon, 10 Jul 2023 22:26:13 +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+106775+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 CO1NAM11FT108.mail.protection.outlook.com (10.13.175.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.18 via Frontend Transport; Mon, 10 Jul 2023 22:26:13 +0000 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) 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.5; Mon, 10 Jul 2023 15:26:02 -0700 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Mon, 10 Jul 2023 15:26:01 -0700 X-Received: from 6cd8174ac25c.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Mon, 10 Jul 2023 15:26:01 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , Jeff Brasen , "Swatisri Kantamsetti" , Ashish Singhal Subject: [edk2-devel] [PATCH v2 1/4] DynamicTablesPkg: Add ThermalZone CodeGen function Date: Mon, 10 Jul 2023 22:25:56 +0000 Message-ID: <36ae608754277a623eeadb39f4188cababac0b51.1689027745.git.jbrasen@nvidia.com> In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT108:EE_|SN7PR12MB6888:EE_ X-MS-Office365-Filtering-Correlation-Id: e92c7722-1d0a-49c4-12a5-08db8194ab87 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: EMu0szlsLrWFUwxFJKHXOpGDwqLabiKHgeE1CdNBEIltYikawwDvbYPpvsnzU8mAhj/BGE/GenkXGt7dXjzHIak5HkMt42Z8m+NMnUtTMESaRFCAAtwKsAlOJLdiP1/mjEsav9jTTQPvxNlL9wEkKjW4oWOv5+L0c/OTWq6ug0TEULJMjdJtaer6UMbdpaA1zG5H1ApMaiRf7nT5qGvw+0kVUhvkhPre9KO5Fzelz0qpfjogb6OOG3KBjvebpthIjasiyxmQDhNRLmxXlBHh44FWcsWdNg5fp8GtsKP333oldodz5fSBia4X8blonwS2f/hkZ98VO/796lNlzbCmlhS2AZA8copVZUjS+TybAfOg+asF7qHE1wmP0v/ckzyVOZI901WiN+ikGR/c5BkLouV1E/OD6WMAUiloBvlnrf7jEjv4zl0P1w62ZlXaZuHOpJi6I77eCmAIzJ1vMVFdFA+/5ksKchJOD5S2DmRXW/GTl7C4HDkPjzBXSqbF1xuLIE5Na88KX24Os2sWr9A/3xXbTSMCi+dTGRsU0Rv7ta4O1x5EFecchStRKCR4ifDNc/NALeYFKiLWlp0pmxaFVk5/Rs2cNdEcuSC1vuE13LCGfXyBS+UTVEjaXe/Q1Z0o3O/vtiDLdyHbvGkU1Yt8HRipp+LmaVsj8A5ighYSTR0tDcpolcNshlkl7+SOUSQSpl8mRo5mJ7894ZW6KQGrRogPSrxA5LwDWI7iUu1QuTLSaHTJVukrfAYLjz+iK/Lp X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 22:26:13.4393 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e92c7722-1d0a-49c4-12a5-08db8194ab87 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: CO1NAM11FT108.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6888 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: tB2GtO7aU1nvhmyD3UMi3XBEx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1689027976; bh=KvhnY5S4Caq/95igw+9QkY6roJUlvKEcPTtUfxGkWA0=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=YMzhfWf8J9NIXHK70pAbgi1DyWcE9y1GkrISL+S27COBxCkrZZBktmiCXNDUJBz7spZ eWsicqarYOgYamWR1BQFOIqXwz0HusNIH6LvyNKVYmL7sDj6n2KZ8NjKdka15S73Z9pNC 4jPd555C+csnE0eLp+8IALtLt5IFEgh+0cU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1689027978077100003 Content-Type: text/plain; charset="utf-8" Add API to generate a ThermalZone object to AmlLib. Reviewed-by: Swatisri Kantamsetti Reviewed-by: Ashish Singhal Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../Include/Library/AmlLib/AmlLib.h | 28 +++++ .../Common/AmlLib/CodeGen/AmlCodeGen.c | 116 ++++++++++++++++++ 2 files changed, 144 insertions(+) diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h b/DynamicTabl= esPkg/Include/Library/AmlLib/AmlLib.h index 9210c5091548..d201ae9499fa 100644 --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h @@ -1038,6 +1038,34 @@ AmlCodeGenDevice ( OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL ); =20 +/** AML code generation for a ThermalZone object node. + + AmlCodeGenThermalZone ("TZ00", ParentNode, NewObjectNode) is + equivalent of the following ASL code: + ThermalZone(TZ00) {} + + @ingroup CodeGenApis + + @param [in] NameString The new ThermalZone's name. + Must be a NULL-terminated ASL NameString + e.g.: "DEV0", "DV15.DEV0", etc. + The input string is copied. + @param [in] ParentNode If provided, set ParentNode as the parent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenThermalZone ( + IN CONST CHAR8 *NameString, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ); + /** AML code generation for a Scope object node. =20 AmlCodeGenScope ("_SB", ParentNode, NewObjectNode) is diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c b/= DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c index 0b223379fa4b..88537b7e2d27 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c @@ -1218,6 +1218,122 @@ AmlCodeGenDevice ( return Status; } =20 +/** AML code generation for a ThermalZone object node. + + AmlCodeGenThermalZone ("TZ00", ParentNode, NewObjectNode) is + equivalent of the following ASL code: + ThermalZone(TZ00) {} + + @ingroup CodeGenApis + + @param [in] NameString The new ThermalZone's name. + Must be a NULL-terminated ASL NameString + e.g.: "DEV0", "DV15.DEV0", etc. + The input string is copied. + @param [in] ParentNode If provided, set ParentNode as the parent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenThermalZone ( + IN CONST CHAR8 *NameString, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ) +{ + EFI_STATUS Status; + AML_OBJECT_NODE *ObjectNode; + AML_DATA_NODE *DataNode; + CHAR8 *AmlNameString; + UINT32 AmlNameStringSize; + + if ((NameString =3D=3D NULL) || + ((ParentNode =3D=3D NULL) && (NewObjectNode =3D=3D NULL))) + { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + ObjectNode =3D NULL; + DataNode =3D NULL; + AmlNameString =3D NULL; + + Status =3D ConvertAslNameToAmlName (NameString, &AmlNameString); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D AmlGetNameStringSize (AmlNameString, &AmlNameStringSize); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler1; + } + + Status =3D AmlCreateObjectNode ( + AmlGetByteEncodingByOpCode (AML_EXT_OP, AML_EXT_THERMAL_ZONE_= OP), + AmlNameStringSize + AmlComputePkgLengthWidth (AmlNameStringSi= ze), + &ObjectNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler1; + } + + Status =3D AmlCreateDataNode ( + EAmlNodeDataTypeNameString, + (UINT8 *)AmlNameString, + AmlNameStringSize, + &DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler2; + } + + Status =3D AmlSetFixedArgument ( + ObjectNode, + EAmlParseIndexTerm0, + (AML_NODE_HEADER *)DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + AmlDeleteTree ((AML_NODE_HEADER *)DataNode); + goto error_handler2; + } + + Status =3D LinkNode ( + ObjectNode, + ParentNode, + NewObjectNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler2; + } + + // Free AmlNameString before returning as it is copied + // in the call to AmlCreateDataNode(). + goto error_handler1; + +error_handler2: + if (ObjectNode !=3D NULL) { + AmlDeleteTree ((AML_NODE_HEADER *)ObjectNode); + } + +error_handler1: + if (AmlNameString !=3D NULL) { + FreePool (AmlNameString); + } + + return Status; +} + /** AML code generation for a Scope object node. =20 AmlCodeGenScope ("_SB", ParentNode, NewObjectNode) is --=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 (#106775): https://edk2.groups.io/g/devel/message/106775 Mute This Topic: https://groups.io/mt/100068076/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- From nobody Fri May 17 10:34:18 2024 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+106776+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1689027978; cv=none; d=zohomail.com; s=zohoarc; b=dj00kDFogLHPKycXt4XQCSbr1JQnfUHRDEAbXWx5zZIKQ4a18ZDykWU3LwClXt+sjHieAQcjEojKNtzUY/Cm2o4b8garOspaAheB76HhlEdRIWsjgpRtJ6pm2fsNaxyXZjE5pZjfQbG4RkZgddGMlz/VyhHLF4+1A7YINs8pE38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689027978; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=ktruPdzrUiJ0jl95M1vahIwXuuJlwRbrvJ9ETvSZ6ps=; b=P2zhvN3U1vn5jCluIOyjWKJ/8Uu7+GazXlOhaTaC9G9rEvy0xIJDgfgSjsGRvGW+0tfXRHo39Co4vz6qJ1Rx+S4qEpRLAZ9U01tltWv9AkvxC8+vFB9s/y7DHrDv16TlSuBWDhKKtE18wiCd6vlT8wrdveSsyjyL8DYf1Izij+Y= ARC-Authentication-Results: i=1; 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+106776+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1689027978419714.7683899100975; Mon, 10 Jul 2023 15:26:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id hJJ5YY1788612xpYyDwUtnKL; Mon, 10 Jul 2023 15:26:18 -0700 X-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.web11.230.1689027977413643256 for ; Mon, 10 Jul 2023 15:26:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bI4zHPyChgR/yjK0M8z3CBmRwf5t/c7A+zssVLuEXKL63vRHGu9hR+r14ETZQ8/GBypURaupka0qfY2ERQU4AOxI5MZyG+vdAZ0bhcJi1oupSu2jtMFhfKHfN/6iK39M0WQ5Gq2VV95totLg7ZheljqxbIsTp1QWfO1hvaxwvB9DraOdji/SdRD0XcaehyYocOZsFbDc56ayFYetUT78rRX46jwGKMSTITTJH5FMU26HsPyngu4xOwvxOeAGrNyPFelFJyRb+1iwMScsImBqCO/+3TNX0pjf5UrBQ1yn1B03oU9xsKPxgYwcZHqURoOix1hvOD/shm0JkzjS+1mh9A== 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=VylWj+m+O4MIgCK+XVcG7NrCUXv19v8njnIdWWRZ3cA=; b=PpntcosT1jjilxwmOel2uAIu7nCrSOc13r34B05WjxXRLdmOs3kU3o8BP+J1YAB8yviICXfPZbGkZubNLFUINaKT1kikgozNpq3fMplICAtM1EJ2LXHsKWsA89/OAW23g1vzGLRhBLdA5nN6wzWznVgLr/YLEg8uf1AdgKo5QZoCioR5K1PdF3dv/wBmXayK00jPKOyB5DbyphZoXq+SgGoURiek2qgoZnpK2/WUZBkSI0OTmxJYLWo0iTl9+IUJwWQDHN0aPsX9YSd6NueaEL2HeHgQB/ztBP5/sX3Jt+u3UGQbp5oUEpyKuNjAhViI6dOuWr54Qn0zTv45DM9+dQ== 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 MW4P223CA0007.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::12) by BY5PR12MB4289.namprd12.prod.outlook.com (2603:10b6:a03:204::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31; Mon, 10 Jul 2023 22:26:14 +0000 X-Received: from CO1NAM11FT063.eop-nam11.prod.protection.outlook.com (2603:10b6:303:80:cafe::2b) by MW4P223CA0007.outlook.office365.com (2603:10b6:303:80::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31 via Frontend Transport; Mon, 10 Jul 2023 22:26:14 +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+106776+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 CO1NAM11FT063.mail.protection.outlook.com (10.13.175.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.18 via Frontend Transport; Mon, 10 Jul 2023 22:26:13 +0000 X-Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.5; Mon, 10 Jul 2023 15:26:02 -0700 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) 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.37; Mon, 10 Jul 2023 15:26:02 -0700 X-Received: from 6cd8174ac25c.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Mon, 10 Jul 2023 15:26:01 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , Jeff Brasen , "Swatisri Kantamsetti" , Ashish Singhal Subject: [edk2-devel] [PATCH v2 2/4] DynamicTablesPkg: Add support for simple method invocation. Date: Mon, 10 Jul 2023 22:25:57 +0000 Message-ID: <124c8bb20d692f1b7c18758e96dbf35ed17478f6.1689027745.git.jbrasen@nvidia.com> In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT063:EE_|BY5PR12MB4289:EE_ X-MS-Office365-Filtering-Correlation-Id: 7cc620c3-e0bd-41c8-f309-08db8194abc4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: +nBL8FYkmLMHsc23u8BEcBkCNfTVznowV/31jPhZB2vuPXPy2ZIpgogZoYS0T2Z1BLpJzksqorLEcywQdmf2wP2b6Ailx6q2qmNTxZ08LFNBDDxUpzQB/3TzzNN5txNVfwXYPv+AFtvYKS31G1EorGc2XQCgMeS2OoSjSkZhZaIEVwaF8H+tzizBHzTukngQFKWZdl0NavJOt7R71gyEUQWQiiTjKfxgq8rE17tA2WzeC7srf98sp9gb+J/F3xHFdr7TXXjtrE8tuumbDfbNfYbo0emnuAL7azXN1bw7olmbRxkqGgEOrFJlMt4XEYw/H4JX+/C6KiZSO1FElaFTDYmDoLUGSJVR3738HabWIf4n68wK4lziT0o9D1944wlBRQNGynNhp+zBX/wvlJk/iV9YJW7y4+Nh2BoVWSOg/qXffv/0H+/T0sDUpZsEmzw3H4NN3oGILh5ni+VkSBKzuAPSVaRV1Z1gxF+zZch4Td7ZUhljuki1xZj6ZilchiHvlNo6vnsJU9l/fVdOwFvV7/JO+Nkdf1D9Qvady85aKpFR72E0SfREtP1aJpLdo2/e4svoZnFd7bfUIEwJaOUjPKpKZEA/EJNdNoS1x+Zh89+t4t60apjmiPW2gt/o4q4gkULVJlKQ76x3AOntbeHH3iIG0xm/K3wUe3BcTHVUnAKUawqc2xdtRrv6eGU7GmAcd4Y/o4IAG1y+SZnSCmuXswqyNFQkSZz89fM37+SKZ53uDJwdf02aET78mqp7kJJi X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 22:26:13.8292 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7cc620c3-e0bd-41c8-f309-08db8194abc4 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: CO1NAM11FT063.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4289 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: 6z4nucyTby1P9Y0CRuR3fCFax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1689027978; bh=BLOe5zLBj+wtqihx0qyfnFgSK8Xg1XAf33M37DUkNbc=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=NC8ZPz56A6tbZxKzBb8b2qPOGDaEhm+P7ugmUcH06x+J7S4jxSvX7HfSQP5FCt7yQMR gDZezOR6FNpMcYrUjMldP3O8M5WSeYOpein6vA2v86SYEn59f6JxzM5aaTrgYezixFEMJ UM43czyeoA8V3GKRrG/PPPQAlD9j+NC+WZg= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1689027979873100011 Content-Type: text/plain; charset="utf-8" Add support to add Return objects via AML that pass a single integer argument to the named method. Reviewed-by: Swatisri Kantamsetti Reviewed-by: Ashish Singhal Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../Include/Library/AmlLib/AmlLib.h | 54 +++++ .../Common/AmlLib/CodeGen/AmlCodeGen.c | 224 ++++++++++++++++++ 2 files changed, 278 insertions(+) diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h b/DynamicTabl= esPkg/Include/Library/AmlLib/AmlLib.h index d201ae9499fa..b82c7a3ce874 100644 --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h @@ -1194,6 +1194,60 @@ AmlCodeGenMethodRetInteger ( OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL ); =20 +/** AML code generation for a method returning a NameString that takes an + integer argument. + + AmlCodeGenMethodRetNameStringIntegerArgument ( + "MET0", "MET1", 1, TRUE, 3, 5, ParentNode, NewObjectNode + ); + is equivalent of the following ASL code: + Method(MET0, 1, Serialized, 3) { + Return (MET1 (5)) + } + + The ASL parameters "ReturnType" and "ParameterTypes" are not asked + in this function. They are optional parameters in ASL. + + @param [in] MethodNameString The new Method's name. + Must be a NULL-terminated ASL NameStri= ng + e.g.: "MET0", "_SB.MET0", etc. + The input string is copied. + @param [in] ReturnedNameString The name of the object returned by the + method. Optional parameter, can be: + - NULL (ignored). + - A NULL-terminated ASL NameString. + e.g.: "MET0", "_SB.MET0", etc. + The input string is copied. + @param [in] NumArgs Number of arguments. + Must be 0 <=3D NumArgs <=3D 6. + @param [in] IsSerialized TRUE is equivalent to Serialized. + FALSE is equivalent to NotSerialized. + Default is NotSerialized in ASL spec. + @param [in] SyncLevel Synchronization level for the method. + Must be 0 <=3D SyncLevel <=3D 15. + Default is 0 in ASL. + @param [in] IntegerArgument Argument to pass to the NameString. + @param [in] ParentNode If provided, set ParentNode as the par= ent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenMethodRetNameStringIntegerArgument ( + IN CONST CHAR8 *MethodNameString, + IN CONST CHAR8 *ReturnedNameString OPTIONAL, + IN UINT8 NumArgs, + IN BOOLEAN IsSerialized, + IN UINT8 SyncLevel, + IN UINT64 IntegerArgument, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ); + /** Create a _LPI name. =20 AmlCreateLpiNode ("_LPI", 0, 1, ParentNode, &LpiNode) is diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c b/= DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c index 88537b7e2d27..d31a86e98c4c 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c @@ -1881,6 +1881,118 @@ AmlCodeGenReturnInteger ( return Status; } =20 +/** AML code generation for a Return object node, + returning the object as an input NameString with a integer argument. + + AmlCodeGenReturn ("NAM1", 6, ParentNode, NewObjectNode) is + equivalent of the following ASL code: + Return(NAM1 (6)) + + The ACPI 6.3 specification, s20.2.5.3 "Type 1 Opcodes Encoding" states: + DefReturn :=3D ReturnOp ArgObject + ReturnOp :=3D 0xA4 + ArgObject :=3D TermArg =3D> DataRefObject + + Thus, the ReturnNode must be evaluated as a DataRefObject. It can + be a NameString referencing an object. As this CodeGen Api doesn't + do semantic checking, it is strongly advised to check the AML bytecode + generated by this function against an ASL compiler. + + The ReturnNode must be generated inside a Method body scope. + + @param [in] NameString The object referenced by this NameString + is returned by the Return ASL statement. + Must be a NULL-terminated ASL NameString + e.g.: "NAM1", "_SB.NAM1", etc. + The input string is copied. + @param [in] Integer Argument to pass to the NameString + @param [in] ParentNode If provided, set ParentNode as the parent + of the node created. + Must be a MethodOp node. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +STATIC +EFI_STATUS +EFIAPI +AmlCodeGenReturnNameStringIntegerArgument ( + IN CONST CHAR8 *NameString, + IN UINT64 Integer, + IN AML_NODE_HEADER *ParentNode OPTIONAL, + OUT AML_OBJECT_NODE **NewObjectNode OPTIONAL + ) +{ + EFI_STATUS Status; + AML_DATA_NODE *DataNode; + AML_OBJECT_NODE *IntNode; + CHAR8 *AmlNameString; + UINT32 AmlNameStringSize; + AML_OBJECT_NODE *ObjectNode; + + DataNode =3D NULL; + IntNode =3D NULL; + + Status =3D ConvertAslNameToAmlName (NameString, &AmlNameString); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D AmlGetNameStringSize (AmlNameString, &AmlNameStringSize); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + Status =3D AmlCreateDataNode ( + EAmlNodeDataTypeNameString, + (UINT8 *)AmlNameString, + AmlNameStringSize, + &DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + Status =3D AmlCodeGenInteger (Integer, &IntNode); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + // AmlCodeGenReturn() deletes DataNode if error. + Status =3D AmlCodeGenReturn ( + (AML_NODE_HEADER *)DataNode, + ParentNode, + &ObjectNode + ); + ASSERT_EFI_ERROR (Status); + + Status =3D AmlVarListAddTail ( + (AML_NODE_HANDLE)ObjectNode, + (AML_NODE_HANDLE)IntNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + if (NewObjectNode !=3D 0) { + *NewObjectNode =3D ObjectNode; + } + +exit_handler: + if (AmlNameString !=3D NULL) { + FreePool (AmlNameString); + } + + return Status; +} + /** AML code generation for a method returning a NameString. =20 AmlCodeGenMethodRetNameString ( @@ -1989,6 +2101,118 @@ AmlCodeGenMethodRetNameString ( return Status; } =20 +/** AML code generation for a method returning a NameString that takes an + integer argument. + + AmlCodeGenMethodRetNameStringIntegerArgument ( + "MET0", "MET1", 1, TRUE, 3, 5, ParentNode, NewObjectNode + ); + is equivalent of the following ASL code: + Method(MET0, 1, Serialized, 3) { + Return (MET1 (5)) + } + + The ASL parameters "ReturnType" and "ParameterTypes" are not asked + in this function. They are optional parameters in ASL. + + @param [in] MethodNameString The new Method's name. + Must be a NULL-terminated ASL NameStri= ng + e.g.: "MET0", "_SB.MET0", etc. + The input string is copied. + @param [in] ReturnedNameString The name of the object returned by the + method. Optional parameter, can be: + - NULL (ignored). + - A NULL-terminated ASL NameString. + e.g.: "MET0", "_SB.MET0", etc. + The input string is copied. + @param [in] NumArgs Number of arguments. + Must be 0 <=3D NumArgs <=3D 6. + @param [in] IsSerialized TRUE is equivalent to Serialized. + FALSE is equivalent to NotSerialized. + Default is NotSerialized in ASL spec. + @param [in] SyncLevel Synchronization level for the method. + Must be 0 <=3D SyncLevel <=3D 15. + Default is 0 in ASL. + @param [in] IntegerArgument Argument to pass to the NameString. + @param [in] ParentNode If provided, set ParentNode as the par= ent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenMethodRetNameStringIntegerArgument ( + IN CONST CHAR8 *MethodNameString, + IN CONST CHAR8 *ReturnedNameString OPTIONAL, + IN UINT8 NumArgs, + IN BOOLEAN IsSerialized, + IN UINT8 SyncLevel, + IN UINT64 IntegerArgument, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ) +{ + EFI_STATUS Status; + AML_OBJECT_NODE_HANDLE MethodNode; + + if ((MethodNameString =3D=3D NULL) || + ((ParentNode =3D=3D NULL) && (NewObjectNode =3D=3D NULL))) + { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + // Create a Method named MethodNameString. + Status =3D AmlCodeGenMethod ( + MethodNameString, + NumArgs, + IsSerialized, + SyncLevel, + NULL, + &MethodNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // Return ReturnedNameString if provided. + if (ReturnedNameString !=3D NULL) { + Status =3D AmlCodeGenReturnNameStringIntegerArgument ( + ReturnedNameString, + IntegerArgument, + (AML_NODE_HANDLE)MethodNode, + NULL + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler; + } + } + + Status =3D LinkNode ( + MethodNode, + ParentNode, + NewObjectNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler; + } + + return Status; + +error_handler: + if (MethodNode !=3D NULL) { + AmlDeleteTree ((AML_NODE_HANDLE)MethodNode); + } + + return Status; +} + /** AML code generation for a method returning an Integer. =20 AmlCodeGenMethodRetInteger ( --=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 (#106776): https://edk2.groups.io/g/devel/message/106776 Mute This Topic: https://groups.io/mt/100068077/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- From nobody Fri May 17 10:34:18 2024 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+106777+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1689027980; cv=none; d=zohomail.com; s=zohoarc; b=giMDyPedGz0VgC1BmG3ed0P7ZvR1qyfE0kXd9iU1C5PeLl2K8VKAJTwQP6Xw4Hy3RLSyzWaa3RRlQ7KRjKRUmFHQghvXQgAYktnGo4uJErj4ndJTPmDygZHWTf0hzwtBAvx4kpNWSHqaN80TuJoRXVAMFtgxRM/E8oJiGuiMVuU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689027980; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=OTMmA0LSs1TkoP6ob5IJXQeQdJVCBr7XlEkCe4VlaW8=; b=SAZYNJ+vKtmyyJifHqI88dUjODCxqny/hq8Ty0Vwa+iJ14PRfkLlCK1iBaOfmQnsDX6wabmW9ZFhyb/scJ2dzaLal3zL59NvSyaNTGtO+7a6QAH/8vmXj6soz/+XEvvkYoir9W+xVTynr8H2+8WtfMkU3mUk5a5cAMiLCX9M4X0= ARC-Authentication-Results: i=1; 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+106777+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1689027980023860.6795630538737; Mon, 10 Jul 2023 15:26:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id gbxJYY1788612xaA1B2arQvH; Mon, 10 Jul 2023 15:26:19 -0700 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.56]) by mx.groups.io with SMTP id smtpd.web10.211.1689027979020438932 for ; Mon, 10 Jul 2023 15:26:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HRz8vUIAp4L7yY9NCJmNFuXALcNPM7YCOPOhOc8cqFsMYSZHUJQynk/41+9sMMDFD2XsRnloYV2NeNwTTC9jzifMqJqwrBeobO1qiUwoRs0TBMYOUlz4U4bNEL2jfeq01yyrAAiFAL3oHA4jCjGWdi1qYAYEycVX/UnRqUxHpwJBqGBhVFoGXsUdpLXZdJAd2PqFwS1HKci7nPQxqP7J0r2NXKn8VVtbR5+syh/QvnOuiW+3arLNd/3d8C5oHOZU6lVvxKghot1oCmZ8Ewk1DJ9HmoHOeyFbBExIjMzVRAMI6igo1dSEGS8q3GRAaXt/KSEP/eNs9rSEFrak5yI3eQ== 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=hYTVUL6k+vBPBalXA5Wo5iYZ2AGsEzfpQ4/nafeMnVY=; b=dQ6W0rQ4r/4t24cYNLyTCYQItlZb1dbmdcXppoF3n1BLVNZCzcTUgqp2kXxGxNMl2S3TQnR9uXhJ7Iw5LYL8+kOG/7qNJ11UZRmoTFY/lOUeWsNxCIXyMp9wWCoEAA+aTtX0+uAHXB6KaTr7Ohb7VmoIhRk4graF+6uzx1qS1OxEXveHM1H1wX2MJEefoJtBb/YoletjMvPvHfYzwqnXzLrZVfgs5lfhvMtIbXMy+7Ym3qsnpgTM5tJQ9Mg12XxEgnVob7x65aFddSPKPTvZkdnxpgcqYiwdhC7yFNYW91fGEUCjCALQPkQIToZxJCYq5MH8RTULBYDiVUxil0rmPw== 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 MW4PR03CA0223.namprd03.prod.outlook.com (2603:10b6:303:b9::18) by DS0PR12MB8218.namprd12.prod.outlook.com (2603:10b6:8:f2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Mon, 10 Jul 2023 22:26:16 +0000 X-Received: from CO1NAM11FT085.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b9:cafe::44) by MW4PR03CA0223.outlook.office365.com (2603:10b6:303:b9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30 via Frontend Transport; Mon, 10 Jul 2023 22:26:16 +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+106777+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 CO1NAM11FT085.mail.protection.outlook.com (10.13.174.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.19 via Frontend Transport; Mon, 10 Jul 2023 22:26:16 +0000 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) 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.5; Mon, 10 Jul 2023 15:26:03 -0700 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Mon, 10 Jul 2023 15:26:03 -0700 X-Received: from 6cd8174ac25c.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Mon, 10 Jul 2023 15:26:02 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , Jeff Brasen , "Swatisri Kantamsetti" , Ashish Singhal Subject: [edk2-devel] [PATCH v2 3/4] DynamicTablesPkg: Add support to add Strings to package Date: Mon, 10 Jul 2023 22:25:58 +0000 Message-ID: <722520ae73c9581ce3cf45fd0cc8ca1fd54c62fa.1689027745.git.jbrasen@nvidia.com> In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT085:EE_|DS0PR12MB8218:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f1c8908-d1c3-4d44-fb49-08db8194ad22 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: bbX2FyL8tdjvmEZzZSDiRTRoUT0a4A2H7eQ/6mDM7hAu58k4mN0W4gTqWKdpDPtqy20g0BikIBWezACVR6EGQ24lQLvUJr2j3YHfKwvDzt6nR1nZ26vCsHWuIiIrRIQxX4Roe/4t9zb7Jc7wK3F+XbDZ9Qchhzt+7WrUAqL7S5vyDUXGioPMEQiYNKhf/etAvKLc7JHHhcgdpCpciYVOntjnaCQvnzFmJR4OwRv6VWNOGn80I8LVV3KUci5S60dfH+rRYUVYopJl6udQB+ZDHd3T9S88+HoCjl/Mgwz3v+WtrUKjv3iZ9coGB30C9lGxQPs4I6zIidZ+0sel4H61gasA3Lg6q0aB34+pFYfXwLRr2wEve7xJ85hJTovyAIAPoFJcjNlcXyI9Sl8iBLFia9F24uE3lztlfUWlLD68IsyJyVjBjdMbioRT710WxR/y6ZT/lsrRafh2nkDKA04Fy8hcKwByoQ60XbZ7og2kbKrXovg499WpCuG2cjswRzO6dexRyqvian5kB6g6dHnIUvHEfg7QXUbZpwhER9yto+6RS//JjXSj8B8kGMlD75h0uMR8kT/nXsNgVKjESxLTY6iH1cruuUG5bnLCC983Er0/rG1H9qx68vd4pmS3ryB2vjPeHw0B/5DZ/W6X/OPzR4NVAeLzH5Z6OCTq+NJ2YjfH/d/sbLAquMfQUS+i2TmGQcHJUdPhNd8Sag2Za2kWF7wo+bzfYckxF9oR1fJX/sE= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 22:26:16.1388 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f1c8908-d1c3-4d44-fb49-08db8194ad22 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: CO1NAM11FT085.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8218 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: 2GyPFaSy59ScWqeK0wFLnsVtx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1689027979; bh=gGFIXf14JfkR8fAY1BB9Qjs9n27o+SAj8OUCbJJNEIk=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=K1udkFmDEmo+Nwyd5MsmbTTKkoqIMLiPOf19bUnEoST/7vm6ITngJtyvmtJ8Q4Lk+Bw NvK9ur8JdiKlqLTfHl7dCXmMZp3YIhjGAsd9xEvJdaHyecckmkQJ7B/0nLmIeoBs0EBpP ONTdeaM/1sdhz/DmM9lpZfm3cEQJmig1WPQ= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1689027981344100013 Content-Type: text/plain; charset="utf-8" Add API to add a String to a package created with NamedPackage API. Signed-off-by: Jeff Brasen Reviewed-by: Swatisri Kantamsetti Reviewed-by: Ashish Singhal Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../Include/Library/AmlLib/AmlLib.h | 17 ++++ .../Common/AmlLib/CodeGen/AmlCodeGen.c | 82 +++++++++++++++++++ 2 files changed, 99 insertions(+) diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h b/DynamicTabl= esPkg/Include/Library/AmlLib/AmlLib.h index b82c7a3ce874..f4a490875365 100644 --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h @@ -1472,4 +1472,21 @@ AmlCreateCpcNode ( OUT AML_OBJECT_NODE_HANDLE *NewCpcNode OPTIONAL ); =20 +/** AML code generation to add a NameString to the package in a named node. + + + @param [in] NameString NameString to add + @param [in] NamedNode Node to add the string to the included packa= ge. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlAddNameStringToNamedPackage ( + IN CHAR8 *NameString, + IN AML_OBJECT_NODE_HANDLE NamedNode + ); + #endif // AML_LIB_H_ diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c b/= DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c index d31a86e98c4c..a2009d9805b5 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c @@ -3665,3 +3665,85 @@ AmlCreateCpcNode ( AmlDeleteTree ((AML_NODE_HANDLE)CpcNode); return Status; } + +/** AML code generation to add a NameString to the package in a named node. + + + @param [in] NameString NameString to add + @param [in] NamedNode Node to add the string to the included packa= ge. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlAddNameStringToNamedPackage ( + IN CHAR8 *NameString, + IN AML_OBJECT_NODE_HANDLE NamedNode + ) +{ + EFI_STATUS Status; + AML_DATA_NODE *DataNode; + CHAR8 *AmlNameString; + UINT32 AmlNameStringSize; + AML_OBJECT_NODE_HANDLE PackageNode; + + DataNode =3D NULL; + + if ((NamedNode =3D=3D NULL) = || + (AmlGetNodeType ((AML_NODE_HANDLE)NamedNode) !=3D EAmlNodeObject) || + (!AmlNodeHasOpCode (NamedNode, AML_NAME_OP, 0))) + { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + PackageNode =3D (AML_OBJECT_NODE_HANDLE)AmlGetFixedArgument ( + NamedNode, + EAmlParseIndexTerm1 + ); + if ((PackageNode =3D=3D NULL) = || + (AmlGetNodeType ((AML_NODE_HANDLE)PackageNode) !=3D EAmlNodeObject) = || + (!AmlNodeHasOpCode (PackageNode, AML_PACKAGE_OP, 0))) + { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + Status =3D ConvertAslNameToAmlName (NameString, &AmlNameString); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D AmlGetNameStringSize (AmlNameString, &AmlNameStringSize); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + Status =3D AmlCreateDataNode ( + EAmlNodeDataTypeNameString, + (UINT8 *)AmlNameString, + AmlNameStringSize, + &DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto exit_handler; + } + + Status =3D AmlVarListAddTail ( + (AML_NODE_HANDLE)PackageNode, + (AML_NODE_HANDLE)DataNode + ); + ASSERT_EFI_ERROR (Status); + +exit_handler: + if (AmlNameString !=3D NULL) { + FreePool (AmlNameString); + } + + 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 (#106777): https://edk2.groups.io/g/devel/message/106777 Mute This Topic: https://groups.io/mt/100068078/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- From nobody Fri May 17 10:34:18 2024 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+106778+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1689027982; cv=none; d=zohomail.com; s=zohoarc; b=d8rzdhHnA8lHg3ucYJzr/qlRDvWprYvRXk1qaEXStinETs5mBUkaD++FZGHQlrBme/wdxdT4FhUc7eP4sUxKgIqNH0OjQvPKvIsHQoG0gMHBxrxkysPumWdTItNTA+lVa4OYjaDGkANly1R5QzaBrP87JCnUGpLxyiKlqa0hQww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689027982; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=a1A5WDAqGUiBU8UU5YOVYLhMbz28aS4X+Kdla7b6JTA=; b=CSnC/vCxzovLSSf1Km1VUpA4kGDDK7jo7/vqHGM1yFDVGsnQI9hu9fzSLV542nacxiykqTi58qVBBkKJ4VFqFzc/NTuMEQtrAl0xqW6QLe4jkdQJJ5oPOdAStVVeg+91qOKiJHJAf6K2NoqQWZGHXvpI/tnk1ZROp6AjmYOm+7w= ARC-Authentication-Results: i=1; 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+106778+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1689027982529481.8946470480546; Mon, 10 Jul 2023 15:26:22 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 9MM5YY1788612x0Jlq1ot8tb; Mon, 10 Jul 2023 15:26:22 -0700 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.50]) by mx.groups.io with SMTP id smtpd.web11.233.1689027981640748670 for ; Mon, 10 Jul 2023 15:26:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bLFpp01kr52vPc7FW+qkqW5zBAGlBS5TQqcWZYBWVMCZlhJDngFb2zkdAsdWziedBmtmnRyqs3wTWq3RSA6WISlMw0ozK1ze7NW6dx6SWvkNrTFXx+S/JyoG5V3ow9bWAccD2Z746RoLB45FyrNMwwERXrkifapjOUPaTiEsW5xZxAdbE8rElOL57cZLmhQNPijdBcKN4lALKjrDl3eOStu2deOLWAESmCRid1BVoIzVKXMEgHlnf1EJHT/6LQWFnWWFEYxUt8p1v6g7zaEmejlqDGvW20WjiXRW6aRfeM+/ijwjZqLYZU7xcjnAJGbEABRnndgWK79EP9bGdAolYQ== 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=04Jq2sRu3OADci19x3OybZO3FnYQjLlkfEOnf2qacmU=; b=N1aoOgZynxSFpd738L6RgrJ5Dqodw6/oLK9OkczEoQgWEZVEsLSu9f8ZpeT5pzCuPgapQW6JchcO9y0y/KtX71Aw+McIHULk8mC87IpxvBcTIhfKh1bufo0Ri+jX0BAkp7dzuhxpCUUotS+JLOFwqTR5z9jG0NleOPiyvHOO9ocCJP5wCsRQUAArKoA19hQb4OOGpizxjrrDXsQj3fQW2I4A27HfW95HHr9ij7wQmU8ZcAeaO8nmPWh0TD693vEzpZDkDHmxEUIoQZUeokP/ve4ugqsf5i1vCprPg8UJRugmAh3Eivqb989ntCBolGk244z3Da0nlxJtRhkxegdO/Q== 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 X-Received: from DM6PR03CA0042.namprd03.prod.outlook.com (2603:10b6:5:100::19) by BL1PR12MB5189.namprd12.prod.outlook.com (2603:10b6:208:308::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31; Mon, 10 Jul 2023 22:26:19 +0000 X-Received: from DM6NAM11FT010.eop-nam11.prod.protection.outlook.com (2603:10b6:5:100:cafe::9e) by DM6PR03CA0042.outlook.office365.com (2603:10b6:5:100::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31 via Frontend Transport; Mon, 10 Jul 2023 22:26:18 +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 (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+106778+1787277+3901457@groups.io; helo=mail02.groups.io; 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 X-Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT010.mail.protection.outlook.com (10.13.172.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.19 via Frontend Transport; Mon, 10 Jul 2023 22:26:18 +0000 X-Received: from rnnvmail201.nvidia.com (10.129.68.8) 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.5; Mon, 10 Jul 2023 15:26:04 -0700 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) 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.37; Mon, 10 Jul 2023 15:26:04 -0700 X-Received: from 6cd8174ac25c.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Mon, 10 Jul 2023 15:26:03 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , Jeff Brasen , "Swatisri Kantamsetti" , Ashish Singhal Subject: [edk2-devel] [PATCH v2 4/4] DynamicTablesPkg: Add Aml NameUnicodeString API Date: Mon, 10 Jul 2023 22:25:59 +0000 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT010:EE_|BL1PR12MB5189:EE_ X-MS-Office365-Filtering-Correlation-Id: cd2f64c8-72b9-430e-c78a-08db8194aea5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: ur2R3Gw4Zto6od/oP8rJz6cE3Juqd7LU0NYxiGQBaw5Fg7WJEuFoF8/Nl516F+jeBA2bsEdk54xyfVJLtQZ5OaVdKQxOuydB6aL9uL3RZJcnpAXRigEtU4G4o4KE+FuQl3128xO5WbuDM8Fl3WxBu+oq8MEeW2MFSzPVnWYNIKV0cV5sw1bBHUrzK5MDVsf5vP+hYEnJfzuwkKJIpqO3JuwNq1CP/k2xMh023lue2+GT51B0eRFCoT/x0MnlA37So3mHHDwx7M97M/AVEU8WW7tKhdqH1oIfc/Jk7VNk/6G5kVUV04gOuSc5tiTq1QqO6opJ5hsr5M6vz2NE3YZ8v/WzWAnV23OGoZLurcsCptpnrFAktHWA3j8mxw+VHSW/To/DXCBlKYtb1NLZMDbOMMfzgHtw0VR2VpK+H264zsDsDyDVLrtrHLGT3GW27dp9KKQEw172uqQzXSO4xMYzn8I1w45KLWc1Jm6MA0vIWrcKhv4u/sqRi6jcxULVbl4bdSYgZnYmLdBKHj/uw9n8qgY6dTqOuggC+tRFJBMLsvBzMJ1mJieMB1bZ3RoUcXsQPvUp6uFVIcg/O+JJgW60G7Vu/vPzNVe03A51Xa2Lc1kDwZ/rDy2aD7MhKAI52eglG/rtlAd7EJW+0O0BOCJVVkpAnJ1tn7NIU9fkXk59GFmwbzqBLoayW677dn46dxBa0atRK2MFd5u4kc3zb4y7gbZLEOWpsE4MdS/I4RHn5xsNiTM2T/QO8RbnwbwhfvMQ X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 22:26:18.6737 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cd2f64c8-72b9-430e-c78a-08db8194aea5 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: DM6NAM11FT010.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5189 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: JWmfc3GNpgdvprgWGYnnSFRvx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1689027982; bh=tJ6FUTPIUdBaiIySjQ3nvaA8pa/c1mN3fu/i1RIoTho=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=aK1RkKdcAXyE7Q1+mfoujZ5wuYjwcFYoiRC9XZtkXNhOL1AFKbmZgMVvFqeDSsvmqRq ePAjTdDXVcJzTPztR5E3FB8brHD6nIsHwgm/oUSRo2+53VgQA2NG62kKQtvYd21nDxj1d MFqwbmPjpFW0Sb7nqIbpA7M3P10CA3n9C9o= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1689027984718100019 Content-Type: text/plain; charset="utf-8" Add API to generate a Name that contains a Unicode string buffer. Signed-off-by: Jeff Brasen Reviewed-by: Swatisri Kantamsetti Reviewed-by: Ashish Singhal Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../Include/Library/AmlLib/AmlLib.h | 31 +++++++ .../Common/AmlLib/CodeGen/AmlCodeGen.c | 86 +++++++++++++++++++ 2 files changed, 117 insertions(+) diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h b/DynamicTabl= esPkg/Include/Library/AmlLib/AmlLib.h index f4a490875365..e0dc1340ab50 100644 --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h @@ -958,6 +958,37 @@ AmlCodeGenNameResourceTemplate ( OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL ); =20 +/** AML code generation for a Name object node, containing a String. + + AmlCodeGenNameUnicodeString ("_STR", L"String", ParentNode, NewObjectNod= e) is + equivalent of the following ASL code: + Name(_STR, Unicode ("String")) + + @ingroup CodeGenApis + + @param [in] NameString The new variable name. + Must be a NULL-terminated ASL NameString + e.g.: "DEV0", "DV15.DEV0", etc. + The input string is copied. + @param [in] String NULL terminated Unicode String to associate = to the + NameString. + @param [in] ParentNode If provided, set ParentNode as the parent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenNameUnicodeString ( + IN CONST CHAR8 *NameString, + IN CHAR16 *String, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ); + /** Add a _PRT entry. =20 AmlCodeGenPrtEntry (0x0FFFF, 0, "LNKA", 0, PrtNameNode) is diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c b/= DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c index a2009d9805b5..ffc809ba1b0a 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlCodeGen.c @@ -869,6 +869,92 @@ AmlCodeGenNameResourceTemplate ( return Status; } =20 +/** AML code generation for a Name object node, containing a String. + + AmlCodeGenNameUnicodeString ("_STR", L"String", ParentNode, NewObjectNode= ) is + equivalent of the following ASL code: + Name(_STR, Unicode ("String")) + + @ingroup CodeGenApis + + @param [in] NameString The new variable name. + Must be a NULL-terminated ASL NameString + e.g.: "DEV0", "DV15.DEV0", etc. + The input string is copied. + @param [in] String NULL terminated Unicode String to associate t= o the + NameString. + @param [in] ParentNode If provided, set ParentNode as the parent + of the node created. + @param [out] NewObjectNode If success, contains the created node. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenNameUnicodeString ( + IN CONST CHAR8 *NameString, + IN CHAR16 *String, + IN AML_NODE_HANDLE ParentNode OPTIONAL, + OUT AML_OBJECT_NODE_HANDLE *NewObjectNode OPTIONAL + ) +{ + EFI_STATUS Status; + AML_OBJECT_NODE *ObjectNode; + AML_DATA_NODE *DataNode; + + if ((NameString =3D=3D NULL) || + (String =3D=3D NULL) || + ((ParentNode =3D=3D NULL) && (NewObjectNode =3D=3D NULL))) + { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + Status =3D AmlCodeGenBuffer (NULL, 0, &ObjectNode); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + return Status; + } + + Status =3D AmlCreateDataNode ( + EAmlNodeDataTypeRaw, + (CONST UINT8 *)String, + StrSize (String), + &DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + AmlDeleteTree ((AML_NODE_HEADER *)ObjectNode); + return Status; + } + + Status =3D AmlVarListAddTail ( + (AML_NODE_HEADER *)ObjectNode, + (AML_NODE_HEADER *)DataNode + ); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + AmlDeleteTree ((AML_NODE_HEADER *)ObjectNode); + AmlDeleteTree ((AML_NODE_HANDLE)DataNode); + return Status; + } + + Status =3D AmlCodeGenName ( + NameString, + ObjectNode, + ParentNode, + NewObjectNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + AmlDeleteTree ((AML_NODE_HEADER *)ObjectNode); + } + + return Status; +} + /** Add a _PRT entry. =20 AmlCodeGenPrtEntry (0x0FFFF, 0, "LNKA", 0, PrtNameNode) is --=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 (#106778): https://edk2.groups.io/g/devel/message/106778 Mute This Topic: https://groups.io/mt/100068080/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-