We will not be running DXE on S3 resume, so we don't
need to do these initialization items:
 * Reserve EMU Variable memory range
 * Declare Firmware volumes
 * Add memory HOBs
 * MiscInitialization:
   - Disable A20 Mask
   - Build CPU hob
   - Set Power Management Base Address register

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <[email protected]>
---
 OvmfPkg/PlatformPei/MemDetect.c | 16 ++++++++++------
 OvmfPkg/PlatformPei/Platform.c  | 18 ++++++++++--------
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
index bf67d7c..bd666c5 100644
--- a/OvmfPkg/PlatformPei/MemDetect.c
+++ b/OvmfPkg/PlatformPei/MemDetect.c
@@ -147,18 +147,22 @@ MemDetect (
   LowerMemorySize = GetSystemMemorySizeBelow4gb ();
   UpperMemorySize = GetSystemMemorySizeAbove4gb ();
 
-  //
-  // Create memory HOBs
-  //
-  AddMemoryRangeHob (BASE_1MB, LowerMemorySize);
-  AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
+  if (mBootMode != BOOT_ON_S3_RESUME) {
+    //
+    // Create memory HOBs
+    //
+    AddMemoryRangeHob (BASE_1MB, LowerMemorySize);
+    AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
+  }
 
   MtrrSetMemoryAttribute (BASE_1MB, LowerMemorySize - BASE_1MB, 
CacheWriteBack);
 
   MtrrSetMemoryAttribute (0, BASE_512KB + BASE_128KB, CacheWriteBack);
 
   if (UpperMemorySize != 0) {
-    AddUntestedMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
+    if (mBootMode != BOOT_ON_S3_RESUME) {
+      AddUntestedMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
+    }
 
     MtrrSetMemoryAttribute (BASE_4GB, UpperMemorySize, CacheWriteBack);
   }
diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c
index 6a40616..b28f6d6 100644
--- a/OvmfPkg/PlatformPei/Platform.c
+++ b/OvmfPkg/PlatformPei/Platform.c
@@ -443,17 +443,19 @@ InitializePlatform (
     InitializeXen (XenLeaf);
   }
 
-  ReserveEmuVariableNvStore ();
+  if (mBootMode != BOOT_ON_S3_RESUME) {
+    ReserveEmuVariableNvStore ();
 
-  PeiFvInitialization ();
+    PeiFvInitialization ();
 
-  if (XenLeaf != 0) {
-    XenMemMapInitialization ();
-  } else {
-    MemMapInitialization (TopOfMemory);
-  }
+    if (XenLeaf != 0) {
+      XenMemMapInitialization ();
+    } else {
+      MemMapInitialization (TopOfMemory);
+    }
 
-  MiscInitialization ();
+    MiscInitialization ();
+  }
 
   return EFI_SUCCESS;
 }
-- 
1.8.5.2


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to