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.web10.941.1688009670088360537 for ; Wed, 28 Jun 2023 20:34:31 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=IgY+ZiGz; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: yuwei.chen@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688009670; x=1719545670; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=EzLjR2uXsbhL7Q3nq0DnaPRLBMAyrHJCrTYdu9x6T6g=; b=IgY+ZiGzo1JE2wDRyDSSd+P7NIGzrmDYFXCiTyRucl3223p5t6bspCoC JTx1tiZEztLMjKwD0n72NdBvC2SXS1dDJ7/UyC+8+O2rbnzaBuAhkUEyh FP80wqTZNeuEqe4yVMPEh0tJzTCENkwpwPUj0xdVEG3eTfkKa1CfDTIXh s5x4rJVGtVbLgRBAwooh7c+PPmPDxl0ad57mwdvhmgPWLMAVn+bCibimC XAUoAVWrIholgBFdWY3b0VjNMyfdzk6xcwrQ2LGxl36qhPr9p0h5We9Sw 8aTnO5/qHgPy/EMO70fDQ72vsFlKmH3dDwcQymZxXsXCbKuPOyOJeB1FS Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="365477722" X-IronPort-AV: E=Sophos;i="6.01,167,1684825200"; d="scan'208";a="365477722" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2023 20:34:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="861765718" X-IronPort-AV: E=Sophos;i="6.01,167,1684825200"; d="scan'208";a="861765718" Received: from yuweipc.ccr.corp.intel.com ([10.239.158.24]) by fmsmga001.fm.intel.com with ESMTP; 28 Jun 2023 20:34:27 -0700 From: "Yuwei Chen" To: devel@edk2.groups.io Cc: Rebecca Cran , Liming Gao , Bob Feng Subject: [Patch V2 1/4] BaseTools: fixing FMMT ShrinkFv issue Date: Thu, 29 Jun 2023 11:34:20 +0800 Message-Id: <20230629033420.872-1-yuwei.chen@intel.com> X-Mailer: git-send-email 2.27.0.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 1. FvLength not change issue; 2. FileSystemGuid align with File Size; Cc: Rebecca Cran Cc: Liming Gao Cc: Bob Feng Signed-off-by: Yuwei Chen --- BaseTools/Source/Python/FMMT/core/FMMTOperation.py | 2 +- BaseTools/Source/Python/FMMT/core/FvHandler.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/BaseTools/Source/Python/FMMT/core/FMMTOperation.py b/BaseTools/Source/Python/FMMT/core/FMMTOperation.py index a86f8dda9a1a..d4aa3397036d 100644 --- a/BaseTools/Source/Python/FMMT/core/FMMTOperation.py +++ b/BaseTools/Source/Python/FMMT/core/FMMTOperation.py @@ -188,7 +188,7 @@ def ExtractFfs(inputfile: str, Ffs_name: str, outputfile: str, Fv_name: str=None FmmtParser.WholeFvTree.Findlist.remove(FmmtParser.WholeFvTree.Findlist[index]) if FmmtParser.WholeFvTree.Findlist != []: TargetNode = FmmtParser.WholeFvTree.Findlist[0] - if TargetNode.type == FV_TREE or SEC_FV_TREE or DATA_FV_TREE: + if TargetNode.type == FV_TREE or TargetNode.type == SEC_FV_TREE or TargetNode.type == DATA_FV_TREE: FinalData = struct2stream(TargetNode.Data.Header) + TargetNode.Data.Data with open(outputfile, "wb") as f: f.write(FinalData) diff --git a/BaseTools/Source/Python/FMMT/core/FvHandler.py b/BaseTools/Source/Python/FMMT/core/FvHandler.py index ff3d637623f8..b0cc1951a1c6 100644 --- a/BaseTools/Source/Python/FMMT/core/FvHandler.py +++ b/BaseTools/Source/Python/FMMT/core/FvHandler.py @@ -279,7 +279,7 @@ class FvHandler: ParTree.Child.remove(ParTree.Child[-1]) ParTree.Data.Free_Space = 0 ParTree.Data.Size += Needed_Space - ParTree.Data.Header.Fvlength = ParTree.Data.Size + ParTree.Data.Header.FvLength = ParTree.Data.Size ModifyFvSystemGuid(ParTree) for item in ParTree.Child: if item.type == FFS_FREE_SPACE: @@ -650,8 +650,12 @@ class FvHandler: Removed_Space = TargetFv.Data.Free_Space - New_Free_Space TargetFv.Child[-1].Data.Data = b'\xff' * New_Free_Space TargetFv.Data.Size -= Removed_Space - TargetFv.Data.Header.Fvlength = TargetFv.Data.Size - ModifyFvSystemGuid(TargetFv) + TargetFv.Data.Header.FvLength = TargetFv.Data.Size + if struct2stream(TargetFv.Data.Header.FileSystemGuid) == EFI_FIRMWARE_FILE_SYSTEM3_GUID_BYTE: + if TargetFv.Data.Size <= 0xFFFFFF: + TargetFv.Data.Header.FileSystemGuid = ModifyGuidFormat( + "8c8ce578-8a3d-4f1c-9935-896185c32dd3") + for item in TargetFv.Child: if item.type == FFS_FREE_SPACE: TargetFv.Data.Data += item.Data.Data + item.Data.PadData -- 2.27.0.windows.1