LowerMemorySize = GetSystemMemorySizeBelow4gb ();\r
UpperMemorySize = GetSystemMemorySizeAbove4gb ();\r
\r
- //\r
- // Create memory HOBs\r
- //\r
- AddMemoryRangeHob (BASE_1MB, LowerMemorySize);\r
- AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);\r
+ if (mBootMode != BOOT_ON_S3_RESUME) {\r
+ //\r
+ // Create memory HOBs\r
+ //\r
+ AddMemoryRangeHob (BASE_1MB, LowerMemorySize);\r
+ AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);\r
+ }\r
\r
MtrrSetMemoryAttribute (BASE_1MB, LowerMemorySize - BASE_1MB, CacheWriteBack);\r
\r
MtrrSetMemoryAttribute (0, BASE_512KB + BASE_128KB, CacheWriteBack);\r
\r
if (UpperMemorySize != 0) {\r
- AddUntestedMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);\r
+ if (mBootMode != BOOT_ON_S3_RESUME) {\r
+ AddUntestedMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);\r
+ }\r
\r
MtrrSetMemoryAttribute (BASE_4GB, UpperMemorySize, CacheWriteBack);\r
}\r
(UINT64)(UINTN) PcdGet32 (PcdS3AcpiReservedMemorySize),\r
EfiACPIMemoryNVS\r
);\r
+\r
+ //\r
+ // Cover the initial RAM area used as stack and temporary PEI heap.\r
+ //\r
+ // This is reserved as ACPI NVS so it can be used on S3 resume.\r
+ //\r
+ BuildMemoryAllocationHob (\r
+ PcdGet32 (PcdOvmfSecPeiTempRamBase),\r
+ PcdGet32 (PcdOvmfSecPeiTempRamSize),\r
+ EfiACPIMemoryNVS\r
+ );\r
}\r
}\r