Revision: 17620
          http://sourceforge.net/p/edk2/code/17620
Author:   timhe
Date:     2015-06-11 02:50:20 +0000 (Thu, 11 Jun 2015)
Log Message:
-----------
Sync the branch changes to trunk. 

Update the FCE tool to remove ?\226?\128?\156runtime access?\226?\128?\157 .

and recovery "Setup" variable in case of ?\226?\128?\156Setup?\226?\128?\157 

variable size is incorrect somehow.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Tim He <[email protected]>
Reviewed-by: David Wei <[email protected]>

Modified Paths:
--------------
    trunk/edk2/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
    trunk/edk2/Vlv2TbltDevicePkg/FCE.exe
    
trunk/edk2/Vlv2TbltDevicePkg/Library/MultiPlatformLib/BoardClkGens/BoardClkGens.c
    trunk/edk2/Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c
    trunk/edk2/Vlv2TbltDevicePkg/PciPlatform/PciPlatform.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/ExI.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/Platform.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf
    trunk/edk2/Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformPei/Platform.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
    trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
    trunk/edk2/Vlv2TbltDevicePkg/PlatformSmm/Platform.c
    trunk/edk2/Vlv2TbltDevicePkg/bld_vlv.bat

Modified: trunk/edk2/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c    2015-06-11 
02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c    2015-06-11 
02:50:20 UTC (rev 17620)
@@ -697,7 +697,18 @@
                   &VariableSize,
                   &SetupVarBuffer
                   );
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VariableSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &mSystemConfigurationGuid,
+              NULL,
+              &VariableSize,
+              &SetupVarBuffer
+              );
+    ASSERT_EFI_ERROR (Status);
+  }    
 
   //
   // Find the AcpiSupport protocol.
@@ -817,7 +828,18 @@
                   &VarSize,
                   &mSystemConfiguration
                   );
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &mSystemConfigurationGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
 
   //
   // Find the AcpiSupport protocol.
@@ -842,7 +864,20 @@
                   &SysCfgSize,
                   &mSystemConfig
                   );
+  if (EFI_ERROR (Status) || SysCfgSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    SysCfgSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &SysCfgSize,
+              &mSystemConfig
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
 
+
   Status    = EFI_SUCCESS;
   Instance  = 0;
 

Modified: trunk/edk2/Vlv2TbltDevicePkg/FCE.exe
===================================================================
(Binary files differ)

Modified: 
trunk/edk2/Vlv2TbltDevicePkg/Library/MultiPlatformLib/BoardClkGens/BoardClkGens.c
===================================================================
--- 
trunk/edk2/Vlv2TbltDevicePkg/Library/MultiPlatformLib/BoardClkGens/BoardClkGens.c
   2015-06-11 02:32:52 UTC (rev 17619)
+++ 
trunk/edk2/Vlv2TbltDevicePkg/Library/MultiPlatformLib/BoardClkGens/BoardClkGens.c
   2015-06-11 02:50:20 UTC (rev 17620)
@@ -355,7 +355,18 @@
                                    NULL,
                                    &VariableSize,
                                    &SystemConfiguration);
