BdsFormalizeOSIndicationVariable ();\r
}\r
\r
-/**\r
- Enter an infinite loop of calling the Boot Manager Menu.\r
-\r
- This is a last resort alternative to BdsEntry() giving up for good. This\r
- function never returns.\r
-\r
- @param[in] BootManagerMenu The EFI_BOOT_MANAGER_LOAD_OPTION located and/or\r
- created by the EfiBootManagerGetBootManagerMenu()\r
- call in BdsEntry().\r
-**/\r
-VOID\r
-BdsBootManagerMenuLoop (\r
- IN EFI_BOOT_MANAGER_LOAD_OPTION *BootManagerMenu\r
- )\r
-{\r
- EFI_INPUT_KEY Key;\r
-\r
- //\r
- // Normally BdsDxe does not print anything to the system console, but this is\r
- // a last resort -- the end-user will likely not see any DEBUG messages\r
- // logged in this situation.\r
- //\r
- // AsciiPrint() will NULL-check gST->ConOut internally. We check gST->ConIn\r
- // here to see if it makes sense to request and wait for a keypress.\r
- //\r
- if (gST->ConIn != NULL) {\r
- AsciiPrint (\r
- "%a: No bootable option or device was found.\n"\r
- "%a: Press any key to enter the Boot Manager Menu.\n",\r
- gEfiCallerBaseName,\r
- gEfiCallerBaseName\r
- );\r
- BdsWaitForSingleEvent (gST->ConIn->WaitForKey, 0);\r
-\r
- //\r
- // Drain any queued keys.\r
- //\r
- while (!EFI_ERROR (gST->ConIn->ReadKeyStroke (gST->ConIn, &Key))) {\r
- //\r
- // just throw away Key\r
- //\r
- }\r
- }\r
-\r
- for (;;) {\r
- EfiBootManagerBoot (BootManagerMenu);\r
- }\r
-}\r
-\r
/**\r
\r
Service routine for BdsInstance->Entry(). Devices are connected, the\r
} while (BootSuccess);\r
}\r
\r
+ if (BootManagerMenuStatus != EFI_NOT_FOUND) {\r
+ EfiBootManagerFreeLoadOption (&BootManagerMenu);\r
+ }\r
+\r
if (!BootSuccess) {\r
LoadOptions = EfiBootManagerGetLoadOptions (&LoadOptionCount, LoadOptionTypePlatformRecovery);\r
ProcessLoadOptions (LoadOptions, LoadOptionCount);\r
EfiBootManagerFreeLoadOptions (LoadOptions, LoadOptionCount);\r
}\r
\r
- //\r
- // If BootManagerMenu is available, fall back to it indefinitely.\r
- //\r
- if (BootManagerMenuStatus != EFI_NOT_FOUND) {\r
- BdsBootManagerMenuLoop (&BootManagerMenu);\r
- }\r
-\r
DEBUG ((EFI_D_ERROR, "[Bds] Unable to boot!\n"));\r
CpuDeadLoop ();\r
}\r