]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Mem/Page.c
MdeModulePkg/CoreDxe: Allow DXE Drivers to use untested memory
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Mem / Page.c
index 47d4c5d92e1586b3449d5fd57df9d4ab83024e1c..cc0b90ac0df53e35b2c58db57e55c4a51cb65c1c 100644 (file)
@@ -1417,6 +1417,20 @@ CoreInternalAllocatePages (
     Status = CoreConvertPages (Start, NumberOfPages, MemoryType);\r
   }\r
 \r
+  if (EFI_ERROR (Status)) {\r
+    //\r
+    // If requested memory region is unavailable it may be untested memory\r
+    // Attempt to promote memory resources, then re-attempt the allocation\r
+    //\r
+    if (PromoteMemoryResource ()) {\r
+      if (NeedGuard) {\r
+        Status = CoreConvertPagesWithGuard (Start, NumberOfPages, MemoryType);\r
+      } else {\r
+        Status = CoreConvertPages (Start, NumberOfPages, MemoryType);\r
+      }\r
+    }\r
+  }\r
+\r
 Done:\r
   CoreReleaseMemoryLock ();\r
 \r