]> git.proxmox.com Git - mirror_edk2.git/commit
ArmPkg/PlatformBootManagerLib: regenerate boot options on boot failure
authorArd Biesheuvel <ard.biesheuvel@arm.com>
Tue, 16 Jun 2020 17:35:24 +0000 (19:35 +0200)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 17 Jun 2020 18:28:29 +0000 (18:28 +0000)
commit2d233af64b8f73d1b1e138b302e6344f7c2e0f4e
tree6036ffa115f589e8730ef9eaac674c7ef0acb7b6
parent58ae92a993687d913aa6dd00ef3497a1bc5f6c40
ArmPkg/PlatformBootManagerLib: regenerate boot options on boot failure

One of the side effects of the recent changes to PlatformBootManagerLib
changes to avoid connecting all devices on every boot is that we no
longer default to network boot on a virgin boot, but end up in the
UiApp menu. At this point, the UiApp will instantiate the autogenerated
boot options that we used to rely on as before, but since we are already
sitting idle in the root UiApp menu at that point, it does break the
unattended boot case where devices are expected to attempt a network
boot on the very first power on.

Let's work around this by refreshing all boot options explicitly in
the UnableToBoot() handler, and rebooting the system if doing so
resulted in a change to the total number of configured boot options.
This way, we ultimately end up in the UiApp as before if no boot
options could be started, but only after all the autogenerated ones
have been attempted as well.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Andrei Warkentin <awarkentin@vmware.com>
ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c