diff --git a/MdeModulePkg/Library/BootManagerUiLib/BootManager.c b/MdeModulePkg/Library/BootManagerUiLib/BootManager.c index 4b2c4c77a1..ae26db1de7 100644 --- a/MdeModulePkg/Library/BootManagerUiLib/BootManager.c +++ b/MdeModulePkg/Library/BootManagerUiLib/BootManager.c @@ -787,7 +787,6 @@ BootManagerCallback ( { EFI_BOOT_MANAGER_LOAD_OPTION *BootOption; UINTN BootOptionCount; - EFI_INPUT_KEY Key; if (Action == EFI_BROWSER_ACTION_FORM_OPEN) { // @@ -831,14 +830,6 @@ BootManagerCallback ( EfiBootManagerBoot (&BootOption[QuestionId - 1]); 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); return EFI_SUCCESS; diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index e801fa80a7..d4781ab469 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1779,6 +1779,8 @@ EfiBootManagerBoot ( UINTN FileSize; EFI_BOOT_LOGO_PROTOCOL *BootLogo; EFI_EVENT LegacyBootEvent; + EFI_INPUT_KEY Key; + UINTN Index; if (BootOption == NULL) { return; @@ -1914,6 +1916,23 @@ EfiBootManagerBoot ( // BmReportLoadFailure (EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR, 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; } }