177 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
.. SPDX-License-Identifier: GPL-2.0+
 | 
						|
 | 
						|
UEFI subsystem
 | 
						|
==============
 | 
						|
 | 
						|
Lauching UEFI images
 | 
						|
--------------------
 | 
						|
 | 
						|
Bootefi command
 | 
						|
~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
The bootefi command is used to start UEFI applications or to install UEFI
 | 
						|
drivers. It takes two parameters
 | 
						|
 | 
						|
    bootefi <image address> [fdt address]
 | 
						|
 | 
						|
* image address - the memory address of the UEFI binary
 | 
						|
* fdt address - the memory address of the flattened device tree
 | 
						|
 | 
						|
The environment variable 'bootargs' is passed as load options in the UEFI system
 | 
						|
table. The Linux kernel EFI stub uses the load options as command line
 | 
						|
arguments.
 | 
						|
 | 
						|
.. kernel-doc:: cmd/bootefi.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Boot manager
 | 
						|
~~~~~~~~~~~~
 | 
						|
 | 
						|
The UEFI specification foresees to define boot entries and boot sequence via UEFI
 | 
						|
variables. Booting according to these variables is possible via
 | 
						|
 | 
						|
    bootefi bootmgr [fdt address]
 | 
						|
 | 
						|
* fdt address - the memory address of the flattened device tree
 | 
						|
 | 
						|
The relevant variables are:
 | 
						|
 | 
						|
* Boot0000-BootFFFF define boot entries
 | 
						|
* BootNext specifies next boot option to be booted
 | 
						|
* BootOrder specifies in which sequence the boot options shall be tried if
 | 
						|
  BootNext is not defined or booting via BootNext fails
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_bootmgr.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Efidebug command
 | 
						|
~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
The efidebug command is used to set and display boot options as well as to
 | 
						|
display information about internal data of the UEFI subsystem (devices,
 | 
						|
drivers, handles, loaded images, and the memory map).
 | 
						|
 | 
						|
.. kernel-doc:: cmd/efidebug.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Initialization of the UEFI sub-system
 | 
						|
-------------------------------------
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_setup.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Boot services
 | 
						|
-------------
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_boottime.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Image relocation
 | 
						|
~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_image_loader.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Memory services
 | 
						|
~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_memory.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
SetWatchdogTimer service
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_watchdog.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Runtime services
 | 
						|
----------------
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_runtime.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Variable services
 | 
						|
~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: include/efi_variable.h
 | 
						|
   :internal:
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_variable.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
UEFI drivers
 | 
						|
------------
 | 
						|
 | 
						|
UEFI driver uclass
 | 
						|
~~~~~~~~~~~~~~~~~~
 | 
						|
.. kernel-doc:: lib/efi_driver/efi_uclass.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Block device driver
 | 
						|
~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_driver/efi_block_device.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Protocols
 | 
						|
---------
 | 
						|
 | 
						|
Block IO protocol
 | 
						|
~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_disk.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
File protocol
 | 
						|
~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_file.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Graphical output protocol
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_gop.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Load file 2 protocol
 | 
						|
~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
The load file 2 protocol can be used by the Linux kernel to load the initial
 | 
						|
RAM disk. U-Boot can be configured to provide an implementation.
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_load_initrd.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Network protocols
 | 
						|
~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_net.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Random number generator protocol
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_rng.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Text IO protocols
 | 
						|
~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_console.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Unicode Collation protocol
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
.. kernel-doc:: lib/efi_loader/efi_unicode_collation.c
 | 
						|
   :internal:
 | 
						|
 | 
						|
Unit testing
 | 
						|
------------
 | 
						|
 | 
						|
The following library functions are provided to support writing UEFI unit tests.
 | 
						|
The should not be used elsewhere.
 | 
						|
 | 
						|
.. kernel-doc:: include/efi_selftest.h
 | 
						|
   :internal:
 |