__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<!DOCTYPE html>
<html lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>The Unified Extensible Firmware Interface (UEFI) — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/alabaster.css?v=3918102e" />
<script src="../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="vlocks for Bare-Metal Mutual Exclusion" href="vlocks.html" />
<link rel="prev" title="Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)" href="swp_emulation.html" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/index.html">All development-process docs</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../subsystem-apis.html">Subsystems</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">CPU architectures</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../arc/index.html">ARC architecture</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">ARM Architecture</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="arm.html">ARM Linux 2.6 and upper</a></li>
<li class="toctree-l3"><a class="reference internal" href="booting.html">Booting ARM Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="cluster-pm-race-avoidance.html">Cluster-wide Power-up/power-down race avoidance algorithm</a></li>
<li class="toctree-l3"><a class="reference internal" href="firmware.html">Interface for registering and calling firmware-specific operations for ARM</a></li>
<li class="toctree-l3"><a class="reference internal" href="interrupts.html">Interrupts</a></li>
<li class="toctree-l3"><a class="reference internal" href="kernel_mode_neon.html">Kernel mode NEON</a></li>
<li class="toctree-l3"><a class="reference internal" href="kernel_user_helpers.html">Kernel-provided User Helpers</a></li>
<li class="toctree-l3"><a class="reference internal" href="memory.html">Kernel Memory Layout on ARM Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="mem_alignment.html">Memory alignment</a></li>
<li class="toctree-l3"><a class="reference internal" href="tcm.html">ARM TCM (Tightly-Coupled Memory) handling in Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="setup.html">Kernel initialisation parameters on ARM Linux</a></li>
<li class="toctree-l3"><a class="reference internal" href="swp_emulation.html">Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">The Unified Extensible Firmware Interface (UEFI)</a></li>
<li class="toctree-l3"><a class="reference internal" href="vlocks.html">vlocks for Bare-Metal Mutual Exclusion</a></li>
<li class="toctree-l3"><a class="reference internal" href="porting.html">Porting</a></li>
<li class="toctree-l3"><a class="reference internal" href="features.html">Feature status on arm architecture</a></li>
<li class="toctree-l3"><a class="reference internal" href="index.html#soc-specific-documents">SoC-specific documents</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../arm64/index.html">ARM64 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../loongarch/index.html">LoongArch Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../m68k/index.html">m68k Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mips/index.html">MIPS-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nios2/index.html">Nios II Specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../openrisc/index.html">OpenRISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parisc/index.html">PA-RISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../powerpc/index.html">powerpc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../riscv/index.html">RISC-V architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../s390/index.html">s390 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sh/index.html">SuperH Interfaces Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sparc/index.html">Sparc Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../x86/index.html">x86-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../xtensa/index.html">Xtensa Architecture</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/arch/arm/uefi.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="the-unified-extensible-firmware-interface-uefi">
<h1>The Unified Extensible Firmware Interface (UEFI)<a class="headerlink" href="#the-unified-extensible-firmware-interface-uefi" title="Link to this heading">¶</a></h1>
<p>UEFI, the Unified Extensible Firmware Interface, is a specification
governing the behaviours of compatible firmware interfaces. It is
maintained by the UEFI Forum - <a class="reference external" href="http://www.uefi.org/">http://www.uefi.org/</a>.</p>
<p>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.</p>
<section id="uefi-support-in-linux">
<h2>UEFI support in Linux<a class="headerlink" href="#uefi-support-in-linux" title="Link to this heading">¶</a></h2>
<p>Booting on a platform with firmware compliant with the UEFI specification
makes it possible for the kernel to support additional features:</p>
<ul class="simple">
<li><p>UEFI Runtime Services</p></li>
<li><p>Retrieving various configuration information through the standardised
interface of UEFI configuration tables. (ACPI, SMBIOS, ...)</p></li>
</ul>
<p>For actually enabling [U]EFI support, enable:</p>
<ul class="simple">
<li><p>CONFIG_EFI=y</p></li>
<li><p>CONFIG_EFIVAR_FS=y or m</p></li>
</ul>
<p>The implementation depends on receiving information about the UEFI environment
in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.</p>
</section>
<section id="uefi-stub">
<h2>UEFI stub<a class="headerlink" href="#uefi-stub" title="Link to this heading">¶</a></h2>
<p>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.</p>
<p>The kernel image built with stub support remains a valid kernel image for
booting in non-UEFI environments.</p>
</section>
<section id="uefi-kernel-support-on-arm">
<h2>UEFI kernel support on ARM<a class="headerlink" href="#uefi-kernel-support-on-arm" title="Link to this heading">¶</a></h2>
<p>UEFI kernel support on the ARM architectures (arm and arm64) is only available
when boot is performed through the stub.</p>
<p>When booting in UEFI mode, the stub deletes any memory nodes from a provided DT.
Instead, the kernel reads the UEFI memory map.</p>
<p>The stub populates the FDT /chosen node with (and the kernel scans for) the
following parameters:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Name</p></th>
<th class="head"><p>Type</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>linux,uefi-system-table</p></td>
<td><p>64-bit</p></td>
<td><p>Physical address of the UEFI System Table.</p></td>
</tr>
<tr class="row-odd"><td><p>linux,uefi-mmap-start</p></td>
<td><p>64-bit</p></td>
<td><p>Physical address of the UEFI memory map,
populated by the UEFI <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">GetMemoryMap()</span></code> call.</p></td>
</tr>
<tr class="row-even"><td><p>linux,uefi-mmap-size</p></td>
<td><p>32-bit</p></td>
<td><p>Size in bytes of the UEFI memory map
pointed to in previous entry.</p></td>
</tr>
<tr class="row-odd"><td><p>linux,uefi-mmap-desc-size</p></td>
<td><p>32-bit</p></td>
<td><p>Size in bytes of each entry in the UEFI
memory map.</p></td>
</tr>
<tr class="row-even"><td><p>linux,uefi-mmap-desc-ver</p></td>
<td><p>32-bit</p></td>
<td><p>Version of the mmap descriptor format.</p></td>
</tr>
<tr class="row-odd"><td><p>kaslr-seed</p></td>
<td><p>64-bit</p></td>
<td><p>Entropy used to randomize the kernel image
base address location.</p></td>
</tr>
<tr class="row-even"><td><p>bootargs</p></td>
<td><p>String</p></td>
<td><p>Kernel command line</p></td>
</tr>
</tbody>
</table>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../../_sources/arch/arm/uefi.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Folder | 0755 |
|
||
| keystone | Folder | 0755 |
|
|
| nwfpe | Folder | 0755 |
|
|
| omap | Folder | 0755 |
|
|
| pxa | Folder | 0755 |
|
|
| sa1100 | Folder | 0755 |
|
|
| samsung | Folder | 0755 |
|
|
| spear | Folder | 0755 |
|
|
| sti | Folder | 0755 |
|
|
| stm32 | Folder | 0755 |
|
|
| sunxi | Folder | 0755 |
|
|
| vfp | Folder | 0755 |
|
|
| arm.html | File | 21.31 KB | 0644 |
|
| booting.html | File | 20.57 KB | 0644 |
|
| cluster-pm-race-avoidance.html | File | 31.14 KB | 0644 |
|
| features.html | File | 19.66 KB | 0644 |
|
| firmware.html | File | 13.86 KB | 0644 |
|
| index.html | File | 16.01 KB | 0644 |
|
| interrupts.html | File | 18.73 KB | 0644 |
|
| ixp4xx.html | File | 19.27 KB | 0644 |
|
| kernel_mode_neon.html | File | 18.64 KB | 0644 |
|
| kernel_user_helpers.html | File | 20.2 KB | 0644 |
|
| marvell.html | File | 59.02 KB | 0644 |
|
| mem_alignment.html | File | 13.41 KB | 0644 |
|
| memory.html | File | 16.07 KB | 0644 |
|
| microchip.html | File | 20.99 KB | 0644 |
|
| netwinder.html | File | 16.51 KB | 0644 |
|
| porting.html | File | 16.77 KB | 0644 |
|
| setup.html | File | 15 KB | 0644 |
|
| sunxi.html | File | 18.79 KB | 0644 |
|
| swp_emulation.html | File | 11.99 KB | 0644 |
|
| tcm.html | File | 17.34 KB | 0644 |
|
| uefi.html | File | 14.41 KB | 0644 |
|
| vlocks.html | File | 18.73 KB | 0644 |
|