-
+  if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VariableSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = Variable->GetVariable(Variable,
+              L"SetupRecovery",
+              &gEfiSetupVariableGuid,
+              NULL,
+              &VariableSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
   if(!EFI_ERROR (Status)){
     EnableSpreadSpectrum = SystemConfiguration.EnableClockSpreadSpec;
   }

Modified: trunk/edk2/Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c   
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c   
2015-06-11 02:50:20 UTC (rev 17620)
@@ -331,7 +331,18 @@
                   &VarSize,
                   &mSystemConfiguration
                   );
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }    
 
   if(mSystemConfiguration.BootDisplayDevice != 0x0)
   {
@@ -633,7 +644,18 @@
                   &VarSize,
                   &mSystemConfiguration
                   );
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }    
 
 
   if ((PlugInPciVgaDevicePath == NULL && OnboardPciVgaDevicePath != NULL) ) {
@@ -689,7 +711,18 @@
                   &VarSize,
                   &SystemConfiguration
                   );
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
 
   switch (SystemConfiguration.IgdFlatPanel) {
 
@@ -1585,6 +1618,11 @@
   UINTN                              BootOrderSize;
 
   Timeout = PcdGet16 (PcdPlatformBootTimeOut);
+  if (Timeout > 10 ) {
+    //we think the Timeout variable is corrupted
+    Timeout = 10;
+  }
+       
   VarSize = sizeof(SYSTEM_CONFIGURATION);
   Status = gRT->GetVariable(
                   NORMAL_SETUP_NAME,
@@ -1593,10 +1631,20 @@
                   &VarSize,
                   &SystemConfiguration
                   );
-  if (EFI_ERROR (Status)) {
-    return;
-  }
 
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
+
   //
   // Load the driver option as the driver option list
   //

Modified: trunk/edk2/Vlv2TbltDevicePkg/PciPlatform/PciPlatform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PciPlatform/PciPlatform.c      2015-06-11 
02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PciPlatform/PciPlatform.c      2015-06-11 
02:50:20 UTC (rev 17620)
@@ -352,7 +352,18 @@
                   &VarSize,
                   &mSystemConfiguration
                   );
