bootefi: allow return without EFI_BOOT_SERVICES.Exit
authorxypron.glpk@gmx.de <xypron.glpk@gmx.de>
Tue, 4 Jul 2017 21:15:21 +0000 (23:15 +0200)
committerAlexander Graf <agraf@suse.de>
Wed, 19 Jul 2017 12:14:40 +0000 (14:14 +0200)
commitb06d8ac39e0f36db4221367623f1908317daa60f
tree9ff2c9d1d5323a0ce7ed24b2f0161416ea9a0cd2
parentcc5b70812f5e3b13ea9072c2dacc939818ef8e66
bootefi: allow return without EFI_BOOT_SERVICES.Exit

The Unified Extensible Firmware Interface Specification, version 2.7,
defines in chapter 2.1.2 - UEFI Application that an EFI application may
either directly return or call EFI_BOOT_SERVICES.Exit().

Unfortunately U-Boot makes the incorrect assumption that
EFI_BOOT_SERVICES.Exit() is always called.

So the following application leads to a memory exception on the aarch64
architecture when returning:

EFI_STATUS efi_main(
  EFI_HANDLE handle,
  EFI_SYSTEM_TABlE systable) {
return EFI_SUCCESS;
}

With this patch the entry point is stored in the image handle.

The new wrapper function do_enter is used to call the EFI entry point.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
cmd/bootefi.c