From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web12.8809.1609728904320997270 for ; Sun, 03 Jan 2021 18:55:04 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=JpagyjBf; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: bob.c.feng@intel.com) IronPort-SDR: gSsFL7ZZbz0dF8fNVJbj+DoTr/VomW6yL0kRdGM7AARtM2KesLluDF1/pNYz4HcIgAVDZP4jvs sYJLw8NVq8FQ== X-IronPort-AV: E=McAfee;i="6000,8403,9853"; a="177004975" X-IronPort-AV: E=Sophos;i="5.78,472,1599548400"; d="scan'208";a="177004975" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jan 2021 18:55:01 -0800 IronPort-SDR: qP30QQQVj9yv/+MnCDqHWgJas2qr43tMwJ8TqlpyoWik1On88tK4vae7CqBAXP0f1oru4QAY48 QXuXFlBJQXdg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,472,1599548400"; d="scan'208";a="349733991" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga008.fm.intel.com with ESMTP; 03 Jan 2021 18:55:00 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sun, 3 Jan 2021 18:54:59 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 3 Jan 2021 18:54:59 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.170) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Sun, 3 Jan 2021 18:54:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ofax0dVhpWAciQsboC3dQ/TuPHFF2axtN9HvFDpP4m/rRk+MbRVJ9GdfdTQKoxqe0fZ+iW8lvdtAIIReeKSlV1Q8z4dJsHqLw9Pn257fTC5M0Ffo1d8+1cGcMDR9TYORf9RIsh6UgJxMAHCX33h4T9kgMM2g0GKcpcf7CWHX6BM9ohEAavC130/WoJQ9h13vD1diphI/89TC2Z2EZ/lY2jXGerG0/ojEXyoncxIMzC7VGRsJzM4fgH9IryPis4Cv3M13FIOpAEQMyzvPCKF0JNyAVNrV4frAMtW80yihJOkmL/3064NcPP56SGfo5iKO8df7VRIghExcol91QVoaCg== 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-SenderADCheck; bh=rKKxO/8O0rz1TIpz5WRm9KMPHCUXv03fKgHchgp3ajA=; b=SxSIZHpHPOu/Qk+8tjfjJWs0YiwHPC7kb7F2x8ZKPKMyZrbBgsRiacubPP9IOoYtNPUAQ4sV0Jzu5BAJgrOIZ3Ks0M5FnTYFJFOb7ObRVAy2oxMO4pcKMBJ2p47X4dPiyYsDt6JfIi+WrD2rfK3/eOBI8meMFty8sVctg8jevuqymjoFpj5/d75sxO4qegRBndp1YEU2Pu3gm6uadlFaoFszFHc/4QDKeYYpzI3KP5e1gXC5OX+sR3HzoqFe3L8r/QuvWJzU5y2JuujXzSO7cGjgHCfq6IdBRK3hnpAJGU0F8zCCjeDLCjFRlmjROGZSAFuVu4MBpNImBYCHkH8lDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rKKxO/8O0rz1TIpz5WRm9KMPHCUXv03fKgHchgp3ajA=; b=JpagyjBfMgFFLlr3zGsiwgx3ZoYRA2Cg1HRev1/tunYQO3Uxkk2uaVLhBzT6AfUOcNEL26eAgDDIkoj0l7QDqU3GkdnwCzxJkRxsI7N/b0TT4s0yah8aenzam/21D+3iWtkAAxEkGbCj35MxlSnr8e/PS8FE+dcEaSCBriiomFU= Received: from DM6PR11MB4073.namprd11.prod.outlook.com (2603:10b6:5:19f::22) by DM6PR11MB2987.namprd11.prod.outlook.com (2603:10b6:5:65::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3721.20; Mon, 4 Jan 2021 02:54:58 +0000 Received: from DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::5c3c:da40:5046:5413]) by DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::5c3c:da40:5046:5413%7]) with mapi id 15.20.3721.024; Mon, 4 Jan 2021 02:54:58 +0000 From: "Bob Feng" To: "Yeh, GregX" , "devel@edk2.groups.io" CC: Liming Gao , 'Yunhua Feng' Subject: Re: [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure when FV level over 2 Thread-Topic: [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure when FV level over 2 Thread-Index: AQHWzTRNhDK8qHoARk2EOwuMJJvSt6n8ojCAgAfF7nCAEobwMA== Date: Mon, 4 Jan 2021 02:54:58 +0000 Message-ID: References: <20201208073222.19400-1-gregx.yeh@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 62d63340-a1f0-4f38-251d-08d8b05c1f99 x-ms-traffictypediagnostic: DM6PR11MB2987: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PpuRp3YFe5LPPzWhsWgoI6h7yS2F3XuCsgyB50FOAN//tN3anGKc90m0+oWsxU5jhyx+ZPLOcmAEbpraNdFaTjZ6PKnsQVWihkWQs2Q/3QsbZoTOeL0HIcyD+YUsi9sOaO6ZG+aAdyw+jVvEqIHh27PMDgQN4AQN37cpFcyItxdfTur8f6I+2ScgjZop72gtaDQ+nWjAMxqud156aueQUFIznretWT4gele4Y5g+KCYPGqGX5SO9zWnN9pmqbpb8Bf3BpEPP5BKCTCZWbYGot/2BQj/8K4DaqCayAFoF8GKrMRQcRCabpQpIzERYyBfZhLi/3GirANy6ZfqJMaXEenQzmA02h3cHVBptGsOdRVD0unFGg0lLTd0J0cfhmjrOFmrE4Sx8QyzE0oI/88yxrw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4073.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(346002)(136003)(366004)(396003)(39860400002)(66446008)(76116006)(6506007)(26005)(8936002)(5660300002)(86362001)(4326008)(64756008)(66946007)(53546011)(66476007)(66556008)(478600001)(52536014)(2906002)(8676002)(54906003)(316002)(33656002)(55016002)(110136005)(186003)(83380400001)(71200400001)(9686003)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?i6cbaIK4yie0TouNWjSdl0s0FJfJ2Bn/9vDDmWftCyVmdWSLiX8TcnrelAj3?= =?us-ascii?Q?M0AKN+7gAuv6wMqlYKE3FvpWQo4xNvf+M0mrg0sWwMn3ked4AaiC8kKTy12c?= =?us-ascii?Q?uHIWtB4nkAYzY3iu7UGfR5+CTeDxCieJjo/5y3RrLCBF66ccwJl1mT0SLHcs?= =?us-ascii?Q?knQjeCJXfH58u+5VuBe+Y+L+hypkg4V4AcQJ0tDaE4w8A582X+KReXOwo4pC?= =?us-ascii?Q?yzS2uDmIZfpy1LISBwXSeqCFQRirIPhjLJWyW/Ynz4nDJob2s3CXNDoAIlQc?= =?us-ascii?Q?bKNTK7Tglo3SFlMmvEkyuvm2071C08/HI7B+rkjVIfoRg4aFUBixEyG5tDSm?= =?us-ascii?Q?ZZM9fsbFk1FrrQSUH5rrY7L6gCa8cPnWR7aNEdR2MeCp8sV7BANjzQP8RAS9?= =?us-ascii?Q?vWq51iG3Px5wIaMJGA/2kvworjAnCqSXLCoptUarmO2lmrdjkzx9cMIVAtAQ?= =?us-ascii?Q?oDLa7C3aizUt5CKUZf2pcVXBkDn+Rnwh8LkYN4/xBNDvcep6eAJ4CdPCzkF/?= =?us-ascii?Q?z1mFdAj7kUMUM9t+FEvDoDj0ZBCMJ9zVsoYYfGQHZJF40FWgScH2JEKDQ8qD?= =?us-ascii?Q?tr8Bw9WHgMNyDF2lcNu0esqWXxXK3TaoDRNFKpg7Rse4f37wtcxlXBQzzuOl?= =?us-ascii?Q?whIPpezzB2R8RZ1QMsUfNiriE/m3mUHxa6XGUJ/fV/j89L52YAp3KIgOvYEI?= =?us-ascii?Q?2s8+0ES7Yp1FDBeB1xHoJThbv5K256WYmGLV2cBHvSvW8cxfdExzQbLF3pk1?= =?us-ascii?Q?E4xpRMX8/twhlklSt3ELxv5LA2rqkIZmscc6e8avQE1LJCbxADMj/0hzd/xw?= =?us-ascii?Q?BQdoTOF4peu2VrspGkiWRgNeL3+rXNPVNO94dFe+jm0PPuJCBFgnNRk7mySN?= =?us-ascii?Q?EXNd/4PxSUBoms9uDNpLGLajJMLUgrCQjHlZB7cODSssg8M+sNfSA4Pk80Ju?= =?us-ascii?Q?UoSsrBEIvtnRLK8XDrbU7W3oVbsoK1gfQqm269+R5E8=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4073.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62d63340-a1f0-4f38-251d-08d8b05c1f99 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2021 02:54:58.5845 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pmYFSSmLNNvrWsGbNi58IZyCntnrd+OVYzrIY8f3d3c9itD9NrSwwXw7L1+Jyq6R1syE8WitsrxG332vjKeKmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2987 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Greg, Could you send a code review mail with this patch embedded? Thanks, Bob=20 -----Original Message----- From: Yeh, GregX =20 Sent: Wednesday, December 23, 2020 4:01 PM To: Feng, Bob C ; devel@edk2.groups.io Cc: Liming Gao ; 'Yunhua Feng' Subject: RE: [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure wh= en FV level over 2 Hi Bob, I have fixed for loop that use FfsNumbers. I attach new patch file. Thanks, Greg -----Original Message----- From: Feng, Bob C Sent: Friday, December 18, 2020 5:33 PM To: Yeh, GregX ; devel@edk2.groups.io Cc: Liming Gao ; 'Yunhua Feng' Subject: RE: [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure wh= en FV level over 2 Hi Greg For the change of the following block, 1.=20 - CurrentFv->FfsNumbers =3D *FfsCount; - *FfsCount +=3D 1; =20 + CurrentFv->FfsNumbers =3D *FfsCount; + 2. - for (Index=3D0; Index <=3D FvInFd->FfsNumbers; Index++) { + for (Index=3D0; Index < FvInFd->FfsNumbers; Index++) { I think it's correct but I see there are many places still have such statem= ent:=20 "for (Index =3D 0; Index <=3D FvInFd->FfsNumbers; Index++) { " I think all others may also need to be changed from "for (Index =3D 0; Inde= x <=3D FvInFd->FfsNumbers; Index++) {" need to change to "for (Index =3D 0;= Index < FvInFd->FfsNumbers; Index++) {" Thanks, Bob -----Original Message----- From: Yeh, GregX Sent: Tuesday, December 8, 2020 3:32 PM To: devel@edk2.groups.io Cc: Feng, Bob C ; Liming Gao Subject: [PATCH] [edk2-staging] BaseTools/FMMT: Replace file failure when F= V level over 2 Fixed replace file failure when FFS in multiple level FV and FV level over = 2. Signed-off-by: GregX Yeh Cc: Bob Feng Cc: Liming Gao --- BaseTools/Source/C/FMMT/FmmtLib.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/BaseTools/Source/C/FMMT/FmmtLib.c b/BaseTools/Source/C/FMMT/Fm= mtLib.c index b945e9b63d..bfb3b57d4a 100644 --- a/BaseTools/Source/C/FMMT/FmmtLib.c +++ b/BaseTools/Source/C/FMMT/FmmtLib.c @@ -709,10 +709,10 @@ LibGenFfsFile ( free(FfsFileName); FfsFileName =3D NULL; =20 - CurrentFv->FfsNumbers =3D *FfsCount; - *FfsCount +=3D 1; =20 + CurrentFv->FfsNumbers =3D *FfsCount; + if (ErasePolarity) { CurrentFile->State =3D (UINT8)~(CurrentFile->State); } @@ -833,7 +833,6 @@ LibParseSection ( CHAR8 *ToolInputFileName; CHAR8 *ToolOutputFileName; BOOLEAN HasUiSection; - BOOLEAN FirstInFlag; =20 DataOffset =3D 0; GuidAttr =3D 0; @@ -869,7 +868,6 @@ LibParseSection ( EncapDataNeedUpdata =3D TRUE; LargeHeaderOffset =3D 0; HasUiSection =3D FALSE; - FirstInFlag =3D TRUE; =20 =20 while (ParsedLength < BufferLength) { @@ -997,9 +995,7 @@ LibParseSectio= n ( break; =20 case EFI_SECTION_COMPRESSION: - if (FirstInFlag) { - Level ++; - } + Level ++; NumberOfSections ++; =20 EncapDataNeedUpdata =3D TRUE; @@ -1181,9 +1177,7 @@ LibParseSection ( // looks up the appropriate tool to use for extracting // a GUID defined FV section. // - if (FirstInFlag) { - Level ++; - } + Level ++; NumberOfSections++; EncapDataNeedUpdata =3D TRUE; HasUiSection =3D TRUE; @@ -1682,7 +1676,6 @@ LibParseSection ( } =20 ParsedLength +=3D SectionLength; - FirstInFlag =3D FALSE; // // We make then next section begin on a 4-byte boundary // @@ -4198,10 +4191,13 @@ LibEncapNewFvFile( UINT32 header; UINT8 AlignN; UINT8 AlignV[1] =3D {0xFF}; + UINT32 EntryFvId; + AlignN =3D 0; Id =3D 0; InputFileSize =3D 0; TmpFileSize =3D 0; + AlignmentFileSize =3D 0; EncapFvIndex =3D 0; Index =3D 0; OuterIndex =3D 0; @@ -4224,7 +4220,7 @@ LibEncapNewFvFile( IsLargeFile =3D FALSE; OutputFileSize =3D 0; LargeFileSize =3D 0x1000000; - + EntryFvId =3D 0; =20 OutputFileNameList =3D (FFS_INFORMATION *)malloc(sizeof(FFS_INFORMATION)= ); if (OutputFileNameList =3D=3D NULL) { @@ -4261,6 +4257,9 @@ LibEncapNewFvFile( LocalEncapData =3D CurrentEncapData; if (LocalEncapData =3D=3D NULL) { LocalEncapData =3D FvInFd->EncapData; + EntryFvId =3D 0xFFFFFFFF; + } else { + EntryFvId =3D LocalEncapData->FvId; } Level =3D LocalEncapData->Level; Type =3D LocalEncapData->Type; @@ -4274,7 +4273,7 @@ LibEncapNewFvFile( LocalEncapDataNext =3D LocalEncapDataTemp->NextNode; if (LocalEncapDataNext !=3D NULL && LocalEncapDataNext->NextNo= de !=3D NULL) { =20 - LibEncapNewFvFile(FvInFd, TemDir, LocalEncapDataTemp, 1, &= ChildFileNameList); + LibEncapNewFvFile(FvInFd, TemDir,=20 + LocalEncapDataTemp,LocalEncapDataTemp->Level - 1, &ChildFileNameList); ChildFileNameList->ParentLevel =3D LocalEncapDataTemp->Lev= el -1; if (FvInFd->ChildFvFFS =3D=3D NULL) { FvInFd->ChildFvFFS =3D ChildFileNameList; @@ -4329,7 += 4328,7 @@ LibEncapNewFvFile( } else { LocalEncapData =3D CurrentEncapData; while (LocalEncapData !=3D NULL) { - if (Level_Break > 1 && LocalEncapData->Type =3D=3D FMMT_ENCAP_TREE_F= FS) { + if ((LocalEncapData->FvId > EntryFvId) && (LocalEncapData->Type=20 + =3D=3D FMMT_ENCAP_TREE_FFS)) { LocalEncapDataTemp =3D LocalEncapData->RightNode; while (LocalEncapDataTemp !=3D NULL) { LocalEncapDataNext =3D LocalEncapDataTemp->NextNode; @@ -4485,= 7 +4484,7 @@ LibEncapNewFvFile( // FfsFoundFlag =3D FALSE; IsRootFv =3D FALSE; - for (Index=3D0; Index <=3D FvInFd->FfsNumbers; Index++) { + for (Index=3D0; Index < FvInFd->FfsNumbers; Index++) { if (OutputFileNameList !=3D NULL && OutputFileNameList->FFSNam= e !=3D NULL && OutputFileNameList->IsFFS =3D=3D FALSE){ break; } @@ -4818,6 +4817,7 @@ LibEncapNewFvFile( memcpy((char *)OutputFileNameList->FFSName, (char *)OutputFileName, = strlen(OutputFileName)+1); OutputFileNameList->IsFFS =3D TRUE; OutputFileNameList->ParentLevel =3D ParentLevel - 1; + OutputFileNameList->InFvId =3D Id; if (OutputFileNameList->Next =3D=3D NULL){ break; } @@ -5077,10 +5077,6 @@ LibEncapNewFvFile( if (CurrentEncapData =3D=3D NULL) { LocalEncapData =3D FvInFd->EncapData; } else { - if (OutputFileNameList !=3D NULL && OutputFileNameList->FFSName != =3D NULL && OutputFileNameList->IsFFS =3D=3D TRUE) { - *OutputFile =3D OutputFileNameList; - return EFI_SUCCESS; - } LocalEncapData =3D CurrentEncapData; } ParentLevel -=3D 1; -- 2.16.2.windows.1