]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Vlv2TbltDevicePkg/PlatformSmm/Platform.c
Sync the branch changes to trunk.
[mirror_edk2.git] / Vlv2TbltDevicePkg / PlatformSmm / Platform.c
index d8bfeb4371d6c275bd4fb51bf8422304a124b140..3a5b20a98463b0e06c695717e8ad91e15c7d3ed3 100644 (file)
@@ -170,6 +170,18 @@ InitializePlatformSmm (
                           &VarSize,\r
                           &mSystemConfiguration\r
                           );\r
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {\r
+    //The setup variable is corrupted\r
+    VarSize = sizeof(SYSTEM_CONFIGURATION);\r
+    Status = SystemTable->RuntimeServices->GetVariable(\r
+              L"SetupRecovery",\r
+              &gEfiSetupVariableGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &mSystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }  \r
   if (!EFI_ERROR(Status)) {\r
     mAcLossVariable = mSystemConfiguration.StateAfterG3;\r
 \r
@@ -848,7 +860,20 @@ EnableS5WakeOnRtc()
                            &VarSize,\r
                            &mSystemConfiguration\r
                            );\r
-  if (EFI_ERROR(Status) || (!mSystemConfiguration.WakeOnRtcS5)) {\r
+  if (EFI_ERROR(Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {\r
+    //The setup variable is corrupted\r
+    VarSize = sizeof(SYSTEM_CONFIGURATION);\r
+    Status = mSmmVariable->SmmGetVariable(\r
+              L"SetupRecovery",\r
+              &gEfiSetupVariableGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &mSystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }\r
+\r
+  if (!mSystemConfiguration.WakeOnRtcS5) {\r
     return;\r
   }\r
   mWakeupDay = HexToBcd((UINT8)mSystemConfiguration.RTCWakeupDate);\r