Sunny,
Failure of GetSectionFromFv() only means the BootManagerMenu FFS doesn't have 
UI section.
So it cannot be the indicator of the absence of BootManagerMenu FFS.

Secondly, BDS core assumes firmware would have the Boot Manager Menu. Absence 
is a fatal error I think.
Lots of code calls EfiBootManagerGetBootManagerMenu without checking the 
status, and then directly
use EfiBootManagerBoot to boot to Boot Manager Menu.

Do you meet real case that the Boot Manager Menu needs to be removed from 
firmware?

Regards,
Ray

>-----Original Message-----
>From: Sunny Wang [mailto:sunnyw...@hpe.com]
>Sent: Monday, June 20, 2016 5:44 PM
>To: edk2-devel@lists.01.org
>Cc: el...@hpe.com; Ni, Ruiyu <ruiyu...@intel.com>; Sunny Wang 
><sunnyw...@hpe.com>
>Subject: [PATCH] MdeModulePkg/UefiBootManagerLib: Skip registering 
>BootManagerMenu if its FFS is not found
>
>This is a enhancement.
>For now, if BootManagerMenu FFS can not be found from FV, BDS core code will 
>still register a boot option for it. Then, this
>non-functional boot option will still be booted by user's request (like HotKey 
>or Exit from shell) to cause additional boot time
>and error status code reported. Therefore, it would be good to return 
>EFI_NOT_FOUND status and NULL BootOption pointer
>to skip registering and booting BootManagerMenu boot option for this case.
>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Sunny Wang <sunnyw...@hpe.com>
>---
> MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
>diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
>b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
>index d016517..74b2acc 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) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
>-(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
>+(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<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
>@@ -2164,9 +2164,11 @@ EfiBootManagerRefreshAllBootOption (
>   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.
>
>-  @param  BootOption    Return the boot option of the Boot Manager Menu
>+  @param  BootOption    Return the boot option of the Boot Manager Menu. 
>Return NULL if
>+                        BootManagerMenu FFS section can not be found.
>
>   @retval EFI_SUCCESS   Successfully register the Boot Manager Menu.
>+  @retval EFI_NOT_FOUND BootManagerMenu FFS section can not be found.
>   @retval Status        Return status of gRT->SetVariable (). BootOption 
> still points
>                         to the Boot Manager Menu even the Status is not 
> EFI_SUCCESS.
> **/
>@@ -2190,7 +2192,9 @@ BmRegisterBootManagerMenu (
>              &DescriptionLength
>              );
>   if (EFI_ERROR (Status)) {
>-    Description = NULL;
>+    BootOption = NULL;
>+    DEBUG ((EFI_D_ERROR, "[Bds]BootManagerMenu FFS section can not be found, 
>skip to register
>BootManagerMenu\n"));
>+    return EFI_NOT_FOUND;
>   }
>
>   EfiInitializeFwVolDevicepathNode (&FileNode, PcdGetPtr 
> (PcdBootManagerMenuFile));
>--
>2.5.0.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to