From 533417cee95d33c74030a182247d415f3b2677ba Mon Sep 17 00:00:00 2001 From: Aaron Pop Date: Mon, 27 Jul 2026 10:56:44 -0700 Subject: [PATCH] StandaloneMmPkg: Enforce HOB producer/consumer responsibilities StandaloneMmCore is a HOB consumer. The MM HOB list is produced by StandaloneMmIpl and platform HOB producer logic before MM Core runs. Remove MigrateMemoryAllocationHobs() and its call from InitializeMmHobList(). That helper copied named EfiBootServicesData allocations into MMRAM and then rewrote the producer-created EFI_HOB_MEMORY_ALLOCATION records (MemoryBaseAddress/MemoryType). Rewriting those HOBs in the consumer violates the producer/consumer contract, masks producer-side modeling issues, and can leave the HOB description inconsistent with the originally declared memory map. Signed-off-by: Aaron Pop --- StandaloneMmPkg/Core/StandaloneMmCore.c | 56 ------------------------- 1 file changed, 56 deletions(-) diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.c b/StandaloneMmPkg/Core/StandaloneMmCore.c index b1a5de2c73..5798f5193d 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.c +++ b/StandaloneMmPkg/Core/StandaloneMmCore.c @@ -687,60 +687,6 @@ MmConfigurationMmNotify ( return EFI_SUCCESS; } -/** - Migrate MemoryBaseAddress in memory allocation HOBs with BootServiceData - type and non-zero GUID name from Boot Service memory to MMRAM. - - @param[in] HobStart Pointer to the start of the HOB list. - -**/ -VOID -MigrateMemoryAllocationHobs ( - IN VOID *HobStart - ) -{ - EFI_PEI_HOB_POINTERS Hob; - EFI_HOB_MEMORY_ALLOCATION *MemoryAllocationHob; - VOID *MemoryInMmram; - - MemoryAllocationHob = NULL; - Hob.Raw = GetNextHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, HobStart); - while (Hob.Raw != NULL) { - MemoryAllocationHob = (EFI_HOB_MEMORY_ALLOCATION *)Hob.Raw; - if (MemoryAllocationHob->AllocDescriptor.MemoryType == EfiBootServicesData) { - if (!IsZeroGuid (&MemoryAllocationHob->AllocDescriptor.Name)) { - MemoryInMmram = AllocatePages (EFI_SIZE_TO_PAGES (MemoryAllocationHob->AllocDescriptor.MemoryLength)); - if (MemoryInMmram != NULL) { - DEBUG (( - DEBUG_INFO, - "Migrate Memory Allocation Hob (%g) from %08x to %08p\n", - &MemoryAllocationHob->AllocDescriptor.Name, - MemoryAllocationHob->AllocDescriptor.MemoryBaseAddress, - MemoryInMmram - )); - CopyMem ( - MemoryInMmram, - (VOID *)(UINTN)MemoryAllocationHob->AllocDescriptor.MemoryBaseAddress, - MemoryAllocationHob->AllocDescriptor.MemoryLength - ); - MemoryAllocationHob->AllocDescriptor.MemoryBaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)MemoryInMmram; - MemoryAllocationHob->AllocDescriptor.MemoryType = EfiRuntimeServicesData; - } - } else { - DEBUG (( - DEBUG_ERROR, - "Error - Memory Allocation Hob [%08x, %08x] doesn't have a GUID name specified\n", - MemoryAllocationHob->AllocDescriptor.MemoryBaseAddress, - MemoryAllocationHob->AllocDescriptor.MemoryLength - )); - } - } - - Hob.Raw = GET_NEXT_HOB (Hob); - Hob.Raw = GetNextHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, Hob.Raw); - } -} - /** This function is responsible for validating the input HOB list and initializing a new HOB list in MMRAM based on the input HOB list. @@ -813,8 +759,6 @@ InitializeMmHobList ( Status = MmInstallConfigurationTable (&gMmCoreMmst, &gEfiHobListGuid, MmHobStart, HobSize); ASSERT_EFI_ERROR (Status); - MigrateMemoryAllocationHobs (MmHobStart); - return MmHobStart; }