* [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information @ 2023-12-14 13:53 Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 1/2] MdeModulePkg: " Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 2/2] SecurityPkg: " Wang Fan 0 siblings, 2 replies; 6+ messages in thread From: Wang Fan @ 2023-12-14 13:53 UTC (permalink / raw) To: devel; +Cc: Fan Wang 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. 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. In Tcg driver, when MigratedFvInfo hob is detected, existing code logic is assuming FV raw data is already copied, and raw data base address is also recorded. Due to the new PeiCore change, the platform can publish hob to indicate raw data need be copied or not along with FV migration. Two cases need be considered to skip copy for boot performance: The first case is FV is not expected to be measured in post-mem phase, we should use MeasurementExcludedPpiGuid to skip measurement. The second case is FV raw data has no need to do rebase operation after migration, then measurement should calculate hash directly from FV base address. Fan Wang (2): MdeModulePkg: Support customized FV Migration Information SecurityPkg: Support customized FV Migration Information MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 ++++++++++++++----- MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- MdeModulePkg/Core/Pei/PeiMain.h | 11 --- 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 +- 8 files changed, 116 insertions(+), 79 deletions(-) -- 2.29.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112530): https://edk2.groups.io/g/devel/message/112530 Mute This Topic: https://groups.io/mt/103169821/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* [edk2-devel] [PATCH v5 1/2] MdeModulePkg: Support customized FV Migration Information 2023-12-14 13:53 [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information Wang Fan @ 2023-12-14 13:53 ` Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 2/2] SecurityPkg: " Wang Fan 1 sibling, 0 replies; 6+ messages in thread From: Wang Fan @ 2023-12-14 13:53 UTC (permalink / raw) To: devel; +Cc: Fan Wang, Michael D Kinney, Liming Gao, Ray Ni, Guomin Jiang REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4533 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. 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. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Ray Ni <ray.ni@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Fan Wang <fan.wang@intel.com> --- MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 ++++++++++++++----- MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- MdeModulePkg/Core/Pei/PeiMain.h | 11 --- MdeModulePkg/Core/Pei/PeiMain.inf | 1 + MdeModulePkg/Include/Guid/MigratedFvInfo.h | 42 +++++++++- MdeModulePkg/MdeModulePkg.dec | 3 +- 6 files changed, 106 insertions(+), 75 deletions(-) diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c index 5f32ebb560ae..4cd8c843cd92 100644 --- a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c +++ b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c @@ -1184,7 +1184,12 @@ EvacuateTempRam ( PEI_CORE_FV_HANDLE PeiCoreFvHandle; EFI_PEI_CORE_FV_LOCATION_PPI *PeiCoreFvLocationPpi; + EFI_PEI_HOB_POINTERS Hob; + EDKII_MIGRATION_INFO *MigrationInfo; + TO_MIGRATE_FV_INFO *ToMigrateFvInfo; + UINT32 FvMigrationFlags; EDKII_MIGRATED_FV_INFO MigratedFvInfo; + UINTN Index; ASSERT (Private->PeiMemoryInstalled); @@ -1211,6 +1216,13 @@ EvacuateTempRam ( ConvertPeiCorePpiPointers (Private, &PeiCoreFvHandle); + Hob.Raw = GetFirstGuidHob (&gEdkiiMigrationInfoGuid); + if (Hob.Raw != NULL) { + MigrationInfo = GET_GUID_HOB_DATA (Hob); + } else { + MigrationInfo = NULL; + } + for (FvIndex = 0; FvIndex < Private->FvCount; FvIndex++) { FvHeader = Private->Fv[FvIndex].FvHeader; ASSERT (FvHeader != NULL); @@ -1224,8 +1236,33 @@ EvacuateTempRam ( ) ) { + if ((MigrationInfo == NULL) || (MigrationInfo->MigrateAll == TRUE)) { + // + // Migrate all FVs and copy raw data + // + FvMigrationFlags = FLAGS_FV_RAW_DATA_COPY; + } else { + for (Index = 0; Index < MigrationInfo->ToMigrateFvCount; Index++) { + ToMigrateFvInfo = ((TO_MIGRATE_FV_INFO *)(MigrationInfo + 1)) + Index; + if (ToMigrateFvInfo->FvOrgBaseOnTempRam == (UINT32)(UINTN)FvHeader) { + // + // This FV is to migrate + // + FvMigrationFlags = ToMigrateFvInfo->FvMigrationFlags; + break; + } + } + + if (Index == MigrationInfo->ToMigrateFvCount) { + // + // This FV is not expected to migrate + // + continue; + } + } + // - // Allocate page to save the rebased PEIMs, the PEIMs will get dispatched later. + // Allocate pages to save the rebased PEIMs, the PEIMs will get dispatched later. // Status = PeiServicesAllocatePages ( EfiBootServicesCode, @@ -1234,18 +1271,7 @@ EvacuateTempRam ( ); ASSERT_EFI_ERROR (Status); MigratedFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHeaderAddress; - - // - // Allocate pool to save the raw PEIMs, which is used to keep consistent context across - // multiple boot and PCR0 will keep the same no matter if the address of allocated page is changed. - // - Status = PeiServicesAllocatePages ( - EfiBootServicesCode, - EFI_SIZE_TO_PAGES ((UINTN)FvHeader->FvLength), - &FvHeaderAddress - ); - ASSERT_EFI_ERROR (Status); - RawDataFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHeaderAddress; + CopyMem (MigratedFvHeader, FvHeader, (UINTN)FvHeader->FvLength); DEBUG (( DEBUG_VERBOSE, @@ -1256,17 +1282,33 @@ EvacuateTempRam ( )); // - // Copy the context to the rebased pages and raw pages, and create hob to save the - // information. The MigratedFvInfo HOB will never be produced when - // PcdMigrateTemporaryRamFirmwareVolumes is FALSE, because the PCD control the - // feature. + // Create hob to save MigratedFvInfo, this hob will only be produced when + // Migration feature PCD PcdMigrateTemporaryRamFirmwareVolumes is set to TRUE. // - CopyMem (MigratedFvHeader, FvHeader, (UINTN)FvHeader->FvLength); - CopyMem (RawDataFvHeader, MigratedFvHeader, (UINTN)FvHeader->FvLength); MigratedFvInfo.FvOrgBase = (UINT32)(UINTN)FvHeader; MigratedFvInfo.FvNewBase = (UINT32)(UINTN)MigratedFvHeader; - MigratedFvInfo.FvDataBase = (UINT32)(UINTN)RawDataFvHeader; + MigratedFvInfo.FvDataBase = 0; MigratedFvInfo.FvLength = (UINT32)(UINTN)FvHeader->FvLength; + + // + // When FLAGS_FV_RAW_DATA_COPY bit is set, copy the context to the raw pages and + // reset raw data base address in MigratedFvInfo hob. + // + if ((FvMigrationFlags & FLAGS_FV_RAW_DATA_COPY) == FLAGS_FV_RAW_DATA_COPY) { + // + // Allocate pages to save the raw PEIMs + // + Status = PeiServicesAllocatePages ( + EfiBootServicesCode, + EFI_SIZE_TO_PAGES ((UINTN)FvHeader->FvLength), + &FvHeaderAddress + ); + ASSERT_EFI_ERROR (Status); + RawDataFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHeaderAddress; + CopyMem (RawDataFvHeader, MigratedFvHeader, (UINTN)FvHeader->FvLength); + MigratedFvInfo.FvDataBase = (UINT32)(UINTN)RawDataFvHeader; + } + BuildGuidDataHob (&gEdkiiMigratedFvInfoGuid, &MigratedFvInfo, sizeof (MigratedFvInfo)); // @@ -1330,8 +1372,6 @@ EvacuateTempRam ( } } - RemoveFvHobsInTemporaryMemory (Private); - return Status; } diff --git a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c index 3b2e15699fc3..a30925da39ee 100644 --- a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c +++ b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c @@ -166,46 +166,6 @@ MigrateMemoryPages ( Private->FreePhysicalMemoryTop = NewMemPagesBase; } -/** - Removes any FV HOBs whose base address is not in PEI installed memory. - - @param[in] Private Pointer to PeiCore's private data structure. - -**/ -VOID -RemoveFvHobsInTemporaryMemory ( - IN PEI_CORE_INSTANCE *Private - ) -{ - EFI_PEI_HOB_POINTERS Hob; - EFI_HOB_FIRMWARE_VOLUME *FirmwareVolumeHob; - - DEBUG ((DEBUG_INFO, "Removing FVs in FV HOB not already migrated to permanent memory.\n")); - - for (Hob.Raw = GetHobList (); !END_OF_HOB_LIST (Hob); Hob.Raw = GET_NEXT_HOB (Hob)) { - if ((GET_HOB_TYPE (Hob) == EFI_HOB_TYPE_FV) || (GET_HOB_TYPE (Hob) == EFI_HOB_TYPE_FV2) || (GET_HOB_TYPE (Hob) == EFI_HOB_TYPE_FV3)) { - FirmwareVolumeHob = Hob.FirmwareVolume; - DEBUG ((DEBUG_INFO, " Found FV HOB.\n")); - DEBUG (( - DEBUG_INFO, - " BA=%016lx L=%016lx\n", - FirmwareVolumeHob->BaseAddress, - FirmwareVolumeHob->Length - )); - if ( - !( - ((EFI_PHYSICAL_ADDRESS)(UINTN)FirmwareVolumeHob->BaseAddress >= Private->PhysicalMemoryBegin) && - (((EFI_PHYSICAL_ADDRESS)(UINTN)FirmwareVolumeHob->BaseAddress + (FirmwareVolumeHob->Length - 1)) < Private->FreePhysicalMemoryTop) - ) - ) - { - DEBUG ((DEBUG_INFO, " Removing FV HOB to an FV in T-RAM (was not migrated).\n")); - Hob.Header->HobType = EFI_HOB_TYPE_UNUSED; - } - } - } -} - /** Migrate the base address in firmware volume allocation HOBs from temporary memory to PEI installed memory. diff --git a/MdeModulePkg/Core/Pei/PeiMain.h b/MdeModulePkg/Core/Pei/PeiMain.h index 556beddad533..46b6c23014a3 100644 --- a/MdeModulePkg/Core/Pei/PeiMain.h +++ b/MdeModulePkg/Core/Pei/PeiMain.h @@ -1046,17 +1046,6 @@ MigrateMemoryPages ( IN BOOLEAN TemporaryRamMigrated ); -/** - Removes any FV HOBs whose base address is not in PEI installed memory. - - @param[in] Private Pointer to PeiCore's private data structure. - -**/ -VOID -RemoveFvHobsInTemporaryMemory ( - IN PEI_CORE_INSTANCE *Private - ); - /** Migrate the base address in firmware volume allocation HOBs from temporary memory to PEI installed memory. diff --git a/MdeModulePkg/Core/Pei/PeiMain.inf b/MdeModulePkg/Core/Pei/PeiMain.inf index 0cf357371a16..893bdc052798 100644 --- a/MdeModulePkg/Core/Pei/PeiMain.inf +++ b/MdeModulePkg/Core/Pei/PeiMain.inf @@ -78,6 +78,7 @@ gEfiFirmwareFileSystem3Guid gStatusCodeCallbackGuid gEdkiiMigratedFvInfoGuid ## SOMETIMES_PRODUCES ## HOB + gEdkiiMigrationInfoGuid ## SOMETIMES_CONSUMES ## HOB [Ppis] gEfiPeiStatusCodePpiGuid ## SOMETIMES_CONSUMES # PeiReportStatusService is not ready if this PPI doesn't exist diff --git a/MdeModulePkg/Include/Guid/MigratedFvInfo.h b/MdeModulePkg/Include/Guid/MigratedFvInfo.h index aca2332a0ec6..1c8b0dfefc49 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__ #define __EDKII_MIGRATED_FV_INFO_GUID_H__ +// +// FLAGS_FV_RAW_DATA_COPY indicates FV raw data will be copied to permanent memory +// or not. When FV is migrated to permanent memory, it will be rebased and raw +// data will be lost. This bit can be configured as below values: +// 0: FV raw data will not be used in later phase, and the copy will be skipped to +// optimize boot performance. +// 1: FV raw data will be copied to permanent memory for later phase use (such as +// FV measurement). +// +#define FLAGS_FV_RAW_DATA_COPY BIT0 + +/// +/// In real use cases, not all FVs need migrate to permanent memory before TempRam tears +/// down. EDKII_MIGRATION_INFO hob should be published by platform to indicate which +/// FVs need migration to optimize boot performance. If this hob is not detected by Pei +/// Core, all FVs on TempRam will be migrated and FV raw data will also be copied. +/// Only one EDKII_MIGRATION_INFO hob should be published by platform, and this hob will +/// take effect only when migration feature is enabled by PCD. +/// +typedef struct { + UINT32 FvOrgBaseOnTempRam; // Original FV address on Temporary Ram + // + // FV Migration Flags: + // Bit0: Indicate to copy FV raw data or not + // Others: Reserved bits + // + UINT32 FvMigrationFlags; +} TO_MIGRATE_FV_INFO; + +typedef struct { + BOOLEAN MigrateAll; // Migrate all FVs and also copy FV raw data + // + // ToMigrateFvCount and ToMigrateFvInfo array indicate which FVs need be migrated, and + // these info should be ignored when MigrateAll field is set to TRUE. + // + UINT32 ToMigrateFvCount; + // TO_MIGRATE_FV_INFO ToMigrateFvInfo[]; +} EDKII_MIGRATION_INFO; + typedef struct { UINT32 FvOrgBase; // original FV address UINT32 FvNewBase; // new FV address - UINT32 FvDataBase; // original FV data + UINT32 FvDataBase; // original FV data, 0 means raw data is not copied UINT32 FvLength; // Fv Length } EDKII_MIGRATED_FV_INFO; +extern EFI_GUID gEdkiiMigrationInfoGuid; extern EFI_GUID gEdkiiMigratedFvInfoGuid; #endif // #ifndef __EDKII_MIGRATED_FV_INFO_GUID_H__ diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 1a162e97e6fb..a2cd83345f5b 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -421,7 +421,8 @@ gEdkiiCapsuleOnDiskNameGuid = { 0x98c80a4f, 0xe16b, 0x4d11, { 0x93, 0x9a, 0xab, 0xe5, 0x61, 0x26, 0x3, 0x30 } } ## Include/Guid/MigratedFvInfo.h - gEdkiiMigratedFvInfoGuid = { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0xf4, 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } } + gEdkiiMigrationInfoGuid = { 0xb4b140a5, 0x72f6, 0x4c21, { 0x93, 0xe4, 0xac, 0xc4, 0xec, 0xcb, 0x23, 0x23 } } + gEdkiiMigratedFvInfoGuid = { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0xf4, 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } } ## Include/Guid/RngAlgorithm.h gEdkiiRngAlgorithmUnSafe = { 0x869f728c, 0x409d, 0x4ab4, {0xac, 0x03, 0x71, 0xd3, 0x09, 0xc1, 0xb3, 0xf4 }} -- 2.29.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112531): https://edk2.groups.io/g/devel/message/112531 Mute This Topic: https://groups.io/mt/103169823/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [edk2-devel] [PATCH v5 2/2] SecurityPkg: Support customized FV Migration Information 2023-12-14 13:53 [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 1/2] MdeModulePkg: " Wang Fan @ 2023-12-14 13:53 ` Wang Fan 1 sibling, 0 replies; 6+ messages in thread From: Wang Fan @ 2023-12-14 13:53 UTC (permalink / raw) To: devel; +Cc: Fan Wang, Liming Gao, Rahul Kumar, Jian J Wang REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4533 In Tcg driver, when MigratedFvInfo hob is detected, existing code logic is assuming FV raw data is already copied, and raw data base address is also recorded. Due to the new PeiCore change, the platform can publish hob to indicate raw data need be copied or not along with FV migration. Two cases need be considered to skip copy for boot performance: The first case is FV is not expected to be measured in post-mem phase, we should use MeasurementExcludedPpiGuid to skip measurement. The second case is FV raw data has no need to do rebase operation after migration, then measurement should calculate hash directly from FV base address. Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Signed-off-by: Fan Wang <fan.wang@intel.com> --- SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c | 7 +++++-- SecurityPkg/Tcg/TcgPei/TcgPei.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c index 1caaa4e319bc..daaf49e644b2 100644 --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c @@ -726,8 +726,11 @@ MeasureFvImage ( // // Found the migrated FV info // - FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; - FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; + FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; + if (MigratedFvInfo->FvDataBase != 0) { + FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; + } + break; } diff --git a/SecurityPkg/Tcg/TcgPei/TcgPei.c b/SecurityPkg/Tcg/TcgPei/TcgPei.c index 5aa80511aa81..d35c2ad0bc55 100644 --- a/SecurityPkg/Tcg/TcgPei/TcgPei.c +++ b/SecurityPkg/Tcg/TcgPei/TcgPei.c @@ -463,8 +463,11 @@ MeasureFvImage ( // // Found the migrated FV info // - FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; - FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; + FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase; + if (MigratedFvInfo->FvDataBase != 0) { + FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase; + } + break; } -- 2.29.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112532): https://edk2.groups.io/g/devel/message/112532 Mute This Topic: https://groups.io/mt/103169824/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <17A0B71F68A6EB8F.11381@groups.io>]
* Re: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information [not found] <17A0B71F68A6EB8F.11381@groups.io> @ 2023-12-14 14:15 ` Wang Fan 2023-12-19 6:27 ` 回复: " gaoliming via groups.io 0 siblings, 1 reply; 6+ messages in thread From: Wang Fan @ 2023-12-14 14:15 UTC (permalink / raw) To: Gao, Liming, Kumar, Rahul R Cc: Wang, Fan, Wang, Jian J, Ni, Ray, Kinney, Michael D, Jiang, Guomin, devel@edk2.groups.io Hi Liming and Kumar Could you help review this v5 patch: MdeModulePkg: Support customized FV Migration Information: https://github.com/fanwang2intel/edk2/commit/83c55a73107bfb13df1d8b522e0ea1d18ef3d86b SecurityPkg: Support customized FV Migration Information https://github.com/fanwang2intel/edk2/commit/6f7e955f1d63a875f69ebc084885e76610acc722 v5: - Remove RemoveFvHobsInTemporaryMemory() since no consumer will call this API now. - Separate patches to different packages. Best Regards Fan -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wang Fan Sent: Thursday, December 14, 2023 9:53 PM To: devel@edk2.groups.io Cc: Wang, Fan <fan.wang@intel.com> Subject: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information 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. 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. In Tcg driver, when MigratedFvInfo hob is detected, existing code logic is assuming FV raw data is already copied, and raw data base address is also recorded. Due to the new PeiCore change, the platform can publish hob to indicate raw data need be copied or not along with FV migration. Two cases need be considered to skip copy for boot performance: The first case is FV is not expected to be measured in post-mem phase, we should use MeasurementExcludedPpiGuid to skip measurement. The second case is FV raw data has no need to do rebase operation after migration, then measurement should calculate hash directly from FV base address. Fan Wang (2): MdeModulePkg: Support customized FV Migration Information SecurityPkg: Support customized FV Migration Information MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 ++++++++++++++----- MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- MdeModulePkg/Core/Pei/PeiMain.h | 11 --- 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 +- 8 files changed, 116 insertions(+), 79 deletions(-) -- 2.29.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112536): https://edk2.groups.io/g/devel/message/112536 Mute This Topic: https://groups.io/mt/103169821/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* 回复: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information 2023-12-14 14:15 ` [edk2-devel] [PATCH v5 0/2] " Wang Fan @ 2023-12-19 6:27 ` gaoliming via groups.io 2023-12-20 8:16 ` Ni, Ray 0 siblings, 1 reply; 6+ messages in thread From: gaoliming via groups.io @ 2023-12-19 6:27 UTC (permalink / raw) To: 'Wang, Fan', 'Kumar, Rahul R' Cc: 'Wang, Jian J', 'Ni, Ray', 'Kinney, Michael D', 'Jiang, Guomin', devel Fan: This version patch is good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> for this patch set. Thanks Liming > -----邮件原件----- > 发件人: Wang, Fan <fan.wang@intel.com> > 发送时间: 2023年12月14日 22:15 > 收件人: Gao, Liming <gaoliming@byosoft.com.cn>; Kumar, Rahul R > <rahul.r.kumar@intel.com> > 抄送: Wang, Fan <fan.wang@intel.com>; Wang, Jian J > <jian.j.wang@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, Michael D > <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>; > devel@edk2.groups.io > 主题: RE: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > Information > > Hi Liming and Kumar > > Could you help review this v5 patch: > > MdeModulePkg: Support customized FV Migration Information: > https://github.com/fanwang2intel/edk2/commit/83c55a73107bfb13df1d8b5 > 22e0ea1d18ef3d86b > > SecurityPkg: Support customized FV Migration Information > https://github.com/fanwang2intel/edk2/commit/6f7e955f1d63a875f69ebc08 > 4885e76610acc722 > > v5: > - Remove RemoveFvHobsInTemporaryMemory() since no consumer will call > this API now. > - Separate patches to different packages. > > Best Regards > Fan > > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wang Fan > Sent: Thursday, December 14, 2023 9:53 PM > To: devel@edk2.groups.io > Cc: Wang, Fan <fan.wang@intel.com> > Subject: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > Information > > 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. > > 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. > > In Tcg driver, when MigratedFvInfo hob is detected, existing code logic is > assuming FV raw data is already copied, and raw data base address is also > recorded. Due to the new PeiCore change, the platform can publish hob to > indicate raw data need be copied or not along with FV migration. > > Two cases need be considered to skip copy for boot performance: The first > case is FV is not expected to be measured in post-mem phase, we should use > MeasurementExcludedPpiGuid to skip measurement. The second case is FV > raw data has no need to do rebase operation after migration, then > measurement should calculate hash directly from FV base address. > > Fan Wang (2): > MdeModulePkg: Support customized FV Migration Information > SecurityPkg: Support customized FV Migration Information > > MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 > ++++++++++++++----- > MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- > MdeModulePkg/Core/Pei/PeiMain.h | 11 --- > 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 +- > 8 files changed, 116 insertions(+), 79 deletions(-) > > -- > 2.29.2.windows.2 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112693): https://edk2.groups.io/g/devel/message/112693 Mute This Topic: https://groups.io/mt/103258717/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information 2023-12-19 6:27 ` 回复: " gaoliming via groups.io @ 2023-12-20 8:16 ` Ni, Ray 2023-12-21 7:37 ` Wang Fan 0 siblings, 1 reply; 6+ messages in thread From: Ni, Ray @ 2023-12-20 8:16 UTC (permalink / raw) To: Gao, Liming, Wang, Fan, Kumar, Rahul R Cc: Wang, Jian J, Kinney, Michael D, Jiang, Guomin, devel@edk2.groups.io Reviewed-by: Ray Ni <ray.ni@intel.com> Thanks, Ray > -----Original Message----- > From: gaoliming <gaoliming@byosoft.com.cn> > Sent: Tuesday, December 19, 2023 2:28 PM > To: Wang, Fan <fan.wang@intel.com>; Kumar, Rahul R > <rahul.r.kumar@intel.com> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, > Michael D <michael.d.kinney@intel.com>; Jiang, Guomin > <guomin.jiang@intel.com>; devel@edk2.groups.io > Subject: 回复: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > Information > > Fan: > This version patch is good to me. Reviewed-by: Liming Gao > <gaoliming@byosoft.com.cn> for this patch set. > > Thanks > Liming > > -----邮件原件----- > > 发件人: Wang, Fan <fan.wang@intel.com> > > 发送时间: 2023年12月14日 22:15 > > 收件人: Gao, Liming <gaoliming@byosoft.com.cn>; Kumar, Rahul R > > <rahul.r.kumar@intel.com> > > 抄送: Wang, Fan <fan.wang@intel.com>; Wang, Jian J > > <jian.j.wang@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, Michael D > > <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>; > > devel@edk2.groups.io > > 主题: RE: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > > Information > > > > Hi Liming and Kumar > > > > Could you help review this v5 patch: > > > > MdeModulePkg: Support customized FV Migration Information: > > > https://github.com/fanwang2intel/edk2/commit/83c55a73107bfb13df1d8b5 > > 22e0ea1d18ef3d86b > > > > SecurityPkg: Support customized FV Migration Information > > > https://github.com/fanwang2intel/edk2/commit/6f7e955f1d63a875f69ebc08 > > 4885e76610acc722 > > > > v5: > > - Remove RemoveFvHobsInTemporaryMemory() since no consumer will call > > this API now. > > - Separate patches to different packages. > > > > Best Regards > > Fan > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wang > Fan > > Sent: Thursday, December 14, 2023 9:53 PM > > To: devel@edk2.groups.io > > Cc: Wang, Fan <fan.wang@intel.com> > > Subject: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > > Information > > > > 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. > > > > 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. > > > > In Tcg driver, when MigratedFvInfo hob is detected, existing code logic is > > assuming FV raw data is already copied, and raw data base address is also > > recorded. Due to the new PeiCore change, the platform can publish hob to > > indicate raw data need be copied or not along with FV migration. > > > > Two cases need be considered to skip copy for boot performance: The first > > case is FV is not expected to be measured in post-mem phase, we should > use > > MeasurementExcludedPpiGuid to skip measurement. The second case is FV > > raw data has no need to do rebase operation after migration, then > > measurement should calculate hash directly from FV base address. > > > > Fan Wang (2): > > MdeModulePkg: Support customized FV Migration Information > > SecurityPkg: Support customized FV Migration Information > > > > MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 > > ++++++++++++++----- > > MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- > > MdeModulePkg/Core/Pei/PeiMain.h | 11 --- > > 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 +- > > 8 files changed, 116 insertions(+), 79 deletions(-) > > > > -- > > 2.29.2.windows.2 > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112751): https://edk2.groups.io/g/devel/message/112751 Mute This Topic: https://groups.io/mt/103277888/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information 2023-12-20 8:16 ` Ni, Ray @ 2023-12-21 7:37 ` Wang Fan 0 siblings, 0 replies; 6+ messages in thread From: Wang Fan @ 2023-12-21 7:37 UTC (permalink / raw) To: Ni, Ray, Gao, Liming, Kumar, Rahul R Cc: Wang, Jian J, Kinney, Michael D, Jiang, Guomin, devel@edk2.groups.io Hi Liming The V5 patches have past test. Could you help merge these two patches? Or I need find Rahul to merge the one in SecurityPkg? https://github.com/tianocore/edk2/pull/5180 https://github.com/tianocore/edk2/pull/5181 They are totally independent and merge MdeModulePkg patch only will not impact any existing code. Best Regards Fan -----Original Message----- From: Ni, Ray <ray.ni@intel.com> Sent: Wednesday, December 20, 2023 4:16 PM To: Gao, Liming <gaoliming@byosoft.com.cn>; Wang, Fan <fan.wang@intel.com>; Kumar, Rahul R <rahul.r.kumar@intel.com> Cc: Wang, Jian J <jian.j.wang@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io Subject: RE: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information Reviewed-by: Ray Ni <ray.ni@intel.com> Thanks, Ray > -----Original Message----- > From: gaoliming <gaoliming@byosoft.com.cn> > Sent: Tuesday, December 19, 2023 2:28 PM > To: Wang, Fan <fan.wang@intel.com>; Kumar, Rahul R > <rahul.r.kumar@intel.com> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Ni, Ray <ray.ni@intel.com>; > Kinney, Michael D <michael.d.kinney@intel.com>; Jiang, Guomin > <guomin.jiang@intel.com>; devel@edk2.groups.io > Subject: 回复: [edk2-devel] [PATCH v5 0/2] Support customized FV > Migration Information > > Fan: > This version patch is good to me. Reviewed-by: Liming Gao > <gaoliming@byosoft.com.cn> for this patch set. > > Thanks > Liming > > -----邮件原件----- > > 发件人: Wang, Fan <fan.wang@intel.com> > > 发送时间: 2023年12月14日 22:15 > > 收件人: Gao, Liming <gaoliming@byosoft.com.cn>; Kumar, Rahul R > > <rahul.r.kumar@intel.com> > > 抄送: Wang, Fan <fan.wang@intel.com>; Wang, Jian J > > <jian.j.wang@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, Michael > > D <michael.d.kinney@intel.com>; Jiang, Guomin > > <guomin.jiang@intel.com>; devel@edk2.groups.io > > 主题: RE: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > > Information > > > > Hi Liming and Kumar > > > > Could you help review this v5 patch: > > > > MdeModulePkg: Support customized FV Migration Information: > > > https://github.com/fanwang2intel/edk2/commit/83c55a73107bfb13df1d8b5 > > 22e0ea1d18ef3d86b > > > > SecurityPkg: Support customized FV Migration Information > > > https://github.com/fanwang2intel/edk2/commit/6f7e955f1d63a875f69ebc08 > > 4885e76610acc722 > > > > v5: > > - Remove RemoveFvHobsInTemporaryMemory() since no consumer will call > > this API now. > > - Separate patches to different packages. > > > > Best Regards > > Fan > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wang > Fan > > Sent: Thursday, December 14, 2023 9:53 PM > > To: devel@edk2.groups.io > > Cc: Wang, Fan <fan.wang@intel.com> > > Subject: [edk2-devel] [PATCH v5 0/2] Support customized FV Migration > > Information > > > > 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. > > > > 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. > > > > In Tcg driver, when MigratedFvInfo hob is detected, existing code > > logic is assuming FV raw data is already copied, and raw data base > > address is also recorded. Due to the new PeiCore change, the > > platform can publish hob to indicate raw data need be copied or not along with FV migration. > > > > Two cases need be considered to skip copy for boot performance: The > > first case is FV is not expected to be measured in post-mem phase, > > we should > use > > MeasurementExcludedPpiGuid to skip measurement. The second case is > > FV raw data has no need to do rebase operation after migration, then > > measurement should calculate hash directly from FV base address. > > > > Fan Wang (2): > > MdeModulePkg: Support customized FV Migration Information > > SecurityPkg: Support customized FV Migration Information > > > > MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 84 > > ++++++++++++++----- > > MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 40 --------- > > MdeModulePkg/Core/Pei/PeiMain.h | 11 --- > > 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 +- > > 8 files changed, 116 insertions(+), 79 deletions(-) > > > > -- > > 2.29.2.windows.2 > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112804): https://edk2.groups.io/g/devel/message/112804 Mute This Topic: https://groups.io/mt/103277888/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-12-21 7:38 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-14 13:53 [edk2-devel] [PATCH v5 0/2] Support customized FV Migration Information Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 1/2] MdeModulePkg: " Wang Fan 2023-12-14 13:53 ` [edk2-devel] [PATCH v5 2/2] SecurityPkg: " Wang Fan [not found] <17A0B71F68A6EB8F.11381@groups.io> 2023-12-14 14:15 ` [edk2-devel] [PATCH v5 0/2] " Wang Fan 2023-12-19 6:27 ` 回复: " gaoliming via groups.io 2023-12-20 8:16 ` Ni, Ray 2023-12-21 7:37 ` Wang Fan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox