(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
+#ifdef MDE_CPU_X64\r
+ //\r
+ // Reserve the initial page tables built by the reset vector code.\r
+ //\r
+ // Since this memory range will be used by the Reset Vector on S3\r
+ // resume, it must be reserved as ACPI NVS.\r
+ //\r
+ BuildMemoryAllocationHob (\r
+ (EFI_PHYSICAL_ADDRESS)(UINTN) PcdGet32 (PcdOvmfSecPageTablesBase),\r
+ (UINT64)(UINTN) PcdGet32 (PcdOvmfSecPageTablesSize),\r
+ EfiACPIMemoryNVS\r
+ );\r
+#endif\r
}\r
}\r