Follow UEFI spec, set TimeOut and HwErrRecSupport variable by EFI variable service instead of PcdSet().
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14162 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
# Intel Framework Module Package contains the definitions and module implementation
|
# Intel Framework Module Package contains the definitions and module implementation
|
||||||
# which follows Intel EFI Framework Specification.
|
# which follows Intel EFI Framework Specification.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -147,14 +147,16 @@
|
|||||||
## The PCD is used to mark whether the machine is in first boot cycle.
|
## The PCD is used to mark whether the machine is in first boot cycle.
|
||||||
# TRUE means the machine is in first boot cycle. After completing the first boot,
|
# TRUE means the machine is in first boot cycle. After completing the first boot,
|
||||||
# the PCD's value will be updated to FALSE.
|
# the PCD's value will be updated to FALSE.
|
||||||
|
# This PCD should be set as HII type PCD by platform integrator.
|
||||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState|TRUE|BOOLEAN|0x0001002f
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState|TRUE|BOOLEAN|0x0001002f
|
||||||
|
|
||||||
## Timeout value for displaying progressing bar in before boot OS.
|
## Timeout value for displaying progressing bar in before boot OS.
|
||||||
# According to UEFI 2.0 spec, the default TimeOut should be 0xffff.
|
# According to UEFI 2.0 spec, the default TimeOut should be 0xffff.
|
||||||
|
# This PCD should be set as HII type PCD by platform integrator mapped to variable L"TimeOut" and gEfiGlobalVariableGuid.
|
||||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0xffff|UINT16|0x40000001
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0xffff|UINT16|0x40000001
|
||||||
|
|
||||||
## Error level for hardware recorder. If value 0, platform does not support feature of hardware error record.
|
## Error level for hardware recorder. If value 0, platform does not support feature of hardware error record.
|
||||||
# This PCD should be set as HII type PCD by platform integrator mapped to variable L"HwErrRecSupport"
|
# This PCD should be set as HII type PCD by platform integrator mapped to variable L"HwErrRecSupport" and gEfiGlobalVariableGuid.
|
||||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|0|UINT16|0x40000002
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|0|UINT16|0x40000002
|
||||||
|
|
||||||
[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
||||||
|
@ -457,6 +457,8 @@ BdsEntry (
|
|||||||
LIST_ENTRY BootOptionList;
|
LIST_ENTRY BootOptionList;
|
||||||
UINTN BootNextSize;
|
UINTN BootNextSize;
|
||||||
CHAR16 *FirmwareVendor;
|
CHAR16 *FirmwareVendor;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINT16 BootTimeOut;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Insert the performance probe
|
// Insert the performance probe
|
||||||
@ -510,6 +512,25 @@ BdsEntry (
|
|||||||
|
|
||||||
InitializeHwErrRecSupport();
|
InitializeHwErrRecSupport();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize L"Timeout" EFI global variable.
|
||||||
|
//
|
||||||
|
BootTimeOut = PcdGet16 (PcdPlatformBootTimeOut);
|
||||||
|
if (BootTimeOut != 0xFFFF) {
|
||||||
|
//
|
||||||
|
// If time out value equal 0xFFFF, no need set to 0xFFFF to variable area because UEFI specification
|
||||||
|
// define same behavior between no value or 0xFFFF value for L"Timeout".
|
||||||
|
//
|
||||||
|
Status = gRT->SetVariable (
|
||||||
|
L"Timeout",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
|
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
|
||||||
|
sizeof (UINT16),
|
||||||
|
&BootTimeOut
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR(Status);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// bugbug: platform specific code
|
// bugbug: platform specific code
|
||||||
// Initialize the platform specific string and language
|
// Initialize the platform specific string and language
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The functions for Boot Maintainence Main menu.
|
The functions for Boot Maintainence Main menu.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -672,7 +672,14 @@ ApplyChangeHandler (
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FORM_TIME_OUT_ID:
|
case FORM_TIME_OUT_ID:
|
||||||
PcdSet16 (PcdPlatformBootTimeOut, CurrentFakeNVMap->BootTimeOut);
|
Status = gRT->SetVariable (
|
||||||
|
L"Timeout",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
|
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
|
||||||
|
sizeof (UINT16),
|
||||||
|
&(CurrentFakeNVMap->BootTimeOut)
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR(Status);
|
||||||
|
|
||||||
Private->BmmOldFakeNVData.BootTimeOut = CurrentFakeNVMap->BootTimeOut;
|
Private->BmmOldFakeNVData.BootTimeOut = CurrentFakeNVMap->BootTimeOut;
|
||||||
break;
|
break;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Set the level of support for Hardware Error Record Persistence that is
|
Set the level of support for Hardware Error Record Persistence that is
|
||||||
implemented by the platform.
|
implemented by the platform.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -26,17 +26,23 @@ InitializeHwErrRecSupport (
|
|||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
UINT16 HardwareErrorRecordLevel;
|
UINT16 HardwareErrorRecordLevel;
|
||||||
|
|
||||||
HardwareErrorRecordLevel = PcdGet16 (PcdHardwareErrorRecordLevel);
|
HardwareErrorRecordLevel = PcdGet16 (PcdHardwareErrorRecordLevel);
|
||||||
|
|
||||||
if (HardwareErrorRecordLevel != 0) {
|
if (HardwareErrorRecordLevel != 0) {
|
||||||
//
|
//
|
||||||
// Set original value again to make sure this value is stored into variable
|
// If level value equal 0, no need set to 0 to variable area because UEFI specification
|
||||||
// area but not PCD database.
|
// define same behavior between no value or 0 value for L"HwErrRecSupport".
|
||||||
// if level value equal 0, no need set to 0 to variable area because UEFI specification
|
|
||||||
// define same behavior between no value or 0 value for L"HwErrRecSupport"
|
|
||||||
//
|
//
|
||||||
PcdSet16 (PcdHardwareErrorRecordLevel, HardwareErrorRecordLevel);
|
Status = gRT->SetVariable (
|
||||||
|
L"HwErrRecSupport",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
|
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
|
||||||
|
sizeof (UINT16),
|
||||||
|
&HardwareErrorRecordLevel
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR(Status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user