// PEI Core and PEIMs to get high performance.\r
//\r
OldCoreData->ShadowedPeiCore = (PEICORE_FUNCTION_POINTER) (UINTN) PeiCore;\r
- if ((HandoffInformationTable->BootMode == BOOT_ON_S3_RESUME && PcdGetBool (PcdShadowPeimOnS3Boot))\r
- || (HandoffInformationTable->BootMode != BOOT_ON_S3_RESUME && PcdGetBool (PcdShadowPeimOnBoot))) {\r
+ if (PcdGetBool (PcdMigrateTemporaryRamFirmwareVolumes) ||\r
+ (HandoffInformationTable->BootMode == BOOT_ON_S3_RESUME && PcdGetBool (PcdShadowPeimOnS3Boot)) ||\r
+ (HandoffInformationTable->BootMode != BOOT_ON_S3_RESUME && PcdGetBool (PcdShadowPeimOnBoot))) {\r
OldCoreData->ShadowedPeiCore = ShadowPeiCore (OldCoreData);\r
}\r
\r
ProcessPpiListFromSec ((CONST EFI_PEI_SERVICES **) &PrivateData.Ps, PpiList);\r
}\r
} else {\r
+ if (PcdGetBool (PcdMigrateTemporaryRamFirmwareVolumes)) {\r
+ //\r
+ // When PcdMigrateTemporaryRamFirmwareVolumes is TRUE, alway shadow all\r
+ // PEIMs no matter the condition of PcdShadowPeimOnBoot and PcdShadowPeimOnS3Boot\r
+ //\r
+ DEBUG ((DEBUG_VERBOSE, "PPI lists before temporary RAM evacuation:\n"));\r
+ DumpPpiList (&PrivateData);\r
+\r
+ //\r
+ // Migrate installed content from Temporary RAM to Permanent RAM\r
+ //\r
+ EvacuateTempRam (&PrivateData, SecCoreData);\r
+\r
+ DEBUG ((DEBUG_VERBOSE, "PPI lists after temporary RAM evacuation:\n"));\r
+ DumpPpiList (&PrivateData);\r
+ }\r
+\r
//\r
// Try to locate Temporary RAM Done Ppi.\r
//\r