#include <Library/PciLib.h>\r
#include <Library/PeimEntryPoint.h>\r
#include <Library/PeiServicesLib.h>\r
+#include <Library/QemuFwCfgLib.h>\r
#include <Library/ResourcePublicationLib.h>\r
#include <Guid/MemoryTypeInformation.h>\r
#include <Ppi/MasterBootMode.h>\r
};\r
\r
\r
+EFI_BOOT_MODE mBootMode = BOOT_WITH_FULL_CONFIGURATION;\r
+\r
+BOOLEAN mS3Supported = FALSE;\r
+\r
+\r
VOID\r
AddIoMemoryBaseSizeHob (\r
EFI_PHYSICAL_ADDRESS MemoryBase,\r
VOID\r
)\r
{\r
- EFI_BOOT_MODE BootMode;\r
EFI_STATUS Status;\r
\r
if (CmosRead8 (0xF) == 0xFE) {\r
- BootMode = BOOT_ON_S3_RESUME;\r
- } else {\r
- BootMode = BOOT_WITH_FULL_CONFIGURATION;\r
+ mBootMode = BOOT_ON_S3_RESUME;\r
}\r
\r
- Status = PeiServicesSetBootMode (BootMode);\r
+ Status = PeiServicesSetBootMode (mBootMode);\r
ASSERT_EFI_ERROR (Status);\r
\r
Status = PeiServicesInstallPpi (mPpiBootMode);\r
\r
XenDetect ();\r
\r
+ if (QemuFwCfgS3Enabled ()) {\r
+ DEBUG ((EFI_D_INFO, "S3 support was detected on QEMU\n"));\r
+ mS3Supported = TRUE;\r
+ }\r
+\r
BootModeInitialization ();\r
\r
PublishPeiMemory ();\r
InitializeXen ();\r
}\r
\r
- ReserveEmuVariableNvStore ();\r
+ if (mBootMode != BOOT_ON_S3_RESUME) {\r
+ ReserveEmuVariableNvStore ();\r
\r
- PeiFvInitialization ();\r
+ PeiFvInitialization ();\r
\r
- MemMapInitialization ();\r
+ MemMapInitialization ();\r
+ }\r
\r
MiscInitialization ();\r
\r