summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Universal/BdsDxe/BdsEntry.c60
1 files 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
@@ -635,55 +635,6 @@ BdsFormalizeEfiGlobalVariable (
}
/**
- 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
consoles are initialized, and the boot options are tried.
@@ -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 ();
}