audk/MdeModulePkg/Include/Guid/MigratedFvInfo.h
Zhihao Li 176b9d41f8 MdeModulePkg/Core/Pei: Install MigrateTempRamPpi
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4716

Migrate FSP-T/M binary from temporary RAM to permanent RAM before NEM
tear down. Tcg module will use permanent address of FSP-T/M for
measurement. In MdeModulePkg, PeiCore installs mMigrateTempRamPpi if
PcdMigrateTemporaryRamFirmwareVolumes is True before NEM tear down and
after permanent memory ready.

Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Duggapu Chinni B <chinni.b.duggapu@intel.com>
Cc: Chen Gang C <gang.c.chen@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Zhihao Li <zhihao.li@intel.com>
2024-06-18 07:23:19 +00:00

62 lines
2.3 KiB
C

/** @file
Migrated FV information
Copyright (c) 2020 - 2024, Intel Corporation. All rights reserved.<BR>
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, 0 means rebased data is not copied
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__