From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.3209.1685956737148795930 for ; Mon, 05 Jun 2023 02:18:57 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=EbSLsKQN; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685956737; x=1717492737; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Iwyq+7xYbrXw+6VTBb94xu1JYhrqfd2RNnafIZkTCl4=; b=EbSLsKQNZREzy0U3UPFvk09uCirl9knt464PH5QM+7j94W/0vLcl4zsh 3QT1/8OtvBLWmEWxosz4LerKcOOFD6kmg7RCZUnkrsx70fETWOLz+AodA QiMrfzmBCVD15zoi4wMVbPlJI/7EOMnwp1IffTrtqodLhv6ncpIKD1bFV U/t0C1cgvnOk99z2Eqf4qjLQCnEkQyztKwkdmg3HYs80bYwbRCM64cvCf rv+gncdinynNqj5TiSEijzgfWNahXyLcz4baqZPks+hkCDhiKeLUMkAUm XlEDYLb5kqUISJe25C88rLw+MJL/v33VmGNqq4xkxsy3g19yIxdIQCNhc Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10731"; a="345917172" X-IronPort-AV: E=Sophos;i="6.00,217,1681196400"; d="scan'208";a="345917172" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jun 2023 02:18:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10731"; a="708596842" X-IronPort-AV: E=Sophos;i="6.00,217,1681196400"; d="scan'208";a="708596842" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga002.jf.intel.com with ESMTP; 05 Jun 2023 02:18:46 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 5 Jun 2023 02:18:45 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 5 Jun 2023 02:18:45 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Mon, 5 Jun 2023 02:18:45 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.170) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Mon, 5 Jun 2023 02:18:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C4yiPEFH3IjCD2bhgNluAjoV6u9GIg52GJD7PPqOZuv31Wbnz8MMIDf6u6FzgZXthuLIfzJtwr74Y0Gnk4//m67+jISFycMsJQRBZVK9V1M+TA+ESAI1khyKmYAW8IlsV2PG4FX6ksGMEh7QoBzmh80mSrac/AFdAeQmGPX0nX0afD2vMR8OvobfCMcLIB5rPjsWZFQY36mvt7GIQVA2mw9mD6nnV15UwDymxMnikP+rDckLuOZ6p3Mo6J1IYP1k4pOLYe9qmQRy9t/7BTmjI+J9EmwgpJuvN5b8V5r7lE+3Pked+/5EdMPfA5G+xxz3IFCeVAtXMCTj8nHOVAS2qw== 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=Y8p2A5tVu99SpBypJMTP8V/1cVGEXDI1i0Yg8OS1K5Q=; b=RdaByH1FqGUDvJEAq30+7RL0Jnmb11lDaI1I1APO+UhtIYFi1nWVewmeL6Zq7Sj51ILYhmGcV0YjHmGOzu9Tawl1hp8YAQ++2QjL7iQ+F3vjKnDVs2/Wv7/3aX4wkn8OAG40jE/nbwZu4emKxcdM420yjxhdRarBEAB5w202qFpiLzYf6VmHlG2YKSJOjUiHm0I6nQug1VgUhRV7GDKp7cu+5HohdL8d3RCOEmlBGOcIki1xlNc4MkbLx2rtcYsA2wX1SPMQHLwGLyRfTT/vvlzoxdGGXXttQpu0k8fcnh32MxT9r9Y5MP3Gb0164+ZlPk3db1REh7IQ2CZ5n42vMA== 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 Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by CY8PR11MB7731.namprd11.prod.outlook.com (2603:10b6:930:75::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Mon, 5 Jun 2023 09:18:42 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::dfc2:2d04:e4aa:249]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::dfc2:2d04:e4aa:249%6]) with mapi id 15.20.6455.030; Mon, 5 Jun 2023 09:18:41 +0000 From: "Bob Feng" To: "Chen, Christine" , "devel@edk2.groups.io" CC: Rebecca Cran , "Gao, Liming" Subject: Re: [Patch V1 2/3] BaseTools: FMMT replace output file is not generated successfully Thread-Topic: [Patch V1 2/3] BaseTools: FMMT replace output file is not generated successfully Thread-Index: AQHZcduWCaQddaApZkqUbSrL91n+9a98OaEA Date: Mon, 5 Jun 2023 09:18:40 +0000 Message-ID: References: <20230418095257.1602-1-yuwei.chen@intel.com> In-Reply-To: <20230418095257.1602-1-yuwei.chen@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB5863:EE_|CY8PR11MB7731:EE_ x-ms-office365-filtering-correlation-id: 1c38010e-6624-42d2-6d23-08db65a5da4e x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: n64clzcFVO5bzR8QXZn1A8/e3fXaMiljPkdhjhyUpKK49mPkDAR0vqz6OYc+kwBOMMfBxAOcWIAl/xndyuBtSMBNTaqwoAyjaQCyxXrPDj+1MpcI6qh3v64gINwGXWGgM99/EQc4xwSK/f8avRDMKqy7pFCtbFbP0z68VzLqMRTbS+7T0453VhhJuu5QFi1EXaY1XtUKG1xJKLY81J+0nP+EJYOqFwYJwL9+2Z9JZLXATRsXRLM75E87oGlNZa8gNQRyPJlSsqCcQb5BlQmysW/XljmjPf1nK4qDoSOwdXIAxj+dPe7z9pRYtp02zqB0mm5rc5ZlZX2vod0//3z0o/nwkRbm6lYfG1RRd6AlWDlQ2RuhO+WCS9swbJm/Ht1wsg75KnZ0VrZJQw92Jv/xQ1yYJCuXbvIACSdQKGS/r6/COJ4Ud6iMdIJI3svt+ZrdaHn58k/fsXKw3/36R1Mdu/ZBnfyW83mjjFGKkW3s1i5MzWr2546O67WKwz5kK9Q0oqiMLcS4eYrE4WUIDn1BE4sYPHWOf1tz3KWsAEeyfk1ISLmN6C4wvBWVh8SZFkVasLL9GRVsiNckulfTbAmcNTUA4fMqGIcS9youi9Qx4YqyaPcaMubU9ZOp4Hlhxhb0 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(136003)(346002)(376002)(366004)(396003)(451199021)(83380400001)(2906002)(86362001)(33656002)(38070700005)(122000001)(38100700002)(82960400001)(55016003)(7696005)(316002)(41300700001)(52536014)(5660300002)(8676002)(8936002)(110136005)(54906003)(478600001)(64756008)(66446008)(66556008)(66946007)(66476007)(71200400001)(4326008)(76116006)(6506007)(9686003)(53546011)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?KHl3wRyE5dHusdEOb9ycpuigI6EoqOxhkrh1CI/kZobok8FBRF8JCQakssJg?= =?us-ascii?Q?VnSc/zOy6VIWxJTA4YJSdVvRXThSZ0ADCQDc94g4en5Aplvr5jADtxscStYJ?= =?us-ascii?Q?7wozYInqeMY46xcwCiIsg3fmvkBtMPfZLcOUhUbQgaCg2Jau9d/kl7QSchyl?= =?us-ascii?Q?x5fgiiGtyWwLqtkcsClKR8LYkAjEEYCxmciUvwKCRWS2wJTicQ3OTzDNiG/n?= =?us-ascii?Q?wVnj67blSO63msDqCp0d2ssf615G9isD/E45Zt54766rFGEaGT2ov5zqRB6z?= =?us-ascii?Q?5fdPNTrwX7Ix0hzEKlpf0qSJT090BRrMUUZ6IG5o1muzpj4wkg7+c6vg+Lu5?= =?us-ascii?Q?PbfX5oNxmVjL7a39EHd77NQa8m/x6UOp/z1wznImqYAF7YHA9Fm1hSgdMU+j?= =?us-ascii?Q?NF2izMF3OohQcBfAQ1zQrtzFL+PG9XQoC5yr3hG5zyXlPihVEZvPIgcHmSX+?= =?us-ascii?Q?D9ogwV5NaPcK4iO73TteOcoPrEamGoauuYXiJNzdoP9jZi1cQvJo8nvqwKMR?= =?us-ascii?Q?aDKB+u1AxN0CqqLTDSjiQ0w+1ExG1OWBaQicpLtsYzoqr+rdHc2LttWPU3jf?= =?us-ascii?Q?aaXGOxjy8P3SzjoTmcYwSeThUQMw+IRHCYua5xcstXfD7HixS80O/PBn6/VA?= =?us-ascii?Q?1B6UYGvabPBZIxXD/1ey6JZC9ralf8YzMpa77Gw3sawbTEl+f4f7iiMmCBRV?= =?us-ascii?Q?kRY+tgk7H6ky8wThiNMCLBVq48Z5lhkm6bLUjP0qIit2SRnRVufU2OPmZqCV?= =?us-ascii?Q?qIKt5QoVbEGiYmRUhvQJFxULHB/xIBiXDsrl0vLV9ZqdRKc/GiBHToWyyk1v?= =?us-ascii?Q?5COcy3Gc33I4TINTC0l2TCRCZd/q1zqmBmZKhlDQM/N2Qjb9qjl5sCjbOwse?= =?us-ascii?Q?j6YvM2wzesafcEB9REtmKF2YQQtwKyGQNFKYqhKR5CLozU9levczlTpsh48v?= =?us-ascii?Q?+WbDbG23mYeYPXTQeQrWAJAeejySF7zuZ3099FKIxqMtJa6MRTxYdiMk7u7+?= =?us-ascii?Q?LfH462CpPxXXe+xWCE/2Zw+tx+eX2pmwkQjJaDzJMvySadm2zLTsF7OZVl80?= =?us-ascii?Q?dOc+bHEwQUTiVNhnufLULsmx/aeC498n/2AZGLt2+dqAdXAGhQ0HAuT7M/Kv?= =?us-ascii?Q?zUmPEFRomN2FG8MtJbmWyeNXNL5nUt8wzrC0NLDkBHKc/zHlUUh9KkdAWZvL?= =?us-ascii?Q?jiwN4dgSQdDvgIUW86r8t0cKxcPxpZQvrKkbinhb9jej9w95pzZTqVycs6dW?= =?us-ascii?Q?RPmJ4+pJgY/dbKuP6IhGeHhg7dPL7FEZMptJ0HKw4AYqpUYgxjceGCPPDrgI?= =?us-ascii?Q?0fiqXsC6R+lV70aVVe0p0lSqjajEkHMwmW7/9xMOluRubZRaj00UDfpxE2H+?= =?us-ascii?Q?3gSTXn4zOnEhGz4WCQk8Aa/j9P0pJgF6Vus1eH9+Dqte5+cGBrmbdkZn21DC?= =?us-ascii?Q?0vqKqsjBO5VZnk9GsQ1R98G0KGMeD5HebPFcVMo1+fstn0p0mhHq5ExnErq6?= =?us-ascii?Q?a72KCdaUExzXIBEE9AdGjU3EN3j1GbpYqGAGE4snHjfyGterDKGbuXqD4g?= =?us-ascii?Q?=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c38010e-6624-42d2-6d23-08db65a5da4e X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2023 09:18:40.9349 (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: 60gVDSoeycsaYSps14rFnsh7wOgZL3Z9jfCv/FPwKlwe6VMJnjqeuDh1fK4AVckzygmf5HU9NcHedBm3sAQElw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB7731 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 Reviewed-by: Bob Feng -----Original Message----- From: Chen, Christine =20 Sent: Tuesday, April 18, 2023 5:53 PM To: devel@edk2.groups.io Cc: Rebecca Cran ; Feng, Bob C ; G= ao, Liming Subject: [Patch V1 2/3] BaseTools: FMMT replace output file is not generate= d successfully For replace function, when target Ffs and new ffs are with same size, the o= utput file can not be generated successfully. This patch fixes this issue. Cc: Rebecca Cran Cc: Bob Feng Cc: Liming Gao Signed-off-by: Yuwei Chen --- BaseTools/Source/Python/FMMT/core/BiosTree.py | 4 ++-- BaseTools/Source= /Python/FMMT/core/FvHandler.py | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/BaseTools/Source/Python/FMMT/core/BiosTree.py b/BaseTools/Sour= ce/Python/FMMT/core/BiosTree.py index d8fa474335..137f49748b 100644 --- a/BaseTools/Source/Python/FMMT/core/BiosTree.py +++ b/BaseTools/Source/Python/FMMT/core/BiosTree.py @@ -56,7 +56,7 @@ class BIOSTREE: if len(self.Child) =3D=3D 0: self.Child.append(newNode) else: - if not pos: + if not pos or pos =3D=3D len(self.Child): LastTree =3D self.Child[-1] self.Child.append(newNode) LastTree.NextRel =3D newNode @@ -195,4 +195,4 @@ class BIO= STREE: for item in self.Child: TreeInfo[key].setdefault('Files',[]).append( item.ExportTree()= ) =20 - return TreeInfo \ No newline at end of file + return TreeInfo diff --git a/BaseTools/Source/Python/FMMT/core/FvHandler.py b/BaseTools/Sou= rce/Python/FMMT/core/FvHandler.py index b0cc1951a1..49bbc35baa 100644 --- a/BaseTools/Source/Python/FMMT/core/FvHandler.py +++ b/BaseTools/Source/Python/FMMT/core/FvHandler.py @@ -387,7 +387,21 @@ class FvHandler: if self.NewFfs.Data.Size >=3D self.TargetFfs.Data.Size: Needed_Space =3D self.NewFfs.Data.Size + len(self.NewFfs.Data.= PadData) - self.TargetFfs.Data.Size - len(self.TargetFfs.Data.PadData) # If TargetFv have enough free space, just move part of the fr= ee space to NewFfs. - if TargetFv.Data.Free_Space >=3D Needed_Space: + if Needed_Space =3D=3D 0: + Target_index =3D TargetFv.Child.index(self.TargetFfs) + TargetFv.Child.remove(self.TargetFfs) + TargetFv.insertChild(self.NewFfs, Target_index) + # Modify TargetFv Header and ExtHeader info. + TargetFv.Data.ModFvExt() + TargetFv.Data.ModFvSize() + TargetFv.Data.ModExtHeaderData() + ModifyFvExtData(TargetFv) + TargetFv.Data.ModCheckSum() + # Recompress from the Fv node to update all the related no= de data. + self.CompressData(TargetFv) + # return the Status + self.Status =3D True + elif TargetFv.Data.Free_Space >=3D Needed_Space: # Modify TargetFv Child info and BiosTree. TargetFv.Child[-1].Data.Data =3D b'\xff' * (TargetFv.Data.= Free_Space - Needed_Space) TargetFv.Data.Free_Space -=3D Needed_Space @@ -450,7 +464,= 6 @@ class FvHandler: Target_index =3D TargetFv.Child.index(self.TargetFfs) TargetFv.Child.remove(self.TargetFfs) TargetFv.insertChild(self.NewFfs, Target_index) - self.Status =3D True # If TargetFv do not have free space, create free space for Fv= . else: New_Free_Space_Tree =3D BIOSTREE('FREE_SPACE') @@ -461,7 += 474,6 @@ class FvHandler: Target_index =3D TargetFv.Child.index(self.TargetFfs) TargetFv.Child.remove(self.TargetFfs) TargetFv.insertChild(self.NewFfs, Target_index) - self.Status =3D True # Modify TargetFv Header and ExtHeader info. TargetFv.Data.ModFvExt() TargetFv.Data.ModFvSize() @@ -470,6 +482,7 @@ class FvHandler: TargetFv.Data.ModCheckSum() # Recompress from the Fv node to update all the related node d= ata. self.CompressData(TargetFv) + self.Status =3D True logger.debug('Done!') return self.Status =20 -- 2.39.1.windows.1