Add EDKII_VARIABLE_LOCK_PROTOCOL and the implementation in MdeModulePkg variable drivers.
Add code in BdsDxe driver to call the protocol to mark the read-only variables defined in the UEFI Spec. Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Guo Dong <guo.dong@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14372 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Head file for BDS Architectural Protocol implementation
|
||||
|
||||
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
|
||||
@@ -47,6 +47,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include <Protocol/SimpleTextInEx.h>
|
||||
#include <Protocol/DriverHealth.h>
|
||||
#include <Protocol/BootLogo.h>
|
||||
#include <Protocol/VariableLock.h>
|
||||
|
||||
#include <Library/UefiDriverEntryPoint.h>
|
||||
#include <Library/PrintLib.h>
|
||||
|
@@ -14,7 +14,7 @@
|
||||
# BDSDxe also maintain the UI for "Boot Manager, Boot Maintaince Manager, Device Manager" which
|
||||
# is used for user to configure boot option or maintain hardware device.
|
||||
#
|
||||
# Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2008 - 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
|
||||
@@ -160,6 +160,7 @@
|
||||
gEfiDriverHealthProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||
gEfiPciIoProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiBootLogoProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||
gEdkiiVariableLockProtocolGuid ## PROTOCOL CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate
|
||||
|
@@ -38,6 +38,17 @@ EFI_BDS_ARCH_PROTOCOL gBds = {
|
||||
|
||||
UINT16 *mBootNext = NULL;
|
||||
|
||||
///
|
||||
/// The read-only variables defined in UEFI Spec.
|
||||
///
|
||||
CHAR16 *mReadOnlyVariables[] = {
|
||||
L"PlatformLangCodes",
|
||||
L"LangCodes",
|
||||
L"BootOptionSupport",
|
||||
L"HwErrRecSupport",
|
||||
L"OsIndicationsSupported"
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Install Boot Device Selection Protocol
|
||||
@@ -459,6 +470,8 @@ BdsEntry (
|
||||
CHAR16 *FirmwareVendor;
|
||||
EFI_STATUS Status;
|
||||
UINT16 BootTimeOut;
|
||||
UINTN Index;
|
||||
EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock;
|
||||
|
||||
//
|
||||
// Insert the performance probe
|
||||
@@ -496,6 +509,18 @@ BdsEntry (
|
||||
//
|
||||
BdsFormalizeEfiGlobalVariable();
|
||||
|
||||
//
|
||||
// Mark the read-only variables if the Variable Lock protocol exists
|
||||
//
|
||||
Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **) &VariableLock);
|
||||
DEBUG ((EFI_D_INFO, "[BdsDxe] Locate Variable Lock protocol - %r\n", Status));
|
||||
if (!EFI_ERROR (Status)) {
|
||||
for (Index = 0; Index < sizeof (mReadOnlyVariables) / sizeof (mReadOnlyVariables[0]); Index++) {
|
||||
Status = VariableLock->RequestToLock (VariableLock, mReadOnlyVariables[Index], &gEfiGlobalVariableGuid);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Report Status Code to indicate connecting drivers will happen
|
||||
//
|
||||
@@ -504,12 +529,6 @@ BdsEntry (
|
||||
(EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS)
|
||||
);
|
||||
|
||||
//
|
||||
// Do the platform init, can be customized by OEM/IBV
|
||||
//
|
||||
PERF_START (NULL, "PlatformBds", "BDS", 0);
|
||||
PlatformBdsInit ();
|
||||
|
||||
InitializeHwErrRecSupport();
|
||||
|
||||
//
|
||||
@@ -539,6 +558,12 @@ BdsEntry (
|
||||
InitializeLanguage (TRUE);
|
||||
InitializeFrontPage (TRUE);
|
||||
|
||||
//
|
||||
// Do the platform init, can be customized by OEM/IBV
|
||||
//
|
||||
PERF_START (NULL, "PlatformBds", "BDS", 0);
|
||||
PlatformBdsInit ();
|
||||
|
||||
//
|
||||
// Set up the device list based on EFI 1.1 variables
|
||||
// process Driver#### and Load the driver's in the
|
||||
|
Reference in New Issue
Block a user