&VariableSize,\r
&SetupVarBuffer\r
);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {\r
+ //The setup variable is corrupted\r
+ VariableSize = sizeof(SYSTEM_CONFIGURATION);\r
+ Status = gRT->GetVariable(\r
+ L"SetupRecovery",\r
+ &mSystemConfigurationGuid,\r
+ NULL,\r
+ &VariableSize,\r
+ &SetupVarBuffer\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ } \r
\r
//\r
// Find the AcpiSupport protocol.\r
&VarSize,\r
&mSystemConfiguration\r
);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {\r
+ //The setup variable is corrupted\r
+ VarSize = sizeof(SYSTEM_CONFIGURATION);\r
+ Status = gRT->GetVariable(\r
+ L"SetupRecovery",\r
+ &mSystemConfigurationGuid,\r
+ NULL,\r
+ &VarSize,\r
+ &mSystemConfiguration\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
\r
//\r
// Find the AcpiSupport protocol.\r
&SysCfgSize,\r
&mSystemConfig\r
);\r
+ if (EFI_ERROR (Status) || SysCfgSize != sizeof(SYSTEM_CONFIGURATION)) {\r
+ //The setup variable is corrupted\r
+ SysCfgSize = sizeof(SYSTEM_CONFIGURATION);\r
+ Status = gRT->GetVariable(\r
+ L"SetupRecovery",\r
+ &gEfiNormalSetupGuid,\r
+ NULL,\r
+ &SysCfgSize,\r
+ &mSystemConfig\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+\r
\r
Status = EFI_SUCCESS;\r
Instance = 0;\r