]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/PiSmmCore/Page.c
Update PI SMM Core to ignore memory ranges from SMRAM Descriptors that are already...
[mirror_edk2.git] / MdeModulePkg / Core / PiSmmCore / Page.c
index ec4dd4fcb8ef409c984ae26e3f502ea007326454..781707e2443bd55983ee3429421e7f5305797d24 100644 (file)
@@ -312,6 +312,16 @@ SmmAddMemoryRegion (
 {\r
   UINTN  AlignedMemBase;\r
 \r
 {\r
   UINTN  AlignedMemBase;\r
 \r
+  //\r
+  // Do not add memory regions that is already allocated, needs testing, or needs ECC initialization\r
+  //\r
+  if ((Attributes & (EFI_ALLOCATED | EFI_NEEDS_TESTING | EFI_NEEDS_ECC_INITIALIZATION)) != 0) {\r
+    return;\r
+  }\r
+  \r
+  //\r
+  // Align range on an EFI_PAGE_SIZE boundary\r
+  //  \r
   AlignedMemBase = (UINTN)(MemBase + EFI_PAGE_MASK) & ~EFI_PAGE_MASK;\r
   MemLength -= AlignedMemBase - MemBase;\r
   SmmFreePages (AlignedMemBase, TRUNCATE_TO_PAGES ((UINTN)MemLength));\r
   AlignedMemBase = (UINTN)(MemBase + EFI_PAGE_MASK) & ~EFI_PAGE_MASK;\r
   MemLength -= AlignedMemBase - MemBase;\r
   SmmFreePages (AlignedMemBase, TRUNCATE_TO_PAGES ((UINTN)MemLength));\r