MdeModulePkg/PeiCore: Accept MemoryDiscoveredPpi from SecCore

PeiCore assumes that it runs initially from the temporary memory
and switches to physical memory after PS::InstallPeiMemory() reports
the physical memory range for PEI.
This change enables PeiCore to run initially from the physical
memory when MemoryDiscoveredPpi is passed from SEC.

Signed-off-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
Ray Ni 2025-08-27 08:45:13 +08:00 committed by mergify[bot]
parent 0fe6b755f2
commit fc13220238

View file

@ -1038,6 +1038,7 @@ ProcessPpiListFromSec (
EFI_STATUS Status;
EFI_SEC_HOB_DATA_PPI *SecHobDataPpi;
EFI_HOB_GENERIC_HEADER *SecHobList;
PEI_CORE_INSTANCE *PrivateData;
for ( ; ;) {
if ((PpiList->Flags & EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES) != 0) {
@ -1052,6 +1053,15 @@ ProcessPpiListFromSec (
//
Status = InternalPeiInstallPpi (PeiServices, PpiList, TRUE);
ASSERT_EFI_ERROR (Status);
//
// Set the PeiMemoryInstalled flag if SEC passed MemoryDiscoveredPpi, so the PEI runs in
// physical memory.
//
if (CompareGuid (PpiList->Guid, &gEfiPeiMemoryDiscoveredPpiGuid)) {
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);
PrivateData->PeiMemoryInstalled = TRUE;
}
}
if ((PpiList->Flags & EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) == EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) {