MdeModulePkg: Wait for input after boot failure
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
This commit is contained in:
committed by
Tim Crawford
parent
552ca5cc88
commit
232f661f99
@ -787,7 +787,6 @@ BootManagerCallback (
|
|||||||
{
|
{
|
||||||
EFI_BOOT_MANAGER_LOAD_OPTION *BootOption;
|
EFI_BOOT_MANAGER_LOAD_OPTION *BootOption;
|
||||||
UINTN BootOptionCount;
|
UINTN BootOptionCount;
|
||||||
EFI_INPUT_KEY Key;
|
|
||||||
|
|
||||||
if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {
|
if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {
|
||||||
//
|
//
|
||||||
@ -831,14 +830,6 @@ BootManagerCallback (
|
|||||||
EfiBootManagerBoot (&BootOption[QuestionId - 1]);
|
EfiBootManagerBoot (&BootOption[QuestionId - 1]);
|
||||||
BmSetConsoleMode (TRUE);
|
BmSetConsoleMode (TRUE);
|
||||||
|
|
||||||
if (EFI_ERROR (BootOption[QuestionId - 1].Status)) {
|
|
||||||
gST->ConOut->OutputString (
|
|
||||||
gST->ConOut,
|
|
||||||
HiiGetString (gBootManagerPrivate.HiiHandle, STRING_TOKEN (STR_ANY_KEY_CONTINUE), NULL)
|
|
||||||
);
|
|
||||||
gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount);
|
EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
@ -1779,6 +1779,8 @@ EfiBootManagerBoot (
|
|||||||
UINTN FileSize;
|
UINTN FileSize;
|
||||||
EFI_BOOT_LOGO_PROTOCOL *BootLogo;
|
EFI_BOOT_LOGO_PROTOCOL *BootLogo;
|
||||||
EFI_EVENT LegacyBootEvent;
|
EFI_EVENT LegacyBootEvent;
|
||||||
|
EFI_INPUT_KEY Key;
|
||||||
|
UINTN Index;
|
||||||
|
|
||||||
if (BootOption == NULL) {
|
if (BootOption == NULL) {
|
||||||
return;
|
return;
|
||||||
@ -1914,6 +1916,23 @@ EfiBootManagerBoot (
|
|||||||
//
|
//
|
||||||
BmReportLoadFailure (EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR, Status);
|
BmReportLoadFailure (EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR, Status);
|
||||||
BootOption->Status = Status;
|
BootOption->Status = Status;
|
||||||
|
|
||||||
|
if (gST->ConOut != NULL) {
|
||||||
|
gST->ConOut->ClearScreen (gST->ConOut);
|
||||||
|
|
||||||
|
AsciiPrint (
|
||||||
|
"Booting from '%s' failed; verify it contains a 64-bit UEFI OS.\n"
|
||||||
|
"\nPress any key to continue booting...\n",
|
||||||
|
BootOption->Description);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (gST->ConIn != NULL) {
|
||||||
|
Status = gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &Index);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
ASSERT (Index == 0);
|
||||||
|
while (!EFI_ERROR (gST->ConIn->ReadKeyStroke (gST->ConIn, &Key))) {}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user