From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.66]) by mx.groups.io with SMTP id smtpd.web09.9907.1633702000654766250 for ; Fri, 08 Oct 2021 07:06:41 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=jFWy/Qod; spf=pass (domain: arm.com, ip: 40.107.20.66, 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=67JSwTG9z2/QKBScgZAuzjoP0YHzit9XrMNd19BrWwc=; b=jFWy/QodtHHfZTxXJ9TayC8DBq0JCl4nWetbCSf7B0LvAbuGZZZaPwD2qIRPtM4TUt11gUIFDp4Iumxm+0uk2X9Cc9U/1cek1ygl+SAjuCKHWwF3QbOtvPjbyE3rM772R49tpkq5R0968xWouTqzxUnDi+414EzgF7ZfAd1m/hQ= Received: from DB6P18901CA0010.EURP189.PROD.OUTLOOK.COM (2603:10a6:4:16::20) by AM5PR0802MB2498.eurprd08.prod.outlook.com (2603:10a6:203:98::21) 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:37 +0000 Received: from DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:16:cafe::91) by DB6P18901CA0010.outlook.office365.com (2603:10a6:4:16::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Fri, 8 Oct 2021 14:06:37 +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 DB5EUR03FT023.mail.protection.outlook.com (10.152.20.68) 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:37 +0000 Received: ("Tessian outbound 2e7020cc8961:v103"); Fri, 08 Oct 2021 14:06:37 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 607bdde0b4a4e3e0 X-CR-MTA-TID: 64aa7808 Received: from a71d0e56cc0f.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FAE06DCF-5DC0-4C72-9C93-8854517868C0.1; Fri, 08 Oct 2021 14:06:30 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a71d0e56cc0f.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 Oct 2021 14:06:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GaCC+2nBYavBXmq2UTZONNY/iv2Lz37nqNKby7gt6U7vgjR/8pIAUlws8Mnldlk8womnJx9icVceRRXkbbm8Cb9RSTa1VJqsRbwK9TAkUoeoGkJTAlOVqMv+q3ZHZ5YaTR3OopmmnCxL2Ox/X65reodgMRnTkqT2gK+I/45H/q9BWRuu/ZDz3X7Vsux6+BzCCLyaTwce3uBWhwfL3oQ8Y3I2JJlw4H5LSFf1QFscV+tCsf+LgVqgzCYmIblZtYpfWydMOhJ/Z3K+h8cfigDg66IHmqlmdmcMucp9ZBV6eYr0JRqaXy2iTRPuI1HSrA3QdOhG8ogJKEzMD34bg7kUow== 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=67JSwTG9z2/QKBScgZAuzjoP0YHzit9XrMNd19BrWwc=; b=F5KiYW37QZvDACkBQ7BcwLBMfYs0zfIIcStV5ZynBlAvDRleIahgiyifKwVQw6QF85vuPhiASOtQxTRie3F1szzbKWR8PUfG9kFKO9NUwODiFmr4OuDLkrPuGGjuZSqM+T4Jq4WxXrgu5OA1v0RSKkWeKGAEECk9vRlGJuXPJHQV4I13k9txYoxx7UkY5nvXpbiKkYvH34LF1fsCkvJfOULTCOkBXZoue8xYL/UJzRkzBqmPkAzVHpbsfNeACsDJf3w5dyetb2hZIZ6gluYIujBA7hCu2lRiKfYs/hcJIEuA5plDEIRAFdkoafQAzfCJ7Si0jndNRN7RpAoXcNdcYw== 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=67JSwTG9z2/QKBScgZAuzjoP0YHzit9XrMNd19BrWwc=; b=jFWy/QodtHHfZTxXJ9TayC8DBq0JCl4nWetbCSf7B0LvAbuGZZZaPwD2qIRPtM4TUt11gUIFDp4Iumxm+0uk2X9Cc9U/1cek1ygl+SAjuCKHWwF3QbOtvPjbyE3rM772R49tpkq5R0968xWouTqzxUnDi+414EzgF7ZfAd1m/hQ= 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:29 +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:29 +0000 Subject: Re: [PATCH v2 06/21] DynamicTablesPkg: Set EndTag's Checksum if RdList is modified To: Pierre.Gondois@arm.com, devel@edk2.groups.io, Alexei.Fedorov@arm.com, nd References: <20211007153210.26608-1-Pierre.Gondois@arm.com> <20211007153210.26608-7-Pierre.Gondois@arm.com> From: "Sami Mujawar" Message-ID: Date: Fri, 8 Oct 2021 15:06:34 +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-7-Pierre.Gondois@arm.com> X-ClientProxiedBy: LO3P123CA0007.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::12) 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 LO3P123CA0007.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::12) 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:28 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f8090477-e820-4e3e-30e5-08d98a64d832 X-MS-TrafficTypeDiagnostic: AM6PR08MB3383:|AM5PR0802MB2498: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:6790;OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: vJPqCNQioCt0Gpuv2esLSHMB7UAshxRoh3yDo2YABSJLwq6uKwS1RF4rrXasa5Exqb1E5R3PDNAxWSK8kqemEaCykCjInO8qPVvNxhl8DBvyvffzUZ50m6cqotZKzi/Vth1NuRzCPEalasgtq2vFjzRljF9A3QHEFuCwKeMiNzOfAQOGOH5sqTLtFMF4LC5f2lPUSKdIhD17QsAh50EU6UPcKqCSu5gNpGo3NIybxSxs3Oc1Pv92bKE2Q78fV7iq9k1EyErXeiMRlG+/fQA1fY8KkBX/3zyozW+d14nW1OgpUnNSedmgNTj08zmeQ0wzy9sc5PSIOpxC+ycyhvpuWm9yPvi4a3NqG+T+bUdxWJ3F4GqWS419dq20ZEMdluNfHew5vmCX4wtzF7ZhLuwrtZLBozuvpUTT7s7knZsqF7n8E+G8XZRGovr4xlR6WHymMrCI1ZGDdPZ2tOroo7TR7hmaHMpClaa6rbisLoAgPhLqkXjPD5/cJpbLQRD58tjYaDKjQuFdY3EC0C+J0/a/hQvOB83D9rkEBTxC6Iros0/ulCeD/dQ5Ubi/NukDrct45NO8tyyZzeiihr9m1P6JA5qt7+fsMvhyXvPiOOaaIRQjKwPG/otljM224YqR9l5FINvZnH7UOY8sMCLDJvFVIAc6YWV13HTxruTkLOZBqtNKsBi0+3iPWoIWen7n2OfnSbmhaJdiSwnADXpQxQCkMwzEHbHdYo4hr6BPJV8ilew1xTaAN2jz1kVMnZ1D/lNC7Yx58D+EfPLX2leJ/eFAdA== 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)(6666004)(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: DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: c81bc56e-1a27-4fc9-0446-08d98a64d2ee X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yi8PDijg93+oHBTM3vdWPL0T93t1gOFW30sesodP45PTXyF592ONXFQZULuOLGUW7ZYe1fxnw9jh3uX1GaytuVvJ6HzW+r+lVHTRaYu037qh3d1V/9rGUSFZag0JFy5r32DbMLGv/oBPlo5jvrovL0ARB3rZGeBZNuCiFoUqOjyS4zegvkT52OAZ4CwtpKkR+inL+8S2IBmqV3et/KDnyYbhjwRJqKADR0PMUy6O2JpkqaK865fS6N55ZhO1IKSPG5HiCPssj6HbrB+y9mV/mfOyxFCQqIY+NmgxGToo0A09dv4ikRqz68IKI6g2OFjTCt8Wz52EZVir3iTa+ayBcHOt62iOQcr9f0HZ0aAtQVnnNqgqa7qSxfY9tilSDoctQtcDNcHzFbl795SP8v+SrimgFgi8HJlW+yYtownSdx4E7DnNOI8XDGoMgfUmlOE2hV4PMCbGlQfZgpiORuuO9FHjAelCXf15ay6ezdkWvNAwtv5QeozhGMStX6Jp4ejkibYi7bXpq96KLv6toaPCW3QqMCFJkYlwIOhlSR6B26RAlH7gerMHlRiXfRFuA0WiFz4AU5afC7XU2a2mSqfra+C+erDAdErEppYmTQbsu/QXAxv3xaPj8DYFTHFkF7Df6MpqTj7Chr2wWLVbx2aSTG+q4F8TX6a9BOUR9ibWNHlufe00f8GLNRigLiOU/bhQjQ6NZp1vs3naP8OqQQKzOY/f5/W6INFwkj+0IxfaiYY= 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)(2616005)(336012)(316002)(26005)(53546011)(37006003)(36756003)(70586007)(82310400003)(6666004)(47076005)(5660300002)(70206006)(81166007)(508600001)(6862004)(36860700001)(356005)(8676002)(8936002)(83380400001)(6486002)(86362001)(956004)(186003)(31696002)(44832011)(2906002)(16576012)(31686004)(6636002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2021 14:06:37.8086 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f8090477-e820-4e3e-30e5-08d98a64d832 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: DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2498 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 > > 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." > > 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. > > This patch also refactors the AmlAppendRdNode() function by getting the > last Resource Data node directly instead of iterating over all the > elements of the list of Resource Data node. > > Signed-off-by: Pierre Gondois > --- > .../Common/AmlLib/Tree/AmlNodeInterface.c | 7 ++ > .../Library/Common/AmlLib/Tree/AmlTree.c | 72 +++++++------------ > 2 files changed, 34 insertions(+), 45 deletions(-) > > diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNodeInterface= .c b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNodeInterface.c > index 870346c40a5d..f91bc5fd55d2 100644 > --- a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNodeInterface.c > +++ b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlNodeInterface.c > @@ -513,6 +513,13 @@ AmlUpdateDataNode ( > ASSERT (0); > return EFI_INVALID_PARAMETER; > } > + > + Status =3D AmlSetRdListCheckSum (ParentNode, 0); > + if (EFI_ERROR (Status)) { > + ASSERT (0); > + return Status; > + } > + > break; > } > case EAmlNodeDataTypeFieldPkgLen: > diff --git a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlTree.c b/Dyna= micTablesPkg/Library/Common/AmlLib/Tree/AmlTree.c > index 0931e751709e..2772e915f468 100644 > --- a/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlTree.c > +++ b/DynamicTablesPkg/Library/Common/AmlLib/Tree/AmlTree.c > @@ -566,8 +566,7 @@ AmlAppendRdNode ( > ) > { > EFI_STATUS Status; > - AML_DATA_NODE * CurrRdNode; > - AML_RD_HEADER RdDataType; > + AML_DATA_NODE * LastRdNode; > > if (!AmlNodeCompareOpCode (BufferOpNode, AML_BUFFER_OP, 0) || > !IS_AML_DATA_NODE (NewRdNode) || > @@ -576,56 +575,39 @@ AmlAppendRdNode ( > return EFI_INVALID_PARAMETER; > } > > - // Get the first Resource data node in the variable list of > - // argument of the BufferOp node. > - CurrRdNode =3D (AML_DATA_NODE*)AmlGetNextVariableArgument ( > + // To avoid re-computing checksums, if a new resource data elements is > + // added/removed/modified in a list of resource data elements, the Aml= Lib > + // resets the checksum to 0. > + // It is possible to have only one Resource Data in a BufferOp with > + // no EndTag, but it should not be possible to add a new Resource Data > + // in the list in this case. > + Status =3D AmlSetRdListCheckSum (BufferOpNode, 0); > + if (EFI_ERROR (Status)) { > + ASSERT (0); > + return Status; > + } > + > + // Get the last Resource data node in the variable list of argument of= the > + // BufferOp node. This must be an EndTag, otherwise setting the checks= um > + // would have failed. > + LastRdNode =3D (AML_DATA_NODE*)AmlGetPreviousVariableArgument ( > (AML_NODE_HEADER*)BufferOpNode, > NULL > ); > - if ((CurrRdNode =3D=3D NULL) || > - !IS_AML_DATA_NODE (CurrRdNode) || > - (CurrRdNode->DataType !=3D EAmlNodeDataTypeResourceData)) { > + if ((LastRdNode =3D=3D NULL) || > + !IS_AML_DATA_NODE (LastRdNode) || > + (LastRdNode->DataType !=3D EAmlNodeDataTypeResourceData)) { > ASSERT (0); > return EFI_INVALID_PARAMETER; > } > > - // Iterate through the Resource Data nodes to find the End Tag. > - while (TRUE) { > - Status =3D AmlGetResourceDataType (CurrRdNode, &RdDataType); > - if (EFI_ERROR (Status)) { > - ASSERT (0); > - return Status; > - } > - > - // If the Resource Data is an End Tag, > - // add the new node before and return. > - if (AmlRdCompareDescId ( > - &RdDataType, > - AML_RD_BUILD_SMALL_DESC_ID (ACPI_SMALL_END_TAG_DESCRIPTOR_NAME= ))) { > - Status =3D AmlVarListAddBefore ( > - (AML_NODE_HEADER*)CurrRdNode, > - (AML_NODE_HEADER*)NewRdNode) > - ; > - if (EFI_ERROR (Status)) { > - ASSERT (0); > - } > - return Status; > - } > - > - // Get the next Resource Data node. > - // If this was the last node and no End Tag was found, return error. > - // It is possible to have only one Resource Data in a BufferOp, > - // but it should not be possible to add a new Resource Data in the l= ist > - // in this case. > - CurrRdNode =3D (AML_DATA_NODE*)AmlGetSiblingVariableArgument ( > - (AML_NODE_HEADER*)CurrRdNode > - ); > - if (!IS_AML_DATA_NODE (CurrRdNode) || > - (CurrRdNode->DataType !=3D EAmlNodeDataTypeResourceData)) { > - ASSERT (0); > - return EFI_INVALID_PARAMETER; > - } > - } // while > + // Add NewRdNode before the EndTag. > + Status =3D AmlVarListAddBefore ( > + (AML_NODE_HEADER*)LastRdNode, > + (AML_NODE_HEADER*)NewRdNode) > + ; > + ASSERT_EFI_ERROR (Status); > + return Status; > } > > /** Replace the fixed argument at the Index of the ParentNode with the = NewNode. 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.