summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Include/Guid/MigratedFvInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg/Include/Guid/MigratedFvInfo.h')
-rw-r--r--MdeModulePkg/Include/Guid/MigratedFvInfo.h42
1 files changed, 41 insertions, 1 deletions
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__
#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__