Преглед изворни кода

AmpereAltraPkg: Update Memory Type Information hob

The hob was built but wasn't consumed yet. This change will let the DXE
Main shift the memory space consumed by DXE modules to the region
specified by the PcdSystemMemoryBase and PcdSystemMemorySize.

Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Vu Nguyen пре 1 година
родитељ
комит
d8f4a1f4f1

+ 8 - 8
Silicon/Ampere/AmpereAltraPkg/AmpereAltraPkg.dsc.inc

@@ -371,14 +371,14 @@
   # (the memory used, and the free memory that was prereserved
   # but not used).
   #
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|80
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|65
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|400
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|20000
-  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|20
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0x10
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0x60
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0x30
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|0x20
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|0x30
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|0
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|0
+  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|0
   gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData|0
 
   gArmTokenSpaceGuid.PcdVFPEnabled|1

+ 10 - 0
Silicon/Ampere/AmpereAltraPkg/Library/MemoryInitPeiLib/MemoryInitPeiLib.c

@@ -15,6 +15,11 @@
 #include <Library/MemoryAllocationLib.h>
 #include <Library/PcdLib.h>
 
+VOID
+BuildMemoryTypeInformationHob (
+  VOID
+  );
+
 STATIC
 VOID
 InitMmu (
@@ -89,5 +94,10 @@ MemoryPeim (
 
   InitMmu (MemoryTable);
 
+  if (FeaturePcdGet (PcdPrePiProduceMemoryTypeInformationHob)) {
+    // Optional feature that helps prevent EFI memory map fragmentation.
+    BuildMemoryTypeInformationHob ();
+  }
+
   return EFI_SUCCESS;
 }