On 07/03/18 08:37, Ruiyu Ni wrote: > Commit d1de487dd2e77f4741abcbd71d19a8c93971fda0 > "MdeModulePkg/BdsDxe: fall back to a Boot Manager Menu loop before > hanging" > changed BDS core to fall back to UI loop when no bootable option > can be launched. > Now since PlatformBootManagerUnableToBoot() is added, the commit > can be reverted. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ruiyu Ni <ruiyu...@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > --- > MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 60 > +++----------------------------- > 1 file changed, 4 insertions(+), 56 deletions(-) > > diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c > b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c > index 49e403e181..39b643c77a 100644 > --- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c > +++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c > @@ -634,55 +634,6 @@ BdsFormalizeEfiGlobalVariable ( > BdsFormalizeOSIndicationVariable (); > } > > -/** > - Enter an infinite loop of calling the Boot Manager Menu. > - > - This is a last resort alternative to BdsEntry() giving up for good. This > - function never returns. > - > - @param[in] BootManagerMenu The EFI_BOOT_MANAGER_LOAD_OPTION located and/or > - created by the > EfiBootManagerGetBootManagerMenu() > - call in BdsEntry(). > -**/ > -VOID > -BdsBootManagerMenuLoop ( > - IN EFI_BOOT_MANAGER_LOAD_OPTION *BootManagerMenu > - ) > -{ > - EFI_INPUT_KEY Key; > - > - // > - // Normally BdsDxe does not print anything to the system console, but this > is > - // a last resort -- the end-user will likely not see any DEBUG messages > - // logged in this situation. > - // > - // AsciiPrint() will NULL-check gST->ConOut internally. We check gST->ConIn > - // here to see if it makes sense to request and wait for a keypress. > - // > - if (gST->ConIn != NULL) { > - AsciiPrint ( > - "%a: No bootable option or device was found.\n" > - "%a: Press any key to enter the Boot Manager Menu.\n", > - gEfiCallerBaseName, > - gEfiCallerBaseName > - ); > - BdsWaitForSingleEvent (gST->ConIn->WaitForKey, 0); > - > - // > - // Drain any queued keys. > - // > - while (!EFI_ERROR (gST->ConIn->ReadKeyStroke (gST->ConIn, &Key))) { > - // > - // just throw away Key > - // > - } > - } > - > - for (;;) { > - EfiBootManagerBoot (BootManagerMenu); > - } > -} > - > /** > > Service routine for BdsInstance->Entry(). Devices are connected, the > @@ -1081,19 +1032,16 @@ BdsEntry ( > } while (BootSuccess); > } > > + if (BootManagerMenuStatus != EFI_NOT_FOUND) { > + EfiBootManagerFreeLoadOption (&BootManagerMenu); > + } > + > if (!BootSuccess) { > LoadOptions = EfiBootManagerGetLoadOptions (&LoadOptionCount, > LoadOptionTypePlatformRecovery); > ProcessLoadOptions (LoadOptions, LoadOptionCount); > EfiBootManagerFreeLoadOptions (LoadOptions, LoadOptionCount); > } > > - // > - // If BootManagerMenu is available, fall back to it indefinitely. > - // > - if (BootManagerMenuStatus != EFI_NOT_FOUND) { > - BdsBootManagerMenuLoop (&BootManagerMenu); > - } > - > DEBUG ((EFI_D_ERROR, "[Bds] Unable to boot!\n")); > CpuDeadLoop (); > } >
Reviewed-by: Laszlo Ersek <ler...@redhat.com> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel