From f4b7b473b4afd0093768905529bfae09a2061d41 Mon Sep 17 00:00:00 2001 From: Rebecca Cran Date: Thu, 20 Jan 2022 05:01:16 +0800 Subject: [PATCH] MdeModulePkg/UefiBootManagerLib: Convert BmLoadOption to Variable Policy Since the Variable Lock protocol is deprecated, convert locking of PlatformRecovery#### in EfiBootManagerLoadOptionToVariable to use the Variable Policy protocol. Cc: Jian J Wang Cc: Liming Gao Cc: Zhichao Gao Cc: Ray Ni Signed-off-by: Rebecca Cran Reviewed-by: Liming Gao --- .../Library/UefiBootManagerLib/BmLoadOption.c | 33 ++++++++++++------- .../Library/UefiBootManagerLib/InternalBm.h | 1 - .../UefiBootManagerLib/UefiBootManagerLib.inf | 3 +- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c index 32a9cbb425..2087f0b91d 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c @@ -9,6 +9,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h" +#include + GLOBAL_REMOVE_IF_UNREFERENCED CHAR16 *mBmLoadOptionName[] = { L"Driver", @@ -169,15 +171,15 @@ EfiBootManagerLoadOptionToVariable ( IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Option ) { - EFI_STATUS Status; - UINTN VariableSize; - UINT8 *Variable; - UINT8 *Ptr; - CHAR16 OptionName[BM_OPTION_NAME_LEN]; - CHAR16 *Description; - CHAR16 NullChar; - EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock; - UINT32 VariableAttributes; + EFI_STATUS Status; + UINTN VariableSize; + UINT8 *Variable; + UINT8 *Ptr; + CHAR16 OptionName[BM_OPTION_NAME_LEN]; + CHAR16 *Description; + CHAR16 NullChar; + EDKII_VARIABLE_POLICY_PROTOCOL *VariablePolicy; + UINT32 VariableAttributes; if ((Option->OptionNumber == LoadOptionNumberUnassigned) || (Option->FilePath == NULL) || @@ -242,9 +244,18 @@ structure. // // Lock the PlatformRecovery#### // - Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **)&VariableLock); + Status = gBS->LocateProtocol (&gEdkiiVariablePolicyProtocolGuid, NULL, (VOID **)&VariablePolicy); if (!EFI_ERROR (Status)) { - Status = VariableLock->RequestToLock (VariableLock, OptionName, &gEfiGlobalVariableGuid); + Status = RegisterBasicVariablePolicy ( + VariablePolicy, + &gEfiGlobalVariableGuid, + OptionName, + VARIABLE_POLICY_NO_MIN_SIZE, + VARIABLE_POLICY_NO_MAX_SIZE, + VARIABLE_POLICY_NO_MUST_ATTR, + VARIABLE_POLICY_NO_CANT_ATTR, + VARIABLE_POLICY_TYPE_LOCK_NOW + ); ASSERT_EFI_ERROR (Status); } diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h index a9b0d485ca..b7dfe2a7e0 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h +++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h @@ -39,7 +39,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include #include -#include #include #include #include diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf index cf5908692f..fe05d5f1cc 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf +++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf @@ -62,6 +62,7 @@ PerformanceLib HiiLib SortLib + VariablePolicyHelperLib [Guids] ## SOMETIMES_CONSUMES ## SystemTable (The identifier of memory type information type in system table) @@ -99,7 +100,7 @@ gEfiDevicePathProtocolGuid ## SOMETIMES_CONSUMES gEfiBootLogoProtocolGuid ## SOMETIMES_CONSUMES gEfiSimpleTextInputExProtocolGuid ## SOMETIMES_CONSUMES - gEdkiiVariableLockProtocolGuid ## SOMETIMES_CONSUMES + gEdkiiVariablePolicyProtocolGuid ## SOMETIMES_CONSUMES gEfiGraphicsOutputProtocolGuid ## SOMETIMES_CONSUMES gEfiUsbIoProtocolGuid ## SOMETIMES_CONSUMES gEfiNvmExpressPassThruProtocolGuid ## SOMETIMES_CONSUMES