]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/PlatformPei/MemDetect.c
OvmfPkg: PlatformPei: lifecycle fixes for the LockBox area
[mirror_edk2.git] / OvmfPkg / PlatformPei / MemDetect.c
index c1350b931f3a445bc2e9800928aa80e58e109009..15b279e4456c525ab18912bb4aafa096ad0204a3 100644 (file)
@@ -218,13 +218,19 @@ InitializeRamRegions (
       EfiACPIMemoryNVS\r
       );\r
 #endif\r
+  }\r
 \r
+  if (mBootMode != BOOT_ON_S3_RESUME) {\r
     //\r
     // Reserve the lock box storage area\r
     //\r
     // Since this memory range will be used on S3 resume, it must be\r
     // reserved as ACPI NVS.\r
     //\r
+    // If S3 is unsupported, then various drivers might still write to the\r
+    // LockBox area. We ought to prevent DXE from serving allocation requests\r
+    // such that they would overlap the LockBox storage.\r
+    //\r
     ZeroMem (\r
       (VOID*)(UINTN) PcdGet32 (PcdOvmfLockBoxStorageBase),\r
       (UINTN) PcdGet32 (PcdOvmfLockBoxStorageSize)\r
@@ -232,7 +238,7 @@ InitializeRamRegions (
     BuildMemoryAllocationHob (\r
       (EFI_PHYSICAL_ADDRESS)(UINTN) PcdGet32 (PcdOvmfLockBoxStorageBase),\r
       (UINT64)(UINTN) PcdGet32 (PcdOvmfLockBoxStorageSize),\r
-      EfiACPIMemoryNVS\r
+      mS3Supported ? EfiACPIMemoryNVS : EfiBootServicesData\r
       );\r
   }\r
 }\r