From 42ec0a315b8a2f445b7a7d74b8d78965f1dff8f6 Mon Sep 17 00:00:00 2001 From: Zhiguang Liu Date: Mon, 26 Apr 2021 16:25:39 +0800 Subject: [PATCH] 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 --- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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, -- 2.39.2