From 494f333aba024cf8e695fda78594e5cac210c7a3 Mon Sep 17 00:00:00 2001 From: Stacy Howell Date: Sat, 8 Jan 2022 03:36:12 +0800 Subject: [PATCH] MdeModulePkg/CoreDxe: Allow DXE Drivers to use untested memory REF: https://https://bugzilla.tianocore.org/show_bug.cgi?id=3795 Cc: Dandan Bi Cc: Liming Gao Updated CoreInternalAllocatePages() to call PromoteMemoryResource() and re-attempt the allocation if unable to convert the specified memory range Signed-off-by: Stacy Howell Reviewed-by: Liming Gao --- MdeModulePkg/Core/Dxe/Mem/Page.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/Page.c index 47d4c5d92e..cc0b90ac0d 100644 --- a/MdeModulePkg/Core/Dxe/Mem/Page.c +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c @@ -1417,6 +1417,20 @@ CoreInternalAllocatePages ( Status = CoreConvertPages (Start, NumberOfPages, MemoryType); } + if (EFI_ERROR (Status)) { + // + // If requested memory region is unavailable it may be untested memory + // Attempt to promote memory resources, then re-attempt the allocation + // + if (PromoteMemoryResource ()) { + if (NeedGuard) { + Status = CoreConvertPagesWithGuard (Start, NumberOfPages, MemoryType); + } else { + Status = CoreConvertPages (Start, NumberOfPages, MemoryType); + } + } + } + Done: CoreReleaseMemoryLock ();