]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c
Sync the branch changes to trunk.
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / PlatformBdsLib / BdsPlatform.c
index ad16267ecaa6f58102208c378463b5a27ec066cb..195d7341895b159fc3f1a7874ba64cb92ac5ecc6 100644 (file)
@@ -322,7 +322,18 @@ GetGopDevicePath (
                   &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
+              &gEfiNormalSetupGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &mSystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }    \r
 \r
   if(mSystemConfiguration.BootDisplayDevice != 0x0)\r
   {\r
@@ -624,7 +635,18 @@ PlatformBdsForceActiveVga (
                   &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
+              &gEfiNormalSetupGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &mSystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }    \r
 \r
 \r
   if ((PlugInPciVgaDevicePath == NULL && OnboardPciVgaDevicePath != NULL) ) {\r
@@ -680,7 +702,18 @@ UpdateConsoleResolution(
                   &VarSize,\r
                   &SystemConfiguration\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
+              &gEfiNormalSetupGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &SystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }  \r
 \r
   switch (SystemConfiguration.IgdFlatPanel) {\r
 \r
@@ -1576,6 +1609,11 @@ PlatformBdsPolicyBehavior (
   UINTN                              BootOrderSize;\r
 \r
   Timeout = PcdGet16 (PcdPlatformBootTimeOut);\r
+  if (Timeout > 10 ) {\r
+    //we think the Timeout variable is corrupted\r
+    Timeout = 10;\r
+  }\r
+       \r
   VarSize = sizeof(SYSTEM_CONFIGURATION);\r
   Status = gRT->GetVariable(\r
                   NORMAL_SETUP_NAME,\r
@@ -1584,9 +1622,19 @@ PlatformBdsPolicyBehavior (
                   &VarSize,\r
                   &SystemConfiguration\r
                   );\r
-  if (EFI_ERROR (Status)) {\r
-    return;\r
-  }\r
+\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
+              &gEfiNormalSetupGuid,\r
+              NULL,\r
+              &VarSize,\r
+              &SystemConfiguration\r
+              );\r
+    ASSERT_EFI_ERROR (Status);\r
+  }  \r
 \r
   //\r
   // Load the driver option as the driver option list\r