-  ASSERT_EFI_ERROR(Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
 
   //
   // Install on a new handle

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/ExI.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/ExI.c      2015-06-11 02:32:52 UTC 
(rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/ExI.c      2015-06-11 02:50:20 UTC 
(rev 17620)
@@ -82,7 +82,18 @@
                   &SystemConfiguration
                   );
 
-  ASSERT_EFI_ERROR(Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
 
   if (SystemConfiguration.ExISupport == 1) {
          MmioOr32 ((UINTN) (GetPmcBase() + R_PCH_PMC_MTPMC1), (UINT32) 
BIT0+BIT1+BIT2);

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/Platform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/Platform.c 2015-06-11 02:32:52 UTC 
(rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/Platform.c 2015-06-11 02:50:20 UTC 
(rev 17620)
@@ -49,7 +49,9 @@
 #include <Protocol/GlobalNvsArea.h>
 #include <Protocol/IgdOpRegion.h>
 #include <Library/PcdLib.h>
+#include <Protocol/VariableLock.h>
 
+
 //
 // VLV2 GPIO GROUP OFFSET
 //
@@ -200,6 +202,82 @@
   );
 
 
+EFI_STATUS
+EFIAPI
+SaveSetupRecoveryVar(
+  VOID
+  )
+{
+  EFI_STATUS                   Status = EFI_SUCCESS;
+  UINTN                        SizeOfNvStore = 0;
+  UINTN                        SizeOfSetupVar = 0;
+  SYSTEM_CONFIGURATION         *SetupData = NULL;
+  SYSTEM_CONFIGURATION         *RecoveryNvData = NULL;
+  EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock = NULL;
+
+
+  DEBUG ((EFI_D_INFO, "SaveSetupRecoveryVar() Entry \n"));
+  SizeOfNvStore = sizeof(SYSTEM_CONFIGURATION);
+  RecoveryNvData = AllocateZeroPool (sizeof(SYSTEM_CONFIGURATION));
+  if (NULL == RecoveryNvData) {
+    Status = EFI_OUT_OF_RESOURCES;
+    goto Exit; 
+  }
+  
+  Status = gRT->GetVariable(
+                L"SetupRecovery",
+                &gEfiNormalSetupGuid,
+                NULL,
+                &SizeOfNvStore,
+                RecoveryNvData
+                );
+  
+  if (EFI_ERROR (Status)) {
+    // Don't find the "SetupRecovery" variable.
+    // have to copy "Setup" variable to "SetupRecovery" variable.
+    SetupData = AllocateZeroPool (sizeof(SYSTEM_CONFIGURATION));
+    if (NULL == SetupData) {
+      Status = EFI_OUT_OF_RESOURCES;
+      goto Exit;      
+    }
+    SizeOfSetupVar = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+                    NORMAL_SETUP_NAME,
+                    &gEfiNormalSetupGuid,
+                    NULL,
+                    &SizeOfSetupVar,
+                    SetupData
+                    );
+    ASSERT_EFI_ERROR (Status);
+    
+    Status = gRT->SetVariable (
+                    L"SetupRecovery",
+                    &gEfiNormalSetupGuid,
+                    EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
+                    sizeof(SYSTEM_CONFIGURATION),
+                    SetupData
+                    );
+    ASSERT_EFI_ERROR (Status);
+
+    Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID 
**) &VariableLock);
+      if (!EFI_ERROR (Status)) {
+        Status = VariableLock->RequestToLock (VariableLock, L"SetupRecovery", 
&gEfiNormalSetupGuid);
+        ASSERT_EFI_ERROR (Status);
+    }
+    
+  }
+
+Exit:
+  if (RecoveryNvData)
+    FreePool (RecoveryNvData);
+  if (SetupData)
+    FreePool (SetupData);
+  
+  return Status;
+    
+}
+
+
 VOID
 TristateLpcGpioConfig (
   IN UINT32             Gpio_Mmio_Offset,
@@ -692,6 +770,10 @@
   //
   InitializeObservableProtocol();
 
+  Status = SaveSetupRecoveryVar();
+  if (EFI_ERROR (Status)) {
+    DEBUG ((EFI_D_ERROR, "InitializePlatform() Save SetupRecovery variable 
failed \n"));
+  }
 
   VarSize = sizeof(SYSTEM_CONFIGURATION);
   Status = gRT->GetVariable(
@@ -701,8 +783,26 @@
                   &VarSize,
                   &mSystemConfiguration
                   );
-
-
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+    Status = gRT->SetVariable (
+                    NORMAL_SETUP_NAME,
+                    &gEfiNormalSetupGuid,
+                    EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
+                    sizeof(SYSTEM_CONFIGURATION),
+                    &mSystemConfiguration
+                    );    
+  }
+    
   Status = EfiCreateEventReadyToBootEx (
              TPL_CALLBACK,
              ReadyToBootFunction,
@@ -1394,12 +1494,7 @@
 {
   EFI_PLATFORM_SETUP_ID           *BootModeBuffer;
   VOID                            *HobList;
-  UINT16                          State;
 
-  //
-  // Variable initialization
-  //
-  State = FALSE;
 
   HobList = GetFirstGuidHob(&gEfiPlatformBootModeGuid);
   if (HobList != NULL) {
@@ -1416,16 +1511,8 @@
         mMfgMode = TRUE;
       }
 
-      //
-      // Check if in safe mode
-      //
-      if ( !CompareMem (
-              &BootModeBuffer->SetupName,
-              SAFE_SETUP_NAME,
-              StrSize (SAFE_SETUP_NAME)
-              ) ) {
-        State = TRUE;
-      }
+
+
   }
 
 }
@@ -1588,6 +1675,19 @@
                   &SystemConfiguration
                   );
 
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
+
   if((SystemConfiguration.GraphicsDriverMemorySize < 4) && !EFI_ERROR(Status) 
) {
     switch (SystemConfiguration.GraphicsDriverMemorySize){
       case 1:

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf    2015-06-11 
02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf    2015-06-11 
02:50:20 UTC (rev 17620)
@@ -128,6 +128,7 @@
   gEfiCpuIo2ProtocolGuid
   gIgdOpRegionProtocolGuid
   gExitPmAuthProtocolGuid
+  gEdkiiVariableLockProtocolGuid
 
 [Pcd.common]
   gPlatformModuleTokenSpaceGuid.PcdPBTNDisableInterval

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.c  
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.c  
2015-06-11 02:50:20 UTC (rev 17620)
@@ -190,7 +190,19 @@
                   &VarSize,
                   &SystemConfiguration
                   );
-  ASSERT_EFI_ERROR(Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
+  
   if (SystemConfiguration.GOPEnable == 1)
   {
   Status = gBS->InstallMultipleProtocolInterfaces (

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.c      
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.c      
2015-06-11 02:50:20 UTC (rev 17620)
@@ -71,6 +71,19 @@
                   &VarSize,
                   &SystemConfiguration
                   );
+  
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }    
 
   VarSize = sizeof(Selection);
   Status = gRT->GetVariable(
@@ -122,7 +135,7 @@
         Status = gRT->SetVariable (
                         NORMAL_SETUP_NAME,
                         &gEfiNormalSetupGuid,
-                        EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+                        EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_NON_VOLATILE,
                         sizeof(SYSTEM_CONFIGURATION),
                         &SystemConfiguration
                         );
@@ -155,7 +168,7 @@
       Status = gRT->SetVariable(
                       L"PlatformInfo",
                       &gEfiVlv2VariableGuid,
-                      EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+                      EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_NON_VOLATILE,
                       sizeof(EFI_PLATFORM_INFO_HOB),
                       PlatformInfoHobPtr
                       );

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c     2015-06-11 
02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c     2015-06-11 
02:50:20 UTC (rev 17620)
@@ -211,6 +211,19 @@
                            &VarSize,
                            &SystemConfiguration
                            );
+      if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+        //The setup variable is corrupted
+        VarSize = sizeof(SYSTEM_CONFIGURATION);
+        Status = Variable->GetVariable(
+                  Variable,
+                  L"SetupRecovery",
+                  &gEfiSetupVariableGuid,
+                  NULL,
+                  &VarSize,
+                  &SystemConfiguration
+                  );
+        ASSERT_EFI_ERROR (Status);
+      }      
 
       if (SystemConfiguration.FastBoot == 1) {
             BootMode = BOOT_WITH_MINIMAL_CONFIGURATION;
@@ -395,16 +408,16 @@
     // Recovery mode
     //
     CopyMem (&PlatformSetupId.SetupName,
-             SAFE_SETUP_NAME,
-             StrSize (SAFE_SETUP_NAME));
+             &NORMAL_SETUP_NAME,
+             StrSize (NORMAL_SETUP_NAME));    
     PlatformSetupId.PlatformBootMode = PLATFORM_RECOVERY_MODE;
   } else if (CheckIfSafeMode(PeiServices, PlatformInfoHob)) {
     //
     // Safe mode also called config mode or maintenace mode.
     //
     CopyMem (&PlatformSetupId.SetupName,
-             SAFE_SETUP_NAME,
-             StrSize (SAFE_SETUP_NAME));
+             &NORMAL_SETUP_NAME,
+             StrSize (NORMAL_SETUP_NAME));
     PlatformSetupId.PlatformBootMode = PLATFORM_SAFE_MODE;
 
   } else if(0) { // else if (CheckIfManufacturingMode(PeiServices)) {

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c    
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c    
2015-06-11 02:50:20 UTC (rev 17620)
@@ -205,7 +205,19 @@
                        &VariableSize,
                        SystemConfiguration
                        );
