mirror of https://github.com/acidanthera/audk.git
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:
parent
fa9bebd8f9
commit
e1e91b73d1
|
@ -2,7 +2,7 @@
|
|||
# Intel Framework Module Package contains the definitions and module implementation
|
||||
# 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
|
||||
# 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.
|
||||
# TRUE means the machine is in first boot cycle. After completing the first boot,
|
||||
# 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
|
||||
|
||||
## Timeout value for displaying progressing bar in before boot OS.
|
||||
# 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
|
||||
|
||||
## 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
|
||||
|
||||
[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
||||
|
|
|
@ -457,6 +457,8 @@ BdsEntry (
|
|||
LIST_ENTRY BootOptionList;
|
||||
UINTN BootNextSize;
|
||||
CHAR16 *FirmwareVendor;
|
||||
EFI_STATUS Status;
|
||||
UINT16 BootTimeOut;
|
||||
|
||||
//
|
||||
// Insert the performance probe
|
||||
|
@ -510,6 +512,25 @@ BdsEntry (
|
|||
|
||||
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
|
||||
// Initialize the platform specific string and language
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
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
|
||||
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
|
||||
|
@ -672,7 +672,14 @@ ApplyChangeHandler (
|
|||
break;
|
||||
|
||||
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;
|
||||
break;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Set the level of support for Hardware Error Record Persistence that is
|
||||
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
|
||||
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
|
||||
|
@ -26,17 +26,23 @@ InitializeHwErrRecSupport (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT16 HardwareErrorRecordLevel;
|
||||
|
||||
HardwareErrorRecordLevel = PcdGet16 (PcdHardwareErrorRecordLevel);
|
||||
|
||||
if (HardwareErrorRecordLevel != 0) {
|
||||
//
|
||||
// Set original value again to make sure this value is stored into variable
|
||||
// area but not PCD database.
|
||||
// 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"
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue