2 # Copyright (C) 2015 Google, Inc
4 # SPDX-License-Identifier: GPL-2.0+
9 This document provides information about the implementation of the UEFI API [1]
13 =========== Table of Contents ===========
24 With this API support in place, you can run any UEFI payload (such as the Linux
25 kernel, grub2 or gummiboot) on U-Boot. This dramatically simplifies boot loader
26 configuration, as U-Boot based systems now look and feel (almost) the same way
27 as TianoCore based systems.
32 EFI support for 32bit ARM and AArch64 is already included in U-Boot. All you
38 in your .config file and you will automatically get a bootefi command to run
39 an efi application as well as snippet in the default distro boot script that
40 scans for removable media efi binaries as fallback.
45 I am successfully able to run grub2 and Linux EFI binaries with this code on
46 ARMv7 as well as AArch64 systems.
48 When enabled, the resulting U-Boot binary only grows by ~10KB, so it's very
51 All storage devices are directly accessible from the uEFI payload
53 Removable media booting (search for /efi/boot/boota{a64,arm}.efi) is supported.
55 Simple use cases like "Plug this SD card into my ARM device and it just
56 boots into grub which boots into Linux", work very well.
62 You can run a simple 'hello world' EFI program in U-Boot.
63 Enable the option CONFIG_CMD_BOOTEFI_HELLO.
65 Then you can boot into U-Boot and type:
69 The 'hello world EFI' program will then run, print a message and exit.
75 Of course, there are still a few things one could do on top:
77 - Improve disk media detection (don't scan, use what information we
79 - Add EFI variable support using NVRAM
82 - Network device support
83 - Support for payload exit
84 - Payload Watchdog support