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:: include/efi_variable.h 97 :internal: 98.. kernel-doc:: lib/efi_loader/efi_variable.c 99 :internal: 100 101UEFI drivers 102------------ 103 104UEFI driver uclass 105~~~~~~~~~~~~~~~~~~ 106.. kernel-doc:: lib/efi_driver/efi_uclass.c 107 :internal: 108 109Block device driver 110~~~~~~~~~~~~~~~~~~~ 111 112.. kernel-doc:: lib/efi_driver/efi_block_device.c 113 :internal: 114 115Protocols 116--------- 117 118Block IO protocol 119~~~~~~~~~~~~~~~~~ 120 121.. kernel-doc:: lib/efi_loader/efi_disk.c 122 :internal: 123 124File protocol 125~~~~~~~~~~~~~ 126 127.. kernel-doc:: lib/efi_loader/efi_file.c 128 :internal: 129 130Graphical output protocol 131~~~~~~~~~~~~~~~~~~~~~~~~~ 132 133.. kernel-doc:: lib/efi_loader/efi_gop.c 134 :internal: 135 136Load file 2 protocol 137~~~~~~~~~~~~~~~~~~~~ 138 139The load file 2 protocol can be used by the Linux kernel to load the initial 140RAM disk. U-Boot can be configured to provide an implementation. 141 142.. kernel-doc:: lib/efi_loader/efi_load_initrd.c 143 :internal: 144 145Network protocols 146~~~~~~~~~~~~~~~~~ 147 148.. kernel-doc:: lib/efi_loader/efi_net.c 149 :internal: 150 151Random number generator protocol 152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 153 154.. kernel-doc:: lib/efi_loader/efi_rng.c 155 :internal: 156 157Text IO protocols 158~~~~~~~~~~~~~~~~~ 159 160.. kernel-doc:: lib/efi_loader/efi_console.c 161 :internal: 162 163Unicode Collation protocol 164~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 166.. kernel-doc:: lib/efi_loader/efi_unicode_collation.c 167 :internal: 168 169Unit testing 170------------ 171 172The following library functions are provided to support writing UEFI unit tests. 173The should not be used elsewhere. 174 175.. kernel-doc:: include/efi_selftest.h 176 :internal: 177