While creating Hob list, ArmPlatformPkg is hiding UEFI memory.
whereas this memory can be used by OS.

This patch, allows OS to use UEFI code area.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Udit Kumar <[email protected]>
Signed-off-by: Meenakshi Aggarwal <[email protected]>
---
 ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c | 69 -------------------------
 1 file changed, 69 deletions(-)

diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c 
b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
index 2feb11f..d03214b 100644
--- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
+++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
@@ -70,11 +70,7 @@ MemoryPeim (
 {
   ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable;
   EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttributes;
-  UINT64                       ResourceLength;
   EFI_PEI_HOB_POINTERS         NextHob;
-  EFI_PHYSICAL_ADDRESS         FdTop;
-  EFI_PHYSICAL_ADDRESS         SystemMemoryTop;
-  EFI_PHYSICAL_ADDRESS         ResourceTop;
   BOOLEAN                      Found;
 
   // Get Virtual Memory Map from the Platform Library
@@ -121,71 +117,6 @@ MemoryPeim (
     );
   }
 
-  //
-  // Reserved the memory space occupied by the firmware volume
-  //
-
-  SystemMemoryTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdSystemMemoryBase) + 
(EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdSystemMemorySize);
-  FdTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdFdBaseAddress) + 
(EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFdSize);
-
-  // EDK2 does not have the concept of boot firmware copied into DRAM. To 
avoid the DXE
-  // core to overwrite this area we must mark the region with the attribute 
non-present
-  if ((PcdGet64 (PcdFdBaseAddress) >= PcdGet64 (PcdSystemMemoryBase)) && 
(FdTop <= SystemMemoryTop)) {
-    Found = FALSE;
-
-    // Search for System Memory Hob that contains the firmware
-    NextHob.Raw = GetHobList ();
-    while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, 
NextHob.Raw)) != NULL) {
-      if ((NextHob.ResourceDescriptor->ResourceType == 
EFI_RESOURCE_SYSTEM_MEMORY) &&
-          (PcdGet64 (PcdFdBaseAddress) >= 
NextHob.ResourceDescriptor->PhysicalStart) &&
-          (FdTop <= NextHob.ResourceDescriptor->PhysicalStart + 
NextHob.ResourceDescriptor->ResourceLength))
-      {
-        ResourceAttributes = NextHob.ResourceDescriptor->ResourceAttribute;
-        ResourceLength = NextHob.ResourceDescriptor->ResourceLength;
-        ResourceTop = NextHob.ResourceDescriptor->PhysicalStart + 
ResourceLength;
-
-        if (PcdGet64 (PcdFdBaseAddress) == 
NextHob.ResourceDescriptor->PhysicalStart) {
-          if (SystemMemoryTop == FdTop) {
-            NextHob.ResourceDescriptor->ResourceAttribute = ResourceAttributes 
& ~EFI_RESOURCE_ATTRIBUTE_PRESENT;
-          } else {
-            // Create the System Memory HOB for the firmware with the 
non-present attribute
-            BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY,
-                                        ResourceAttributes & 
~EFI_RESOURCE_ATTRIBUTE_PRESENT,
-                                        PcdGet64 (PcdFdBaseAddress),
-                                        PcdGet32 (PcdFdSize));
-
-            // Top of the FD is system memory available for UEFI
-            NextHob.ResourceDescriptor->PhysicalStart += PcdGet32(PcdFdSize);
-            NextHob.ResourceDescriptor->ResourceLength -= PcdGet32(PcdFdSize);
-          }
-        } else {
-          // Create the System Memory HOB for the firmware with the 
non-present attribute
-          BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY,
-                                      ResourceAttributes & 
~EFI_RESOURCE_ATTRIBUTE_PRESENT,
-                                      PcdGet64 (PcdFdBaseAddress),
-                                      PcdGet32 (PcdFdSize));
-
-          // Update the HOB
-          NextHob.ResourceDescriptor->ResourceLength = PcdGet64 
(PcdFdBaseAddress) - NextHob.ResourceDescriptor->PhysicalStart;
-
-          // If there is some memory available on the top of the FD then 
create a HOB
-          if (FdTop < NextHob.ResourceDescriptor->PhysicalStart + 
ResourceLength) {
-            // Create the System Memory HOB for the remaining region (top of 
the FD)
-            BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY,
-                                        ResourceAttributes,
-                                        FdTop,
-                                        ResourceTop - FdTop);
-          }
-        }
-        Found = TRUE;
-        break;
-      }
-      NextHob.Raw = GET_NEXT_HOB (NextHob);
-    }
-
-    ASSERT(Found);
-  }
-
   // Build Memory Allocation Hob
   InitMmu (MemoryTable);
 
-- 
1.9.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to