From: Zhiguang Liu Date: Mon, 26 Apr 2021 08:25:39 +0000 (+0800) Subject: MdeModulePkg: Retrieve boot manager menu from any fv X-Git-Tag: edk2-stable202108~282 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=42ec0a315b8a2f445b7a7d74b8d78965f1dff8f6 MdeModulePkg: Retrieve boot manager menu from any fv REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3384 Currently, UefiBootManagerLib has the below assumption: Assume the BootManagerMenuFile is in the same FV as the module links to this library. It has some limitation now, so remove the assumption. Cc: Jian J Wang Cc: Hao A Wu Cc: Zhichao Gao Cc: Ray Ni Reviewed-by: Hao A Wu Reviewed-by: Ray Ni Signed-off-by: Zhiguang Liu --- diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index 6cc34d29c0..bef41ae102 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -2,7 +2,7 @@ Library functions which relates with booting. Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. -Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved.
+Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.
(C) Copyright 2015-2021 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2385,7 +2385,8 @@ EfiBootManagerRefreshAllBootOption ( This function is called to get or create the boot option for the Boot Manager Menu. The Boot Manager Menu is shown after successfully booting a boot option. - Assume the BootManagerMenuFile is in the same FV as the module links to this library. + This function will first try to search the BootManagerMenuFile is in the same FV as + the module links to this library. If fails, it will search in all FVs. @param BootOption Return the boot option of the Boot Manager Menu @@ -2437,7 +2438,7 @@ BmRegisterBootManagerMenu ( if (DevicePath == NULL) { Data = NULL; - Status = GetSectionFromFv ( + Status = GetSectionFromAnyFv ( PcdGetPtr (PcdBootManagerMenuFile), EFI_SECTION_PE32, 0, @@ -2455,7 +2456,7 @@ BmRegisterBootManagerMenu ( // // Get BootManagerMenu application's description from EFI User Interface Section. // - Status = GetSectionFromFv ( + Status = GetSectionFromAnyFv ( PcdGetPtr (PcdBootManagerMenuFile), EFI_SECTION_USER_INTERFACE, 0,