Alexander Graf of SuSE has been adding EFI support to U-Boot. He also just added a new boot loader command, ‘bootefi’, as well:
[PATCH v6 19/30] efi_loader: Add “bootefi” command
In order to execute an EFI application, we need to bridge the gap between U-Boot’s notion of executing images and EFI’s notion of doing the same. The best path forward IMHO here is to stick completely to the way U-Boot deals with payloads. You manually load them using whatever method to RAM and then have a simple boot command to execute them. So in our case, you would do
# load mmc 0:1 $loadaddr grub.efi
# bootefi $loadaddr
which then gets you into a grub shell. Fdt information known to U-boot via the fdt addr command is also passed to the EFI payload.
Tom Rini of the U-Boot project also just posted a message saying that the EFI patches have been mostly applied:
EFI loader support largely enabled
What I mean by the subject is that with the EFI loader patches enabled U-Boot itself (not SPL) now includes the EFI loader and required bits on ARM/aarch64. This is in general I think a good thing. I’ve however disabled it on a few boards due to size constraints. This is an average gain of ~12KiB in U-Boot proper. I fully expect a number of platform patches opting out of this support due to it just not being a real usecase and I am agreeable to talking about making it not enabled by default. So, lets kick things off.
For more information, see the U-Boot sources or mailing list archives: