€•@Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ!/translations/zh_CN/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/zh_TW/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/it_IT/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ja_JP/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ko_KR/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/pt_BR/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/sp_SP/arch/arm/uefi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ0The Unified Extensible Firmware Interface (UEFI)”h]”hŒ0The Unified Extensible Firmware Interface (UEFI)”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ;/var/lib/git/docbuild/linux/Documentation/arch/arm/uefi.rst”h´KubhŒ paragraph”“”)”}”(hŒºUEFI, the Unified Extensible Firmware Interface, is a specification governing the behaviours of compatible firmware interfaces. It is maintained by the UEFI Forum - http://www.uefi.org/.”h]”(hŒ¥UEFI, the Unified Extensible Firmware Interface, is a specification governing the behaviours of compatible firmware interfaces. It is maintained by the UEFI Forum - ”…””}”(hhÍh²hh³Nh´NubhŒ reference”“”)”}”(hŒhttp://www.uefi.org/”h]”hŒhttp://www.uefi.org/”…””}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”hÙuh1hÕhhÍubhŒ.”…””}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒó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.”h]”hŒÿ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.”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒUEFI support in Linux”h]”hŒUEFI support in Linux”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhþh²hh³hÊh´KubhÌ)”}”(hŒŠBooting on a platform with firmware compliant with the UEFI specification makes it possible for the kernel to support additional features:”h]”hŒŠBooting on a platform with firmware compliant with the UEFI specification makes it possible for the kernel to support additional features:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhþh²hubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒUEFI Runtime Services”h]”hÌ)”}”(hj&h]”hŒUEFI Runtime Services”…””}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjh²hh³hÊh´Nubj#)”}”(hŒ‚Retrieving various configuration information through the standardised interface of UEFI configuration tables. (ACPI, SMBIOS, ...) ”h]”hÌ)”}”(hŒRetrieving various configuration information through the standardised interface of UEFI configuration tables. (ACPI, SMBIOS, ...)”h]”hŒRetrieving various configuration information through the standardised interface of UEFI configuration tables. (ACPI, SMBIOS, ...)”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÊh´Khhþh²hubhÌ)”}”(hŒ-For actually enabling [U]EFI support, enable:”h]”hŒ-For actually enabling [U]EFI support, enable:”…””}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhþh²hubj)”}”(hhh]”(j#)”}”(hŒ CONFIG_EFI=y”h]”hÌ)”}”(hjnh]”hŒ CONFIG_EFI=y”…””}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjih²hh³hÊh´Nubj#)”}”(hŒCONFIG_EFIVAR_FS=y or m ”h]”hÌ)”}”(hŒCONFIG_EFIVAR_FS=y or m”h]”hŒCONFIG_EFIVAR_FS=y or m”…””}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjih²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jYjZuh1jh³hÊh´Khhþh²hubhÌ)”}”(hŒ–The implementation depends on receiving information about the UEFI environment in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.”h]”hŒ–The implementation depends on receiving information about the UEFI environment in a Flattened Device Tree (FDT) - so is only available with CONFIG_OF.”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhþh²hubeh}”(h]”Œuefi-support-in-linux”ah ]”h"]”Œuefi support in linux”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)”}”(hhh]”(h»)”}”(hŒ UEFI stub”h]”hŒ UEFI stub”…””}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj·h²hh³hÊh´K ubhÌ)”}”(hX 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.”h]”hXThe “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.”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K!hj·h²hubhÌ)”}”(hŒkThe kernel image built with stub support remains a valid kernel image for booting in non-UEFI environments.”h]”hŒkThe kernel image built with stub support remains a valid kernel image for booting in non-UEFI environments.”…””}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K&hj·h²hubeh}”(h]”Œ uefi-stub”ah ]”h"]”Œ uefi stub”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)”}”(hhh]”(h»)”}”(hŒUEFI kernel support on ARM”h]”hŒUEFI kernel support on ARM”…””}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjìh²hh³hÊh´K*ubhÌ)”}”(hŒwUEFI kernel support on the ARM architectures (arm and arm64) is only available when boot is performed through the stub.”h]”hŒwUEFI kernel support on the ARM architectures (arm and arm64) is only available when boot is performed through the stub.”…””}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hjìh²hubhÌ)”}”(hŒWhen booting in UEFI mode, the stub deletes any memory nodes from a provided DT. Instead, the kernel reads the UEFI memory map.”h]”hŒWhen booting in UEFI mode, the stub deletes any memory nodes from a provided DT. Instead, the kernel reads the UEFI memory map.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K.hjìh²hubhÌ)”}”(hŒaThe stub populates the FDT /chosen node with (and the kernel scans for) the following parameters:”h]”hŒaThe stub populates the FDT /chosen node with (and the kernel scans for) the following parameters:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K1hjìh²hubhŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j1hj.ubj2)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j1hj.ubj2)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K+uh1j1hj.ubhŒthead”“”)”}”(hhh]”hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”hÌ)”}”(hŒName”h]”hŒName”…””}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjXubj\)”}”(hhh]”hÌ)”}”(hŒType”h]”hŒType”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjXubj\)”}”(hhh]”hÌ)”}”(hŒ Description”h]”hŒ Description”…””}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jVhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj.ubhŒtbody”“”)”}”(hhh]”(jW)”}”(hhh]”(j\)”}”(hhh]”hÌ)”}”(hŒlinux,uefi-system-table”h]”hŒlinux,uefi-system-table”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj³ubj\)”}”(hhh]”hÌ)”}”(hŒ64-bit”h]”hŒ64-bit”…””}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj³ubj\)”}”(hhh]”hÌ)”}”(hŒ*Physical address of the UEFI System Table.”h]”hŒ*Physical address of the UEFI System Table.”…””}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jVhj°ubjW)”}”(hhh]”(j\)”}”(hhh]”hÌ)”}”(hŒlinux,uefi-mmap-start”h]”hŒlinux,uefi-mmap-start”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubj\)”}”(hhh]”hÌ)”}”(hŒ64-bit”h]”hŒ64-bit”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubj\)”}”(hhh]”hÌ)”}”(hŒSPhysical address of the UEFI memory map, populated by the UEFI GetMemoryMap() call.”h]”hŒSPhysical address of the UEFI memory map, populated by the UEFI GetMemoryMap() call.”…””}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K9hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jVhj°ubjW)”}”(hhh]”(j\)”}”(hhh]”hÌ)”}”(hŒlinux,uefi-mmap-size”h]”hŒlinux,uefi-mmap-size”…””}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K