&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
&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