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