-  ASSERT_EFI_ERROR(Status);
+  if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VariableSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = Variable->GetVariable(
+              Variable,
+              L"SetupRecovery",
+              &gEfiSetupVariableGuid,
+              NULL,
+              &VariableSize,
+              SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
   return Status;
 }
 

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformPei/Platform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformPei/Platform.c 2015-06-11 02:32:52 UTC 
(rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformPei/Platform.c 2015-06-11 02:50:20 UTC 
(rev 17620)
@@ -725,7 +725,20 @@
                        &VariableSize,
                        &SystemConfiguration
                                           );
-  ASSERT_EFI_ERROR(Status);
+  if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VariableSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = Variable->GetVariable(
+              Variable,
+              L"SetupRecovery",
+              &gEfiSetupVariableGuid,
+              NULL,
+              &VariableSize,
+              &SystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
+  
   if (EFI_ERROR (Status)) {
     GGC = ((2 << 3) | 0x200);
     PciCfg16Write(EC_BASE, 0, 2, 0, 0x50, GGC);

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c    
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c    
2015-06-11 02:50:20 UTC (rev 17620)
@@ -26,7 +26,9 @@
 
 #include "PlatformSetupDxe.h"
 #include "Guid/SetupVariable.h"
+#include <Protocol/FormBrowserEx2.h>
 
+
 #define EFI_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('C', 'l', 'b', 'k')
 #define EFI_CALLBACK_INFO_FROM_THIS(a)  CR (a, EFI_CALLBACK_INFO, 
ConfigAccess, EFI_CALLBACK_INFO_SIGNATURE)
 
@@ -315,7 +317,7 @@
   gRT->SetVariable(
          mSetupName,
          &mNormalSetupGuid,
-         EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
+         EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
          sizeof(SYSTEM_CONFIGURATION),
          &Private->FakeNvData
          );
@@ -367,6 +369,7 @@
   EFI_STATUS                    Status;
   UINTN                         DataSize;
   UINT8                         OsSelection;
+  EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL *FormBrowserEx2;
 
   StringBuffer1 = AllocateZeroPool (200 * sizeof (CHAR16));
   ASSERT (StringBuffer1 != NULL);
@@ -483,7 +486,7 @@
           Status = gRT->SetVariable (
                           L"Setup",
                           &mNormalSetupGuid,
-                          EFI_VARIABLE_RUNTIME_ACCESS | 
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+                          EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
                           sizeof(SYSTEM_CONFIGURATION),
                           &Private->FakeNvData
                           );
@@ -534,7 +537,7 @@
           Status = gRT->SetVariable (
                           L"Setup",
                           &mNormalSetupGuid,
-                          EFI_VARIABLE_RUNTIME_ACCESS | 
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+                          EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
                           sizeof(SYSTEM_CONFIGURATION),
                           &Private->FakeNvData
                           );
@@ -605,33 +608,31 @@
       // If the user hits the YES Response key
       //
       if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) {
-        //
-        // Load default
-        //
+
+        Status = gBS->LocateProtocol (&gEdkiiFormBrowserEx2ProtocolGuid, NULL, 
(VOID **) &FormBrowserEx2);
+        FormBrowserEx2->ExecuteAction(BROWSER_ACTION_DEFAULT, 
EFI_HII_DEFAULT_CLASS_STANDARD);
+
         FakeNvData = AllocateZeroPool (sizeof(SYSTEM_CONFIGURATION));
 
         if (FakeNvData == NULL) {
           return EFI_OUT_OF_RESOURCES;
         }
-
-        SizeOfNvStore = sizeof(SYSTEM_CONFIGURATION);
-        Status = gRT->GetVariable(
-                        L"SetupDefault",
-                        &mNormalSetupGuid,
-                        NULL,
-                        &SizeOfNvStore,
-                        FakeNvData
-                        );
+        
+        Status = HiiGetBrowserData (
+                          &mSystemConfigGuid,
+                                  mVariableName,
+                                  sizeof (SYSTEM_CONFIGURATION),
+                                  (UINT8 *) FakeNvData
+                                  );
+        
         if (!EFI_ERROR (Status)) {
-          if(SizeOfNvStore >= sizeof(SYSTEM_CONFIGURATION)) {
-            Status = gRT->SetVariable (
-                            L"Setup",
-                            &mNormalSetupGuid,
-                            EFI_VARIABLE_RUNTIME_ACCESS | 
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
-                            sizeof(SYSTEM_CONFIGURATION),
-                            FakeNvData
-                            );
-          }
+          Status = gRT->SetVariable (
+                          L"Setup",
+                          &mNormalSetupGuid,
+                            EFI_VARIABLE_NON_VOLATILE | 
EFI_VARIABLE_BOOTSERVICE_ACCESS,
+                          sizeof(SYSTEM_CONFIGURATION),
+                          FakeNvData
+                          );
         }
 
         FreePool (FakeNvData);

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf  
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf  
2015-06-11 02:50:20 UTC (rev 17620)
@@ -135,6 +135,7 @@
   gEfiHiiConfigRoutingProtocolGuid              ## CONSUMED
   gEfiHiiConfigAccessProtocolGuid               ## PRODUCED
   gEfiDevicePathToTextProtocolGuid              ## CONSUMED
+  gEdkiiFormBrowserEx2ProtocolGuid
 
   gEfiDataHubProtocolGuid
   gEfiLegacyBiosProtocolGuid

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c    
2015-06-11 02:32:52 UTC (rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c    
2015-06-11 02:50:20 UTC (rev 17620)
@@ -1759,7 +1759,18 @@
                   &mSystemConfiguration
                                  );
 
-  ASSERT_EFI_ERROR (Status);
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = gRT->GetVariable(
+              L"SetupRecovery",
+              &gEfiNormalSetupGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
 
   //
   // Update HOB variable for PCI resource information

Modified: trunk/edk2/Vlv2TbltDevicePkg/PlatformSmm/Platform.c
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/PlatformSmm/Platform.c 2015-06-11 02:32:52 UTC 
(rev 17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/PlatformSmm/Platform.c 2015-06-11 02:50:20 UTC 
(rev 17620)
@@ -179,6 +179,18 @@
                           &VarSize,
                           &mSystemConfiguration
                           );
+  if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = SystemTable->RuntimeServices->GetVariable(
+              L"SetupRecovery",
+              &gEfiSetupVariableGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }  
   if (!EFI_ERROR(Status)) {
     mAcLossVariable = mSystemConfiguration.StateAfterG3;
 
@@ -857,7 +869,20 @@
                            &VarSize,
                            &mSystemConfiguration
                            );
-  if (EFI_ERROR(Status) || (!mSystemConfiguration.WakeOnRtcS5)) {
+  if (EFI_ERROR(Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {
+    //The setup variable is corrupted
+    VarSize = sizeof(SYSTEM_CONFIGURATION);
+    Status = mSmmVariable->SmmGetVariable(
+              L"SetupRecovery",
+              &gEfiSetupVariableGuid,
+              NULL,
+              &VarSize,
+              &mSystemConfiguration
+              );
+    ASSERT_EFI_ERROR (Status);
+  }
+
+  if (!mSystemConfiguration.WakeOnRtcS5) {
     return;
   }
   mWakeupDay = HexToBcd((UINT8)mSystemConfiguration.RTCWakeupDate);

Modified: trunk/edk2/Vlv2TbltDevicePkg/bld_vlv.bat
===================================================================
--- trunk/edk2/Vlv2TbltDevicePkg/bld_vlv.bat    2015-06-11 02:32:52 UTC (rev 
17619)
+++ trunk/edk2/Vlv2TbltDevicePkg/bld_vlv.bat    2015-06-11 02:50:20 UTC (rev 
17620)
@@ -217,10 +217,10 @@
 
 pushd %PLATFORM_PACKAGE%
 :: Extract Hii data from build and store in HiiDefaultData.txt
-fce read -i ..\%BUILD_PATH%\FV\Vlv.fd > ..\%BUILD_PATH%\FV\HiiDefaultData.txt 
1>>EDK2.log 2>&1
+fce read -i ..\%BUILD_PATH%\FV\Vlv.fd > ..\%BUILD_PATH%\FV\HiiDefaultData.txt
 
-:: copy the Setup variable to the SetupDefault variable and save changes to 
VlvXXX.fd
-fce mirror -i ..\%BUILD_PATH%\FV\Vlv.fd -o ..\%BUILD_PATH%\FV\Vlv%Arch%.fd 
Setup SetupDefault 1>>EDK2.log 2>&1
+:: save changes to VlvXXX.fd
+fce update -i ..\%BUILD_PATH%\FV\Vlv.fd -s 
..\%BUILD_PATH%\FV\HiiDefaultData.txt -o ..\%BUILD_PATH%\FV\Vlv%Arch%.fd
 
 popd
 


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to