1.. SPDX-License-Identifier: GPL-2.0+ 2 3UEFI subsystem 4============== 5 6Lauching UEFI images 7-------------------- 8 9Bootefi command 10~~~~~~~~~~~~~~~ 11 12The bootefi command is used to start UEFI applications or to install UEFI 13drivers. It takes two parameters 14 15 bootefi <image address> [fdt address] 16 17* image address - the memory address of the UEFI binary 18* fdt address - the memory address of the flattened device tree 19 20The environment variable 'bootargs' is passed as load options in the UEFI system 21table. The Linux kernel EFI stub uses the load options as command line 22arguments. 23 24.. kernel-doc:: cmd/bootefi.c 25 :internal: 26 27Boot manager 28~~~~~~~~~~~~ 29 30The UEFI specification foresees to define boot entries and boot sequence via UEFI 31variables. Booting according to these variables is possible via 32 33 bootefi bootmgr [fdt address] 34 35* fdt address - the memory address of the flattened device tree 36 37The relevant variables are: 38 39* Boot0000-BootFFFF define boot entries 40* BootNext specifies next boot option to be booted 41* BootOrder specifies in which sequence the boot options shall be tried if 42 BootNext is not defined or booting via BootNext fails 43 44.. kernel-doc:: lib/efi_loader/efi_bootmgr.c 45 :internal: 46 47Efidebug command 48~~~~~~~~~~~~~~~~ 49 50The efidebug command is used to set and display boot options as well as to 51display information about internal data of the UEFI subsystem (devices, 52drivers, handles, loaded images, and the memory map). 53 54.. kernel-doc:: cmd/efidebug.c 55 :internal: 56 57Initialization of the UEFI sub-system 58------------------------------------- 59 60.. kernel-doc:: lib/efi_loader/efi_setup.c 61 :internal: 62 63Boot services 64------------- 65 66.. kernel-doc:: lib/efi_loader/efi_boottime.c 67 :internal: 68 69Image relocation 70~~~~~~~~~~~~~~~~ 71 72.. kernel-doc:: lib/efi_loader/efi_image_loader.c 73 :internal: 74 75Memory services 76~~~~~~~~~~~~~~~ 77 78.. kernel-doc:: lib/efi_loader/efi_memory.c 79 :internal: 80 81SetWatchdogTimer service 82~~~~~~~~~~~~~~~~~~~~~~~~ 83 84.. kernel-doc:: lib/efi_loader/efi_watchdog.c 85 :internal: 86 87Runtime services 88---------------- 89 90.. kernel-doc:: lib/efi_loader/efi_runtime.c 91 :internal: 92 93Variable services 94~~~~~~~~~~~~~~~~~ 95 96.. kernel-doc:: lib/efi_loader/efi_variable.c 97 :internal: 98 99UEFI drivers 100------------ 101 102UEFI driver uclass 103~~~~~~~~~~~~~~~~~~ 104.. kernel-doc:: lib/efi_driver/efi_uclass.c 105 :internal: 106 107Block device driver 108~~~~~~~~~~~~~~~~~~~ 109 110.. kernel-doc:: lib/efi_driver/efi_block_device.c 111 :internal: 112 113Protocols 114--------- 115 116Block IO protocol 117~~~~~~~~~~~~~~~~~ 118 119.. kernel-doc:: lib/efi_loader/efi_disk.c 120 :internal: 121 122File protocol 123~~~~~~~~~~~~~ 124 125.. kernel-doc:: lib/efi_loader/efi_file.c 126 :internal: 127 128Graphical output protocol 129~~~~~~~~~~~~~~~~~~~~~~~~~ 130 131.. kernel-doc:: lib/efi_loader/efi_gop.c 132 :internal: 133 134Load file 2 protocol 135~~~~~~~~~~~~~~~~~~~~ 136 137The load file 2 protocol can be used by the Linux kernel to load the initial 138RAM disk. U-Boot can be configured to provide an implementation. 139 140.. kernel-doc:: lib/efi_loader/efi_load_initrd.c 141 :internal: 142 143Network protocols 144~~~~~~~~~~~~~~~~~ 145 146.. kernel-doc:: lib/efi_loader/efi_net.c 147 :internal: 148 149Random number generator protocol 150~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 151 152.. kernel-doc:: lib/efi_loader/efi_rng.c 153 :internal: 154 155Text IO protocols 156~~~~~~~~~~~~~~~~~ 157 158.. kernel-doc:: lib/efi_loader/efi_console.c 159 :internal: 160 161Unicode Collation protocol 162~~~~~~~~~~~~~~~~~~~~~~~~~~ 163 164.. kernel-doc:: lib/efi_loader/efi_unicode_collation.c 165 :internal: 166 167Unit testing 168------------ 169 170The following library functions are provided to support writing UEFI unit tests. 171The should not be used elsewhere. 172 173.. kernel-doc:: include/efi_selftest.h 174 :internal: 175