123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- UEFI, the Unified Extensible Firmware Interface, is a specification
- governing the behaviours of compatible firmware interfaces. It is
- maintained by the UEFI Forum - http://www.uefi.org/.
- UEFI is an evolution of its predecessor 'EFI', so the terms EFI and
- UEFI are used somewhat interchangeably in this document and associated
- source code. As a rule, anything new uses 'UEFI', whereas 'EFI' refers
- to legacy code or specifications.
- UEFI support in Linux
- =====================
- Booting on a platform with firmware compliant with the UEFI specification
- makes it possible for the kernel to support additional features:
- - UEFI Runtime Services
- - Retrieving various configuration information through the standardised
- interface of UEFI configuration tables. (ACPI, SMBIOS, ...)
- For actually enabling [U]EFI support, enable:
- - CONFIG_EFI=y
- - CONFIG_EFI_VARS=y or m
- The implementation depends on receiving information about the UEFI environment
- in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.
- UEFI stub
- =========
- The "stub" is a feature that extends the Image/zImage into a valid UEFI
- PE/COFF executable, including a loader application that makes it possible to
- load the kernel directly from the UEFI shell, boot menu, or one of the
- lightweight bootloaders like Gummiboot or rEFInd.
- The kernel image built with stub support remains a valid kernel image for
- booting in non-UEFI environments.
- UEFI kernel support on ARM
- ==========================
- UEFI kernel support on the ARM architectures (arm and arm64) is only available
- when boot is performed through the stub.
- When booting in UEFI mode, the stub deletes any memory nodes from a provided DT.
- Instead, the kernel reads the UEFI memory map.
- The stub populates the FDT /chosen node with (and the kernel scans for) the
- following parameters:
- ________________________________________________________________________________
- Name | Size | Description
- ================================================================================
- linux,uefi-system-table | 64-bit | Physical address of the UEFI System Table.
- --------------------------------------------------------------------------------
- linux,uefi-mmap-start | 64-bit | Physical address of the UEFI memory map,
- | | populated by the UEFI GetMemoryMap() call.
- --------------------------------------------------------------------------------
- linux,uefi-mmap-size | 32-bit | Size in bytes of the UEFI memory map
- | | pointed to in previous entry.
- --------------------------------------------------------------------------------
- linux,uefi-mmap-desc-size | 32-bit | Size in bytes of each entry in the UEFI
- | | memory map.
- --------------------------------------------------------------------------------
- linux,uefi-mmap-desc-ver | 32-bit | Version of the mmap descriptor format.
- --------------------------------------------------------------------------------
|