From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id AA98A940F1F for ; Wed, 13 Dec 2023 03:23:57 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=OsEExt+HHh3e/q2R9ktq2aGDcfL6rXGoJ66EXaF4gPI=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1702437836; v=1; b=eiuMKaERyBEMgwBmGxStVx6tHP5SmQAgiIDKGvceplb8xq4M3Tphfu1Q0FrWs6OfKvr4pE0T OESJ4vCgkVBk6+G7SOGPvDHbLcVy+J3XTg8lIvpxT7hLJKQ2yGKja5tQRqUlmuJiCHoE4BTO7NS UOuiNaXoO4OgT7pO0XL/xw6k= X-Received: by 127.0.0.2 with SMTP id FpjYYY7687511xs6otrjOfvf; Tue, 12 Dec 2023 19:23:56 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by mx.groups.io with SMTP id smtpd.web10.25487.1702437835003290864 for ; Tue, 12 Dec 2023 19:23:55 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10922"; a="16460593" X-IronPort-AV: E=Sophos;i="6.04,272,1695711600"; d="scan'208";a="16460593" X-Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Dec 2023 19:23:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,272,1695711600"; d="scan'208";a="21773005" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 12 Dec 2023 19:23:54 -0800 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 12 Dec 2023 19:23:53 -0800 X-Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 12 Dec 2023 19:23:53 -0800 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) 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.2507.35; Tue, 12 Dec 2023 19:23:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Al199u7QzcwkJ877Hn8UGQ9zblgkWJyi1DFcuyUl6eVCKDcxCan+hOof254DRGLrE3ECT8ySRZmOw3PwVRiuo/xtbrkaXzvYuBeQEoBIMuQJsmicydaWbD4gUQN2G5asylDqe7rJY3Fv9sVEsZaVmuuCDqy4mPTABOZV6rtsHzrjAe+1Sm91Q4iZZiKTjEA55aCjXdVkUG3ZSMzn8oUl4EY0qXoUpLg7rQSLyQ8b1dQrGkN8rDdx5jebnWKyrWlksNRbDyS8PLZCJ/8T1whsb9/Ttz+/JnZJYj2viNYbprvfK14ideMo5FU0AMuzTdT6VPJMQ4jN2R+HRwZEsQpyyQ== 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=IqDSSM6HE/bvtnRg13sM0b06uZ4N/MW9nZlmn6+r3nw=; b=TBw43+I2aMt1FK3euW6k5VDgkMssUEND4Bsgjlw9K+GTGHtQaZ02XStCBScKkHlJHowvMEJ/sDreuiuTK+WGhCHUsKC3L4RGCDChCIHii4lRRdxt3XlbYXiEBq4UKkKu1C2UpgbY4vUuz8ssfJW1BlO2hErcX6NSVQ/LMEql6tsKaRZhRNHT6OYkbKzPBjWeX7eElrQ0nWPPXjttn9hDOHnnfVUsI3XJQnBCJkPdEoj7iQ9gksTFqLGLY6S/8iiYLNczMdRhlqur7ccFCKTJTqFyyz1W9cpzyR9A+NV6S/mCQ3OuYuGCslNVjnmIqiD+bqfkrtdC8LY8zVROS/bFRw== 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 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by PH7PR11MB5765.namprd11.prod.outlook.com (2603:10b6:510:139::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 03:23:49 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::b614:1f5e:8b0c:9858]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::b614:1f5e:8b0c:9858%4]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 03:23:49 +0000 From: "Ni, Ray" To: "Wang, Fan" , "devel@edk2.groups.io" CC: "Kinney, Michael D" , "Gao, Liming" , "Jiang, Guomin" , "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH v4 1/1] MdeModulePkg: Support customized FV Migration Information Thread-Topic: [PATCH v4 1/1] MdeModulePkg: Support customized FV Migration Information Thread-Index: AQHaLBFU3hdN8ivHr0+wg11TVbUcRLCmjpiQ Date: Wed, 13 Dec 2023 03:23:48 +0000 Message-ID: References: <20231211090611.3780-1-fan.wang@intel.com> In-Reply-To: <20231211090611.3780-1-fan.wang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|PH7PR11MB5765:EE_ x-ms-office365-filtering-correlation-id: 7b436f99-0f2b-4907-7cbb-08dbfb8aec2f x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: cO9maRyh2s+CYy2mR61LHkWGGqy9QcKbPQxtFMSlU1iGdis/z8QJijVlKQp1+ZrqkSHNsJPMIUNReTEh8tkdmoD1DxMrE2nnm1PXFS+YhQpBcwTiXUkBLPygPzc+hol36fK1v45hH24+wN1fctDhKPOApn8PMnGZ7DifS7vNFoYqRcGT9kBZZxPFdlchBw4rvjc1zwm8Hlm/lb+L0LpltieTm2I4TJfsTn5JoChzPd/90dhtn8XJYV5xOP1qcuyCRJ9wqhW7VmjmivtmK3B8Wi9FPyIHD+Ekjf1yN4d9eEdK5F5NAE4PbkvTOUIj53iyV8DkJ+XfRr/6qWBfUygqXFKcpdvrtHgw+Y686+vtXlOb8Hoa6bLXz8/MP2tSOVQo+DHtej+Cm3aG95CZCma5p33n9UdWxKnTR3uTA+MNMEzz2T2jGPNLCa3tVEv9FwdwCH1o/R3egIjU++CN/RNyh/9QM6i2151ltBsjZmmaLQIo3x6Tpjo/YH1tcbTVcezmo1aRtGn8uKdDqbPlqTbp/U8GMeKk3U3O/AuSDulo7j6UbmJzkI1V/667eDTraWcV1G7+HgSzuqK9jqzzrBeCNtFVv6gnSLkA8QN6oZW4HBA= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?DnyLanJe6k1ud2LkqN57+/TtEEruwyOZrLKzH50tyJ5LeWd4U9ZmXFN3Zf3d?= =?us-ascii?Q?yNLlKggyOPAQq3XXHx3WE2IXTFJ9+oAIjwQxbnhD7bBYRyVfTRjUKQAAw9zm?= =?us-ascii?Q?ULqNOePRYUV95h2OsAescsL6mVOk5bC1cgxNdXMxfDQqlLzVe2Pv9KAnoZMy?= =?us-ascii?Q?/8AqnDho0eqNxkrOLxET7NK5epB18ShqnPgaLizU08Y6FdR9HG06X97AvRUW?= =?us-ascii?Q?JcIVgJXzumvni6i0FlOPIbO4s+DK2ud8ASRPZEKXCUMHDt7LOCMxBGYAyiTi?= =?us-ascii?Q?qTexVTRD+BvvFMxo0DDERvqs5tT48jiB+nc9JUcshHH21gqjIY7kXZULgupl?= =?us-ascii?Q?c4xdRbB+MXlXupb2vH77y2kPEBwzGGze8eGFRrLQ3QqIxS+vSOfiSwllz7Yh?= =?us-ascii?Q?4JboGR3oDGmJoFYEmd8f0Bq/M1WY/kZtf/rzi+0JX7T6bOXzBdoMDwUPy4w0?= =?us-ascii?Q?/+abruGKDe6xAF2LsBMMswi5GQ9HctwSDN+guaaZET2aoxm4UnNuo2mFj9CC?= =?us-ascii?Q?3Ly9LI/oFqVI5nTZZ4b6szxV0aNbcswu+lSWIV3YklfwR9IQvvhAekaJi/28?= =?us-ascii?Q?ZzTweQv/BhcsiK/9Pjf16GWxCI5/po/Kf2t6fNK6+VxCJ3NQzSpwvG8bWR2C?= =?us-ascii?Q?JyujJ79e6wgc4O+7S5/1m20Aa6xOqJtnPrcOqYtwQF9/kajEoQooV3HXGQTs?= =?us-ascii?Q?5KCc9qZjskXBzSRAB+VeHyNXyyuKdjqB2NwHFd9vnvdzhbvdTZ7rAJ6NF7X7?= =?us-ascii?Q?+traBVrEaP/kLx/3yNHJN0We5eZPA/+9upOBPTLwsufveyg0iyzfer0FSoit?= =?us-ascii?Q?oH5bJO0ZFnjA1UKrqBHmVgldbzV2H+t7vEtVfGPRJYZ8y8ZJGrQ7jkjL25Xh?= =?us-ascii?Q?3eGb6V7prffv5cs0tiPPMFhAN7htz9mPSH2/d7uNJlL3ScJH8VxYQtG+janQ?= =?us-ascii?Q?L/mKLVFC3ykIUHj8yXzyhcH5KBC1azsYc1B8XsftWBXFIBv7fVmdQ6Z+2+Dd?= =?us-ascii?Q?IRXbJfpxPlVZNE/ImZw+Q6fRjD6CUaTA1SiXSeP5rNQd7rclDzLxNA9Hv3u5?= =?us-ascii?Q?BLbZgkqKPw4Igr/BCsWrPAYy2FsHsuWQVfR0DPHedhnBWruEV537tSOMrCdY?= =?us-ascii?Q?8fzGdmXY4D8Hq8eDnwUga79z5+6GHDhFaYC/z2D0FUiLYKM7bhlFLzJg6Zuw?= =?us-ascii?Q?cvpspZvtuD/10dXvzc6Lw/0wefhvKaW1/qLGb7dCs5eMpo3EDeMXzPyKMmhU?= =?us-ascii?Q?VRFlNRtLyAm4KolWiows2fYuBZbEFRlepB6DpEhGaSSvYOrLaNL4tBnpiKn4?= =?us-ascii?Q?Bjj+Ol6Pi6ouWt1E0fXbvAhID330gfNsrED7reLY4kmRk/VVMrTdFFn9JtlI?= =?us-ascii?Q?Z8uXDoar/mpnTVBe/Ch+xVUvscmO52G44n0TAV2N9HZiUnQzbwtrxshvgJU+?= =?us-ascii?Q?4z1OKqXQ5s1ExyqN65+b+LxWwfVtn78JI9dLMKOCfnlFvYjp3KI1FC8S6+P+?= =?us-ascii?Q?1AkYqwVT1Jq3oW27FpQvavF6YwX4Gcx3dHIp+CF7PxiBNOBX/sNpGznIvv7l?= =?us-ascii?Q?GDucY0vQ/qWgQ/S73/w=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b436f99-0f2b-4907-7cbb-08dbfb8aec2f X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2023 03:23:48.9192 (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: jp5jvwVigsvQYPyVS5/rns7/x4jTkCgrLMOxbQXOh4Qqg+pAUIiaHhnLTyOeo6HS0sK1y96LRNzsZJ/XDa8V2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB5765 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: ALANorBwx9Fdkmu7tstt9DNJx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=eiuMKaER; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Fan, 1. MigrateAll can potentially replace the needs of the existing PCD. So, do= you think it's better to locate the HOB always, instead of only when the P= CD is TRUE? 2. Is the change in TcgPei necessary? Thanks, Ray > -----Original Message----- > From: Wang, Fan > Sent: Monday, December 11, 2023 5:06 PM > To: devel@edk2.groups.io > Cc: Wang, Fan ; Kinney, Michael D > ; Gao, Liming ; Ni, > Ray ; Jiang, Guomin ; Wang, > Jian J > Subject: [PATCH v4 1/1] MdeModulePkg: Support customized FV Migration > Information >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4533 >=20 > There are use cases which not all FVs need be migrated from TempRam to > permanent memory before TempRam tears down. This new guid is introduced > to avoid unnecessary FV migration to improve boot performance. Platform > can publish MigrationInfo hob with this guid to customize FV migration > info, and PeiCore will only migrate FVs indicated by this Hob info. >=20 > This is a backwards compatible change, PeiCore will check MigrationInfo > hob before migration. If MigrationInfo hobs exists, only migrate FVs > recorded by hobs. If MigrationInfo hobs not exists, migrate all FVs to > permanent memory. >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Ray Ni > Cc: Guomin Jiang > Cc: Jian J Wang > Signed-off-by: Fan Wang > --- > MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 79 > +++++++++++++------ > MdeModulePkg/Core/Pei/PeiMain.inf | 1 + > MdeModulePkg/Include/Guid/MigratedFvInfo.h | 42 +++++++++- > MdeModulePkg/MdeModulePkg.dec | 3 +- > SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c | 7 +- > SecurityPkg/Tcg/TcgPei/TcgPei.c | 7 +- > 6 files changed, 111 insertions(+), 28 deletions(-) >=20 > diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c > b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c > index 5f32ebb560..0086087e82 100644 > --- a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c > +++ b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c > @@ -1184,7 +1184,12 @@ EvacuateTempRam ( >=20 >=20 > PEI_CORE_FV_HANDLE PeiCoreFvHandle; >=20 > EFI_PEI_CORE_FV_LOCATION_PPI *PeiCoreFvLocationPpi; >=20 > + EFI_PEI_HOB_POINTERS Hob; >=20 > + EDKII_MIGRATION_INFO *MigrationInfo; >=20 > + TO_MIGRATE_FV_INFO *ToMigrateFvInfo; >=20 > + UINT32 FvMigrationFlags; >=20 > EDKII_MIGRATED_FV_INFO MigratedFvInfo; >=20 > + UINTN Index; >=20 >=20 >=20 > ASSERT (Private->PeiMemoryInstalled); >=20 >=20 >=20 > @@ -1211,6 +1216,13 @@ EvacuateTempRam ( >=20 >=20 > ConvertPeiCorePpiPointers (Private, &PeiCoreFvHandle); >=20 >=20 >=20 > + Hob.Raw =3D GetFirstGuidHob (&gEdkiiMigrationInfoGuid); >=20 > + if (Hob.Raw !=3D NULL) { >=20 > + MigrationInfo =3D GET_GUID_HOB_DATA (Hob); >=20 > + } else { >=20 > + MigrationInfo =3D NULL; >=20 > + } >=20 > + >=20 > for (FvIndex =3D 0; FvIndex < Private->FvCount; FvIndex++) { >=20 > FvHeader =3D Private->Fv[FvIndex].FvHeader; >=20 > ASSERT (FvHeader !=3D NULL); >=20 > @@ -1224,20 +1236,27 @@ EvacuateTempRam ( > ) >=20 > ) >=20 > { >=20 > - // >=20 > - // Allocate page to save the rebased PEIMs, the PEIMs will get > dispatched later. >=20 > - // >=20 > - Status =3D PeiServicesAllocatePages ( >=20 > - EfiBootServicesCode, >=20 > - EFI_SIZE_TO_PAGES ((UINTN)FvHeader->FvLength), >=20 > - &FvHeaderAddress >=20 > - ); >=20 > - ASSERT_EFI_ERROR (Status); >=20 > - MigratedFvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER > *)(UINTN)FvHeaderAddress; >=20 > + if ((MigrationInfo =3D=3D NULL) || (MigrationInfo->MigrateAll =3D= =3D TRUE)) { >=20 > + // Migrate all FVs and copy raw data >=20 > + FvMigrationFlags =3D FLAGS_FV_RAW_DATA_COPY; >=20 > + } else { >=20 > + for (Index =3D 0; Index < MigrationInfo->ToMigrateFvCount; Index= ++) > { >=20 > + ToMigrateFvInfo =3D ((TO_MIGRATE_FV_INFO *)(MigrationInfo + > 1)) + Index; >=20 > + if (ToMigrateFvInfo->FvOrgBaseOnTempRam =3D=3D > (UINT32)(UINTN)FvHeader) { >=20 > + // This FV is to migrate >=20 > + FvMigrationFlags =3D ToMigrateFvInfo->FvMigrationFlags; >=20 > + break; >=20 > + } >=20 > + } >=20 > + >=20 > + if (Index =3D=3D MigrationInfo->ToMigrateFvCount) { >=20 > + // This FV is not expected to migrate >=20 > + continue; >=20 > + } >=20 > + } >=20 >=20 >=20 > // >=20 > - // Allocate pool to save the raw PEIMs, which is used to keep > consistent context across >=20 > - // multiple boot and PCR0 will keep the same no matter if the addr= ess > of allocated page is changed. >=20 > + // Allocate pages to save the rebased PEIMs, the PEIMs will get > dispatched later. >=20 > // >=20 > Status =3D PeiServicesAllocatePages ( >=20 > EfiBootServicesCode, >=20 > @@ -1245,7 +1264,8 @@ EvacuateTempRam ( > &FvHeaderAddress >=20 > ); >=20 > ASSERT_EFI_ERROR (Status); >=20 > - RawDataFvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER > *)(UINTN)FvHeaderAddress; >=20 > + MigratedFvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER > *)(UINTN)FvHeaderAddress; >=20 > + CopyMem (MigratedFvHeader, FvHeader, > (UINTN)FvHeader->FvLength); >=20 >=20 >=20 > DEBUG (( >=20 > DEBUG_VERBOSE, >=20 > @@ -1256,17 +1276,34 @@ EvacuateTempRam ( > )); >=20 >=20 >=20 > // >=20 > - // Copy the context to the rebased pages and raw pages, and create > hob to save the >=20 > - // information. The MigratedFvInfo HOB will never be produced when >=20 > - // PcdMigrateTemporaryRamFirmwareVolumes is FALSE, because the > PCD control the >=20 > - // feature. >=20 > + // Create hob to save MigratedFvInfo, this hob will only be produc= ed > when >=20 > + // Migration feature PCD > PcdMigrateTemporaryRamFirmwareVolumes is set to TRUE. >=20 > // >=20 > - CopyMem (MigratedFvHeader, FvHeader, > (UINTN)FvHeader->FvLength); >=20 > - CopyMem (RawDataFvHeader, MigratedFvHeader, > (UINTN)FvHeader->FvLength); >=20 > MigratedFvInfo.FvOrgBase =3D (UINT32)(UINTN)FvHeader; >=20 > MigratedFvInfo.FvNewBase =3D (UINT32)(UINTN)MigratedFvHeader; >=20 > - MigratedFvInfo.FvDataBase =3D (UINT32)(UINTN)RawDataFvHeader; >=20 > + MigratedFvInfo.FvDataBase =3D 0; >=20 > MigratedFvInfo.FvLength =3D > (UINT32)(UINTN)FvHeader->FvLength; >=20 > + >=20 > + // >=20 > + // When FLAGS_FV_RAW_DATA_COPY bit is set, copy the context to > the raw pages and >=20 > + // reset raw data base address in MigratedFvInfo hob. >=20 > + // >=20 > + if ((FvMigrationFlags & FLAGS_FV_RAW_DATA_COPY) =3D=3D > FLAGS_FV_RAW_DATA_COPY) { >=20 > + DEBUG ((DEBUG_INFO, " Copying Raw Data ...\n")); >=20 > + // >=20 > + // Allocate pages to save the raw PEIMs >=20 > + // >=20 > + Status =3D PeiServicesAllocatePages ( >=20 > + EfiBootServicesCode, >=20 > + EFI_SIZE_TO_PAGES ((UINTN)FvHeader->FvLength), >=20 > + &FvHeaderAddress >=20 > + ); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + RawDataFvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER > *)(UINTN)FvHeaderAddress; >=20 > + CopyMem (RawDataFvHeader, MigratedFvHeader, > (UINTN)FvHeader->FvLength); >=20 > + MigratedFvInfo.FvDataBase =3D > (UINT32)(UINTN)RawDataFvHeader; >=20 > + } >=20 > + >=20 > BuildGuidDataHob (&gEdkiiMigratedFvInfoGuid, &MigratedFvInfo, > sizeof (MigratedFvInfo)); >=20 >=20 >=20 > // >=20 > @@ -1330,8 +1367,6 @@ EvacuateTempRam ( > } >=20 > } >=20 >=20 >=20 > - RemoveFvHobsInTemporaryMemory (Private); >=20 > - >=20 > return Status; >=20 > } >=20 >=20 >=20 > diff --git a/MdeModulePkg/Core/Pei/PeiMain.inf > b/MdeModulePkg/Core/Pei/PeiMain.inf > index 0cf357371a..893bdc0527 100644 > --- a/MdeModulePkg/Core/Pei/PeiMain.inf > +++ b/MdeModulePkg/Core/Pei/PeiMain.inf > @@ -78,6 +78,7 @@ > gEfiFirmwareFileSystem3Guid >=20 > gStatusCodeCallbackGuid >=20 > gEdkiiMigratedFvInfoGuid ## > SOMETIMES_PRODUCES ## HOB >=20 > + gEdkiiMigrationInfoGuid ## > SOMETIMES_CONSUMES ## HOB >=20 >=20 >=20 > [Ppis] >=20 > gEfiPeiStatusCodePpiGuid ## > SOMETIMES_CONSUMES # PeiReportStatusService is not ready if this PPI > doesn't exist >=20 > diff --git a/MdeModulePkg/Include/Guid/MigratedFvInfo.h > b/MdeModulePkg/Include/Guid/MigratedFvInfo.h > index aca2332a0e..1c8b0dfefc 100644 > --- a/MdeModulePkg/Include/Guid/MigratedFvInfo.h > +++ b/MdeModulePkg/Include/Guid/MigratedFvInfo.h > @@ -9,13 +9,53 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #ifndef __EDKII_MIGRATED_FV_INFO_GUID_H__ >=20 > #define __EDKII_MIGRATED_FV_INFO_GUID_H__ >=20 >=20 >=20 > +// >=20 > +// FLAGS_FV_RAW_DATA_COPY indicates FV raw data will be copied to > permanent memory >=20 > +// or not. When FV is migrated to permanent memory, it will be rebased a= nd > raw >=20 > +// data will be lost. This bit can be configured as below values: >=20 > +// 0: FV raw data will not be used in later phase, and the copy will be = skipped > to >=20 > +// optimize boot performance. >=20 > +// 1: FV raw data will be copied to permanent memory for later phase use > (such as >=20 > +// FV measurement). >=20 > +// >=20 > +#define FLAGS_FV_RAW_DATA_COPY BIT0 >=20 > + >=20 > +/// >=20 > +/// In real use cases, not all FVs need migrate to permanent memory befo= re > TempRam tears >=20 > +/// down. EDKII_MIGRATION_INFO hob should be published by platform to > indicate which >=20 > +/// FVs need migration to optimize boot performance. If this hob is not > detected by Pei >=20 > +/// Core, all FVs on TempRam will be migrated and FV raw data will also = be > copied. >=20 > +/// Only one EDKII_MIGRATION_INFO hob should be published by platform, > and this hob will >=20 > +/// take effect only when migration feature is enabled by PCD. >=20 > +/// >=20 > +typedef struct { >=20 > + UINT32 FvOrgBaseOnTempRam; // Original FV address on > Temporary Ram >=20 > + // >=20 > + // FV Migration Flags: >=20 > + // Bit0: Indicate to copy FV raw data or not >=20 > + // Others: Reserved bits >=20 > + // >=20 > + UINT32 FvMigrationFlags; >=20 > +} TO_MIGRATE_FV_INFO; >=20 > + >=20 > +typedef struct { >=20 > + BOOLEAN MigrateAll; // Migrate all FVs and > also copy FV raw data >=20 > + // >=20 > + // ToMigrateFvCount and ToMigrateFvInfo array indicate which FVs need > be migrated, and >=20 > + // these info should be ignored when MigrateAll field is set to TRUE. >=20 > + // >=20 > + UINT32 ToMigrateFvCount; >=20 > + // TO_MIGRATE_FV_INFO ToMigrateFvInfo[]; >=20 > +} EDKII_MIGRATION_INFO; >=20 > + >=20 > typedef struct { >=20 > UINT32 FvOrgBase; // original FV address >=20 > UINT32 FvNewBase; // new FV address >=20 > - UINT32 FvDataBase; // original FV data >=20 > + UINT32 FvDataBase; // original FV data, 0 means raw data is > not copied >=20 > UINT32 FvLength; // Fv Length >=20 > } EDKII_MIGRATED_FV_INFO; >=20 >=20 >=20 > +extern EFI_GUID gEdkiiMigrationInfoGuid; >=20 > extern EFI_GUID gEdkiiMigratedFvInfoGuid; >=20 >=20 >=20 > #endif // #ifndef __EDKII_MIGRATED_FV_INFO_GUID_H__ >=20 > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec > index 1a162e97e6..a2cd83345f 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -421,7 +421,8 @@ > gEdkiiCapsuleOnDiskNameGuid =3D { 0x98c80a4f, 0xe16b, 0x4d11, { 0x93, > 0x9a, 0xab, 0xe5, 0x61, 0x26, 0x3, 0x30 } } >=20 >=20 >=20 > ## Include/Guid/MigratedFvInfo.h >=20 > - gEdkiiMigratedFvInfoGuid =3D { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0xf= 4, > 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } } >=20 > + gEdkiiMigrationInfoGuid =3D { 0xb4b140a5, 0x72f6, 0x4c21, { 0x93, 0x= e4, > 0xac, 0xc4, 0xec, 0xcb, 0x23, 0x23 } } >=20 > + gEdkiiMigratedFvInfoGuid =3D { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0x= f4, > 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } } >=20 >=20 >=20 > ## Include/Guid/RngAlgorithm.h >=20 > gEdkiiRngAlgorithmUnSafe =3D { 0x869f728c, 0x409d, 0x4ab4, {0xac, 0x03= , > 0x71, 0xd3, 0x09, 0xc1, 0xb3, 0xf4 }} >=20 > diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > index 1caaa4e319..daaf49e644 100644 > --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > @@ -726,8 +726,11 @@ MeasureFvImage ( > // >=20 > // Found the migrated FV info >=20 > // >=20 > - FvOrgBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; >=20 > - FvDataBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; >=20 > + FvOrgBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; >=20 > + if (MigratedFvInfo->FvDataBase !=3D 0) { >=20 > + FvDataBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; >=20 > + } >=20 > + >=20 > break; >=20 > } >=20 >=20 >=20 > diff --git a/SecurityPkg/Tcg/TcgPei/TcgPei.c > b/SecurityPkg/Tcg/TcgPei/TcgPei.c > index 5aa80511aa..d35c2ad0bc 100644 > --- a/SecurityPkg/Tcg/TcgPei/TcgPei.c > +++ b/SecurityPkg/Tcg/TcgPei/TcgPei.c > @@ -463,8 +463,11 @@ MeasureFvImage ( > // >=20 > // Found the migrated FV info >=20 > // >=20 > - FvOrgBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; >=20 > - FvDataBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; >=20 > + FvOrgBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; >=20 > + if (MigratedFvInfo->FvDataBase !=3D 0) { >=20 > + FvDataBase =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; >=20 > + } >=20 > + >=20 > break; >=20 > } >=20 >=20 >=20 > -- > 2.26.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112464): https://edk2.groups.io/g/devel/message/112464 Mute This Topic: https://groups.io/mt/103105558/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/19134562= 12/xyzzy [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-