From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (EUR03-AM5-obe.outbound.protection.outlook.com [40.107.3.67]) by mx.groups.io with SMTP id smtpd.web12.9803.1633702006352726098 for ; Fri, 08 Oct 2021 07:06:47 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=4NeNfDSG; spf=pass (domain: arm.com, ip: 40.107.3.67, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lAJ2jhFBxUeZUB5ubgP38BIIYWPXGMrW2HjuozxuTVU=; b=4NeNfDSG9X4vVX5T4sNs30pFZJ03hLYijbP0JJGPME+xjAFVF8Ggd0TNvQcpNpZ+4JQzQR7fOH4G5A2xyRwf4s9mXwELmlp1dy2y4vqQj8wcIqvxc1ijHqnU64/Mk/B5/po/I7rDy2lTmNXSHUdKcwLtRsEVgbuvkayq3UaFudY= Received: from AM6P193CA0100.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:88::41) by AM0PR08MB4562.eurprd08.prod.outlook.com (2603:10a6:208:124::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18; Fri, 8 Oct 2021 14:06:42 +0000 Received: from VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:88:cafe::2e) by AM6P193CA0100.outlook.office365.com (2603:10a6:209:88::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18 via Frontend Transport; Fri, 8 Oct 2021 14:06:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT011.mail.protection.outlook.com (10.152.18.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18 via Frontend Transport; Fri, 8 Oct 2021 14:06:41 +0000 Received: ("Tessian outbound e27daf245730:v103"); Fri, 08 Oct 2021 14:06:41 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 23d17a6996a4696c X-CR-MTA-TID: 64aa7808 Received: from 4af21239c132.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F8595D15-D174-429F-B684-34D51A62A8EC.1; Fri, 08 Oct 2021 14:06:35 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4af21239c132.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 Oct 2021 14:06:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L5VfAOZjyQkAJgnez2dQm/AYnHs5Cm4t1NgKooyttXeHiuV15m3u/RXUS/w8rJT4ayuFsNGDZnh9625Ps6Htp0GJCWV/czFWK45FuMlPz/UUyy3DrAzM6hA/QM8N2PXHewihpt1lCOtj/u5DKQx7zPN+hqR9K9lWkF60UgqQp3lmiNABI4MErXrmzvlmID3yxbuGuqb/8yU2ifPWLLdL+WPLHl1a4ctbU8tyON09mc99F0ZQUh4MvqloI8vMN4ZACXfIB0Vuo5fyvqkD0xP8Jh7FllhnDgVJVIbXUl5gnKCwI40qMlOiNxLfJEUhtTf3PzFs4N9fhHLmHijTVYJy2g== 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=lAJ2jhFBxUeZUB5ubgP38BIIYWPXGMrW2HjuozxuTVU=; b=T/TSFuMpQm4EImFS4ZCkQkxLJOJkFRM6uMWZ6ntcxmG1eOkMz8pLktsN/HeieW8EKnCnVJvghkU3QmtOkggvdIw+XSLRBsUFlAyTqyM58dTX8qQ7yyJZUrfqvisFs2IzToADM0e6Qhoy6WAnlfqq4eihaV7XE83pbcwzUjy15RMqDxuc5uHiaMEZE3qjcaT+PY5TL1VkAWNnv54IOeg6s7/1Ku9RTWu6DDxRRbHm7DlCv6igv2likYjqY5UfWrLFPLdArLskdOVZQZb2op8eL4LS+M6sRuEHBK6fPy/aqH7pVr3WfA+Avgd+l2lPnpKA8z1i5xcYeSHQyli9TeWEEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lAJ2jhFBxUeZUB5ubgP38BIIYWPXGMrW2HjuozxuTVU=; b=4NeNfDSG9X4vVX5T4sNs30pFZJ03hLYijbP0JJGPME+xjAFVF8Ggd0TNvQcpNpZ+4JQzQR7fOH4G5A2xyRwf4s9mXwELmlp1dy2y4vqQj8wcIqvxc1ijHqnU64/Mk/B5/po/I7rDy2lTmNXSHUdKcwLtRsEVgbuvkayq3UaFudY= Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB3383.eurprd08.prod.outlook.com (2603:10a6:20b:50::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.22; Fri, 8 Oct 2021 14:06:34 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::54b5:239d:9896:ee65]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::54b5:239d:9896:ee65%4]) with mapi id 15.20.4587.022; Fri, 8 Oct 2021 14:06:34 +0000 Subject: Re: [PATCH v2 05/21] DynamicTablesPkg: Add AmlSetRdListCheckSum() To: Pierre.Gondois@arm.com, devel@edk2.groups.io, Alexei.Fedorov@arm.com, nd References: <20211007153210.26608-1-Pierre.Gondois@arm.com> <20211007153210.26608-6-Pierre.Gondois@arm.com> From: "Sami Mujawar" Message-ID: <2f6fb035-b2b7-6751-121a-1d76ecf0fa5a@arm.com> Date: Fri, 8 Oct 2021 15:06:39 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20211007153210.26608-6-Pierre.Gondois@arm.com> X-ClientProxiedBy: LNXP265CA0023.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::35) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 Received: from [10.1.196.43] (217.140.106.52) by LNXP265CA0023.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.20 via Frontend Transport; Fri, 8 Oct 2021 14:06:33 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aef2e59c-7722-48b7-1be0-08d98a64da8a X-MS-TrafficTypeDiagnostic: AM6PR08MB3383:|AM0PR08MB4562: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:3173;OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: Msw0/bTpDJGWK6+xaAcOyncWns/Spvj4J8ZvwPIJzp2TvqEaUUBz1RwWI6J4XvBUq4yXGuLy3VPX8Iv45YFBMdnl3AcBXKfIAVpWhJoEef6K50uXRSULuuxNt9TzL1Py/CDRJu7HFmdxwBozaO4mxidmllYq47ZQkyKcXUa5jZJFejY0zS0fYMF05MKH8566p7McWsney5dF088DdJD8xE22d+zzPcgdcykuhciX91UDw2yE9jQ3lIqN2xlMJlJalPDhwlIUey59FfXqkWg+JoQ87sUlEQVdh3zT6NDV9mEIEdRYDNLFXlKCDU8UxdlbTJMVZGDA1IM+hrCE+Ow7Yu6kl9PWKXD+il3xH8+WjtDKaRaXqv5TcIdXlY0PfUOi/RYejZAPCI4N/pwYqIC61qSMLfFw4BbDFBPNNEJ/4Udb3JHu1059joiRFuAewRVfu/YhQEnR1yF9m51m7p1JrHPKGH4uxSk9VCZupPW6Sv3tzcnjyOiVHthSaFdPPsijVlgiulbuaGcRCmGHGWcg5N8rUxseS3MI1HEliFJXIfkEHvJeSb7GYpJbq61qzXhUuR1Ghr7iaO/RXcWtcs5/tAhVgiLZg82fu2/yq0gs+wBkF2VNHVtoVZh5MgEgcGY2RneHDxiVu8aDSKZ/+0gwWKlnatHywqIuu/mlckynO4s5nW/KHHyKVn2xu8oymrxc+slYrwHmjh3u2ANkRjwYi/9COlkMOoP7fJBNPUh3rRiFz8rL8JVIIX0yn71AplVVy2gPOjJG7Wxnv7ujZZ/+UQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(8936002)(86362001)(38100700002)(26005)(6862004)(38350700002)(6636002)(44832011)(508600001)(36756003)(53546011)(37006003)(316002)(16576012)(2616005)(66556008)(6486002)(5660300002)(186003)(66476007)(956004)(66946007)(52116002)(2906002)(8676002)(83380400001)(31686004)(31696002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3383 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 5282cffe-dd2e-41f9-80ce-08d98a64d5dc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9xeiQ87kKYvxsW9kmEeNRAHHZLdsLj2YhKwF4d/rolFD/wQxF4yKHhSU5QCr+yM8CYo2JHHuKg4j8KkHEWFTc4VPOHgiIH6kR0DPa77iAgGgMTj+a88octEkTppv6YGrsdSCIrTP4Xg4iR3k+oXBgupSE6zMs+Z+yK8j8mo9oPyIZGzqv/ys/AeDN+RoeJ7FaHAzBS6Of4zBxW7UFjwWTGWk4ctywZge7ZMNs3rCzELSy8Pk+jxbtGyovJVmeGEvPYGFQEOMsohu5xM2AmY7LOL6ACXn5vhNxbawtIuS+QstAFuEq1uaASvez/U7sd+p8qRlaCx8uiDgLJ29fhUJwjoUzADmPtql4cp9340y0bUPWAXSfhC6/v1TvBK6udzbN9sNKj39ZBMYViDUNaaTFeCiN3a9GWSN94sIN1nG4Hc6WUtGPH9o93dNnl8iAXUBOkdl2FOe9v8b45LmgIQC9ZufvOB9NLH46h4rWv2GvGfF10MR2suN0Z3R27JdSBbsHHvJJwyIcUsEXujw9UhmT6XwrSLaYZ9bIHDmV4RS7gZbL3CPTwddmhS92QvboTAXdc2hsjHB5lL1PCm4TblYKLoHnv+KBHxK31B8troXw0hCXR/MdBq1U1dHVOCeLPgmn4pO4T80WjoPe091HJQA3Eb93NwV9iN9arYMIz/wlkNV0OQDpNOGXRO4KLUig38nSLckIF+BGXvN9D1L5422mGMIXCUwVkXfh0608Z92sFQ= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(6029001)(4636009)(36840700001)(46966006)(70206006)(8936002)(82310400003)(47076005)(37006003)(2906002)(16576012)(316002)(6636002)(31686004)(83380400001)(6486002)(31696002)(186003)(70586007)(53546011)(356005)(5660300002)(86362001)(26005)(36756003)(336012)(36860700001)(8676002)(81166007)(44832011)(2616005)(956004)(6862004)(508600001)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2021 14:06:41.6053 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aef2e59c-7722-48b7-1be0-08d98a64da8a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4562 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Content-Language: en-GB Hi Pierre, Thank you for this patch. Reviewed-by: Sami Mujawar Regards, Sami Mujawar On 07/10/2021 04:31 PM, Pierre.Gondois@arm.com wrote: > From: Pierre Gondois > > Lists of Resource Data elements end with an EndTag (most of the time). > This function finds the EndTag (if present) in a list of Resource Data > elements and sets the checksum. > > ACPI 6.4, s6.4.2.9 "End Tag": > "This checksum is generated such that adding it to the sum of all the dat= a > bytes will produce a zero sum." > "If the checksum field is zero, the resource data is treated as if the > checksum operation succeeded. Configuration proceeds normally." > > Signed-off-by: Pierre Gondois > --- > .../Library/Common/AmlLib/Utils/AmlUtility.c | 76 +++++++++++++++++++ > .../Library/Common/AmlLib/Utils/AmlUtility.h | 32 ++++++++ > 2 files changed, 108 insertions(+) > > diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.c b/= DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.c > index 7ebd08f945c0..ef159e3b831e 100644 > --- a/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.c > +++ b/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.c > @@ -904,3 +904,79 @@ AmlPropagateInformation ( > > return EFI_SUCCESS; > } > + > +/** Find and set the EndTag's Checksum of a list of Resource Data elemen= ts. > + > + Lists of Resource Data elements end with an EndTag (most of the time).= This > + function finds the EndTag (if present) in a list of Resource Data elem= ents > + and sets the checksum. > + > + ACPI 6.4, s6.4.2.9 "End Tag": > + "This checksum is generated such that adding it to the sum of all the = data > + bytes will produce a zero sum." > + "If the checksum field is zero, the resource data is treated as if the > + checksum operation succeeded. Configuration proceeds normally." > + > + To avoid re-computing checksums, if a new resource data elements is > + added/removed/modified in a list of resource data elements, the AmlLib > + resets the checksum to 0. > + > + @param [in] BufferOpNode Node having a list of Resource Data elemen= ts. > + @param [in] CheckSum CheckSum to store in the EndTag. > + To ignore/avoid computing the checksum, > + give 0. > + > + @retval EFI_SUCCESS The function completed successfully. > + @retval EFI_INVALID_PARAMETER Invalid parameter. > + @retval EFI_NOT_FOUND No EndTag found. > +**/ > +EFI_STATUS > +EFIAPI > +AmlSetRdListCheckSum ( > + IN AML_OBJECT_NODE * BufferOpNode, > + IN UINT8 CheckSum > + ) > +{ > + EFI_STATUS Status; > + AML_DATA_NODE * LastRdNode; > + AML_RD_HEADER RdDataType; > + > + if (!AmlNodeCompareOpCode (BufferOpNode, AML_BUFFER_OP, 0)) { > + ASSERT (0); > + return EFI_INVALID_PARAMETER; > + } > + > + // Get the last Resource data node in the variable list of > + // argument of the BufferOp node. > + LastRdNode =3D (AML_DATA_NODE*)AmlGetPreviousVariableArgument ( > + (AML_NODE_HEADER*)BufferOpNode, > + NULL > + ); > + if ((LastRdNode =3D=3D NULL) || > + !IS_AML_DATA_NODE (LastRdNode) || > + (LastRdNode->DataType !=3D EAmlNodeDataTypeResourceData)) { > + ASSERT (0); > + return EFI_INVALID_PARAMETER; > + } > + > + Status =3D AmlGetResourceDataType (LastRdNode, &RdDataType); > + if (EFI_ERROR (Status)) { > + ASSERT (0); > + return Status; > + } > + > + // Check the LastRdNode is an EndTag. > + // It is possible to have only one Resource Data in a BufferOp with > + // no EndTag. Return EFI_NOT_FOUND is such case. > + if (!AmlRdCompareDescId ( > + &RdDataType, > + AML_RD_BUILD_SMALL_DESC_ID (ACPI_SMALL_END_TAG_DESCRIPTOR_NAME))= ) { > + ASSERT (0); > + return EFI_NOT_FOUND; > + } > + > + Status =3D AmlRdSetEndTagChecksum (LastRdNode->Buffer, CheckSum); > + ASSERT_EFI_ERROR (Status); > + > + return Status; > +} > diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.h b/= DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.h > index c57d780140d4..4667f57d7f08 100644 > --- a/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.h > +++ b/DynamicTablesPkg/Library/Common/AmlLib/Utils/AmlUtility.h > @@ -91,5 +91,37 @@ AmlPropagateInformation ( > IN UINT8 NodeCount > ); > > +/** Find and set the EndTag's Checksum of a list of Resource Data elemen= ts. > + > + Lists of Resource Data elements end with an EndTag (most of the time).= This > + function finds the EndTag (if present) in a list of Resource Data elem= ents > + and sets the checksum. > + > + ACPI 6.4, s6.4.2.9 "End Tag": > + "This checksum is generated such that adding it to the sum of all the = data > + bytes will produce a zero sum." > + "If the checksum field is zero, the resource data is treated as if the > + checksum operation succeeded. Configuration proceeds normally." > + > + To avoid re-computing checksums, if a new resource data elements is > + added/removed/modified in a list of resource data elements, the AmlLib > + resets the checksum to 0. > + > + @param [in] BufferOpNode Node having a list of Resource Data elemen= ts. > + @param [in] CheckSum CheckSum to store in the EndTag. > + To ignore/avoid computing the checksum, > + give 0. > + > + @retval EFI_SUCCESS The function completed successfully. > + @retval EFI_INVALID_PARAMETER Invalid parameter. > + @retval EFI_NOT_FOUND No EndTag found. > +**/ > +EFI_STATUS > +EFIAPI > +AmlSetRdListCheckSum ( > + IN AML_OBJECT_NODE * BufferOpNode, > + IN UINT8 CheckSum > + ); > + > #endif // AML_UTILITY_H_ > IMPORTANT NOTICE: The contents of this email and any attachments are confid= ential and may also be privileged. If you are not the intended recipient, p= lease notify the sender immediately and do not disclose the contents to any= other person, use it for any purpose, or store or copy the information in = any medium. Thank you.