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