xref: /openbmc/linux/Documentation/arch/arm/uefi.rst (revision b4ba5e5e)
1e790a4ceSJonathan Corbet================================================
2e790a4ceSJonathan CorbetThe Unified Extensible Firmware Interface (UEFI)
3e790a4ceSJonathan Corbet================================================
4e790a4ceSJonathan Corbet
5e790a4ceSJonathan CorbetUEFI, the Unified Extensible Firmware Interface, is a specification
6e790a4ceSJonathan Corbetgoverning the behaviours of compatible firmware interfaces. It is
7e790a4ceSJonathan Corbetmaintained by the UEFI Forum - http://www.uefi.org/.
8e790a4ceSJonathan Corbet
9e790a4ceSJonathan CorbetUEFI is an evolution of its predecessor 'EFI', so the terms EFI and
10e790a4ceSJonathan CorbetUEFI are used somewhat interchangeably in this document and associated
11e790a4ceSJonathan Corbetsource code. As a rule, anything new uses 'UEFI', whereas 'EFI' refers
12e790a4ceSJonathan Corbetto legacy code or specifications.
13e790a4ceSJonathan Corbet
14e790a4ceSJonathan CorbetUEFI support in Linux
15e790a4ceSJonathan Corbet=====================
16e790a4ceSJonathan CorbetBooting on a platform with firmware compliant with the UEFI specification
17e790a4ceSJonathan Corbetmakes it possible for the kernel to support additional features:
18e790a4ceSJonathan Corbet
19e790a4ceSJonathan Corbet- UEFI Runtime Services
20e790a4ceSJonathan Corbet- Retrieving various configuration information through the standardised
21e790a4ceSJonathan Corbet  interface of UEFI configuration tables. (ACPI, SMBIOS, ...)
22e790a4ceSJonathan Corbet
23e790a4ceSJonathan CorbetFor actually enabling [U]EFI support, enable:
24e790a4ceSJonathan Corbet
25e790a4ceSJonathan Corbet- CONFIG_EFI=y
26e790a4ceSJonathan Corbet- CONFIG_EFIVAR_FS=y or m
27e790a4ceSJonathan Corbet
28e790a4ceSJonathan CorbetThe implementation depends on receiving information about the UEFI environment
29e790a4ceSJonathan Corbetin a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.
30e790a4ceSJonathan Corbet
31e790a4ceSJonathan CorbetUEFI stub
32e790a4ceSJonathan Corbet=========
33e790a4ceSJonathan CorbetThe "stub" is a feature that extends the Image/zImage into a valid UEFI
34e790a4ceSJonathan CorbetPE/COFF executable, including a loader application that makes it possible to
35e790a4ceSJonathan Corbetload the kernel directly from the UEFI shell, boot menu, or one of the
36e790a4ceSJonathan Corbetlightweight bootloaders like Gummiboot or rEFInd.
37e790a4ceSJonathan Corbet
38e790a4ceSJonathan CorbetThe kernel image built with stub support remains a valid kernel image for
39e790a4ceSJonathan Corbetbooting in non-UEFI environments.
40e790a4ceSJonathan Corbet
41e790a4ceSJonathan CorbetUEFI kernel support on ARM
42e790a4ceSJonathan Corbet==========================
43e790a4ceSJonathan CorbetUEFI kernel support on the ARM architectures (arm and arm64) is only available
44e790a4ceSJonathan Corbetwhen boot is performed through the stub.
45e790a4ceSJonathan Corbet
46e790a4ceSJonathan CorbetWhen booting in UEFI mode, the stub deletes any memory nodes from a provided DT.
47e790a4ceSJonathan CorbetInstead, the kernel reads the UEFI memory map.
48e790a4ceSJonathan Corbet
49e790a4ceSJonathan CorbetThe stub populates the FDT /chosen node with (and the kernel scans for) the
50e790a4ceSJonathan Corbetfollowing parameters:
51e790a4ceSJonathan Corbet
52e790a4ceSJonathan Corbet==========================  ======   ===========================================
53*b4ba5e5eSAlexandre GhitiName                        Type     Description
54e790a4ceSJonathan Corbet==========================  ======   ===========================================
55e790a4ceSJonathan Corbetlinux,uefi-system-table     64-bit   Physical address of the UEFI System Table.
56e790a4ceSJonathan Corbet
57e790a4ceSJonathan Corbetlinux,uefi-mmap-start       64-bit   Physical address of the UEFI memory map,
58e790a4ceSJonathan Corbet                                     populated by the UEFI GetMemoryMap() call.
59e790a4ceSJonathan Corbet
60e790a4ceSJonathan Corbetlinux,uefi-mmap-size        32-bit   Size in bytes of the UEFI memory map
61e790a4ceSJonathan Corbet                                     pointed to in previous entry.
62e790a4ceSJonathan Corbet
63e790a4ceSJonathan Corbetlinux,uefi-mmap-desc-size   32-bit   Size in bytes of each entry in the UEFI
64e790a4ceSJonathan Corbet                                     memory map.
65e790a4ceSJonathan Corbet
66e790a4ceSJonathan Corbetlinux,uefi-mmap-desc-ver    32-bit   Version of the mmap descriptor format.
67e790a4ceSJonathan Corbet
68e790a4ceSJonathan Corbetkaslr-seed                  64-bit   Entropy used to randomize the kernel image
69e790a4ceSJonathan Corbet                                     base address location.
70*b4ba5e5eSAlexandre Ghiti
71*b4ba5e5eSAlexandre Ghitibootargs                    String   Kernel command line
72e790a4ceSJonathan Corbet==========================  ======   ===========================================
73