summaryrefslogtreecommitdiffstats
path: root/ArmPkg
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@arm.com>2020-05-28 11:17:38 +0200
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-06-06 07:49:42 +0000
commit40e2e3ca33f93f5d45b469bd7aa486b1423ce9ad (patch)
tree0be1195cb8242241c4674a0f81b185ed61c069cb /ArmPkg
parent321b07888973fd089337656fd975c0527c275b35 (diff)
downloadedk2-40e2e3ca33f93f5d45b469bd7aa486b1423ce9ad.tar.gz
edk2-40e2e3ca33f93f5d45b469bd7aa486b1423ce9ad.tar.bz2
edk2-40e2e3ca33f93f5d45b469bd7aa486b1423ce9ad.zip
ArmPkg/PlatformBootManagerLib: fall back to the UiApp on boot failure
As a last resort, drop into the UiApp application when no active boot options could be started. Doing so will connect all devices, and so it will allow the user to enter the Boot Manager submenu and pick a network or removable disk option. Note that this only occurs if even the default removable filepath could not be booted (e.g., \EFI\BOOT\BOOTAA64.EFI on AArch64) Signed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Diffstat (limited to 'ArmPkg')
-rw-r--r--ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c b/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c
index 23c925bbdb..85cb32f6d7 100644
--- a/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c
+++ b/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c
@@ -830,5 +830,15 @@ PlatformBootManagerUnableToBoot (
VOID
)
{
- return;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION BootManagerMenu;
+
+ Status = EfiBootManagerGetBootManagerMenu (&BootManagerMenu);
+ if (EFI_ERROR (Status)) {
+ return;
+ }
+
+ for (;;) {
+ EfiBootManagerBoot (&BootManagerMenu);
+ }
}