4 bool "Support running UEFI applications"
5 depends on OF_LIBFDT && ( \
6 ARM && (SYS_CPU = arm1136 || \
10 X86 || RISCV || SANDBOX)
11 # We need EFI_STUB_64BIT to be set on x86_64 with EFI_STUB
12 depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
13 # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
14 depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
16 default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
19 # We need to send DM events, dynamically, in the EFI block driver
27 imply USB_KEYBOARD_FN_KEYS
30 Select this option if you want to run UEFI applications (like GNU
31 GRUB or iPXE) on top of U-Boot. If this option is enabled, U-Boot
32 will expose the UEFI API to a loaded application, enabling it to
33 reuse U-Boot's device drivers.
37 config EFI_BINARY_EXEC
38 bool "Execute UEFI binary"
41 Select this option if you want to execute the UEFI binary after
42 loading it with U-Boot load commands or other methods.
43 You may enable CMD_BOOTEFI_BINARY so that you can use bootefi
46 config EFI_SECURE_BOOT
47 bool "Enable EFI secure boot support"
48 depends on EFI_LOADER && FIT_SIGNATURE
52 select RSA_VERIFY_WITH_PKEY
53 select IMAGE_SIGN_INFO
54 select ASYMMETRIC_KEY_TYPE
55 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
56 select X509_CERTIFICATE_PARSER
57 select PKCS7_MESSAGE_PARSER
60 select EFI_SIGNATURE_SUPPORT
62 Select this option to enable EFI secure boot support.
63 Once SecureBoot mode is enforced, any EFI binary can run only if
64 it is signed with a trusted key. To do that, you need to install,
65 at least, PK, KEK and db.
67 config EFI_SIGNATURE_SUPPORT
73 bool "GetTime() runtime service"
77 Provide the GetTime() runtime service at boottime. This service
78 can be used by an EFI application to read the real time clock.
81 bool "SetTime() runtime service"
82 depends on EFI_GET_TIME
83 default y if ARCH_QEMU || SANDBOX
85 Provide the SetTime() runtime service at boottime. This service
86 can be used by an EFI application to adjust the real time clock.
88 config EFI_HAVE_RUNTIME_RESET
89 # bool "Reset runtime service is available"
92 depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
93 SANDBOX || SYSRESET_SBI || SYSRESET_X86
100 prompt "Store for non-volatile UEFI variables"
101 default EFI_VARIABLE_FILE_STORE
103 Select where non-volatile UEFI variables shall be stored.
105 config EFI_VARIABLE_FILE_STORE
106 bool "Store non-volatile UEFI variables as file"
109 Select this option if you want non-volatile UEFI variables to be
110 stored as file /ubootefi.var on the EFI system partition.
112 config EFI_RT_VOLATILE_STORE
113 bool "Allow variable runtime services in volatile storage (e.g RAM)"
114 depends on EFI_VARIABLE_FILE_STORE
116 When EFI variables are stored on file we don't allow SetVariableRT,
117 since the OS doesn't know how to write that file. At the same time
118 we copy runtime variables in DRAM and support GetVariableRT
120 Enable this option to allow SetVariableRT on the RAM backend of
121 the EFI variable storage. The OS will be responsible for syncing
122 the RAM contents to the file, otherwise any changes made during
123 runtime won't persist reboots.
124 Authenticated variables are not supported. Note that this will
125 violate the EFI spec since writing auth variables will return
126 EFI_INVALID_PARAMETER
128 config EFI_MM_COMM_TEE
129 bool "UEFI variables storage service via the trusted world"
132 Allowing access to the MM SP services (SPs such as StandAlonneMM, smm-gateway).
133 When using the u-boot OP-TEE driver, StandAlonneMM is supported.
134 When using the u-boot FF-A driver any MM SP is supported.
136 If OP-TEE is present and running StandAloneMM, dispatch all UEFI
137 variable related operations to that. The application will verify,
138 authenticate and store the variables on an RPMB.
140 When ARM_FFA_TRANSPORT is used, dispatch all UEFI variable related
141 operations to the MM SP running in the secure world.
142 A door bell mechanism is used to notify the SP when there is data in the shared
143 MM buffer. The data is copied by u-boot to the shared buffer before issuing
146 config FFA_SHARED_MM_BUF_SIZE
147 int "Memory size of the shared MM communication buffer"
148 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
150 This defines the size in bytes of the memory area reserved for the shared
151 buffer used for communication between the MM feature in U-Boot and
152 the MM SP in secure world.
153 The size of the memory region must be a multiple of the size of the maximum
154 translation granule size that is specified in the ID_AA64MMFR0_EL1 System register.
155 It is assumed that the MM SP knows the size of the shared MM communication buffer.
157 config FFA_SHARED_MM_BUF_OFFSET
158 int "Data offset in the shared MM communication buffer"
159 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
161 This defines the offset in bytes of the data read or written to in the shared
164 config FFA_SHARED_MM_BUF_ADDR
165 hex "Define the address of the shared MM communication buffer"
166 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
168 This defines the address of the shared MM communication buffer
169 used for communication between the MM feature in U-Boot and
170 the MM SP in secure world.
171 It is assumed that the MM SP knows the address of the shared MM communication buffer.
173 config EFI_VARIABLE_NO_STORE
174 bool "Don't persist non-volatile UEFI variables"
176 If you choose this option, non-volatile variables cannot be persisted.
177 You could still provide non-volatile variables via
178 EFI_VARIABLES_PRESEED.
182 config EFI_VARIABLES_PRESEED
183 bool "Initial values for UEFI variables"
184 depends on !EFI_MM_COMM_TEE
186 Include a file with the initial values for non-volatile UEFI variables
187 into the U-Boot binary. If this configuration option is set, changes
188 to authentication related variables (PK, KEK, db, dbx) are not
191 if EFI_VARIABLES_PRESEED
193 config EFI_VAR_SEED_FILE
194 string "File with initial values of non-volatile UEFI variables"
195 default "ubootefi.var"
197 File with initial values of non-volatile UEFI variables. The file must
198 be in the same format as the storage in the EFI system partition. The
199 easiest way to create it is by setting the non-volatile variables in
200 U-Boot. If a relative file path is used, it is relative to the source
205 config EFI_VAR_BUF_SIZE
206 int "Memory size of the UEFI variable store"
208 range 4096 2147483647
210 This defines the size in bytes of the memory area reserved for keeping
213 When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) is used the
214 available size for storing variables is defined in
215 PcdFlashNvStorageVariableSize.
216 That value is probed at runtime from U-Boot. In that case,
217 EFI_VAR_BUF_SIZE represents the memory U-Boot reserves to present
218 runtime variables to the OS.
220 Minimum 4096, default 131072
222 config EFI_PLATFORM_LANG_CODES
223 string "Language codes supported by firmware"
226 This value is used to initialize the PlatformLangCodes variable. Its
227 value is a semicolon (;) separated list of language codes in native
228 RFC 4646 format, e.g. "en-US;de-DE". The first language code is used
229 to initialize the PlatformLang variable.
233 menu "Capsule support"
235 config EFI_HAVE_CAPSULE_SUPPORT
238 config EFI_RUNTIME_UPDATE_CAPSULE
239 bool "UpdateCapsule() runtime service"
240 select EFI_HAVE_CAPSULE_SUPPORT
242 Select this option if you want to use UpdateCapsule and
243 QueryCapsuleCapabilities API's.
245 config EFI_CAPSULE_ON_DISK
246 bool "Enable capsule-on-disk support"
248 select EFI_HAVE_CAPSULE_SUPPORT
250 Select this option if you want to use capsule-on-disk feature,
251 that is, capsules can be fetched and executed from files
252 under a specific directory on UEFI system partition instead of
253 via UpdateCapsule API.
255 config EFI_IGNORE_OSINDICATIONS
256 bool "Ignore OsIndications for CapsuleUpdate on-disk"
257 depends on EFI_CAPSULE_ON_DISK
258 default y if !EFI_RT_VOLATILE_STORE
260 There are boards where U-Boot does not support SetVariable at runtime.
261 Select this option if you want to use the capsule-on-disk feature
262 without setting the EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED
263 flag in variable OsIndications.
265 config EFI_CAPSULE_ON_DISK_EARLY
266 bool "Initiate capsule-on-disk at U-Boot boottime"
267 depends on EFI_CAPSULE_ON_DISK
269 Normally, without this option enabled, capsules will be
270 executed only at the first time of invoking one of efi command.
271 If this option is enabled, capsules will be enforced to be
272 executed as part of U-Boot initialisation so that they will
273 surely take place whatever is set to distro_bootcmd.
275 config EFI_CAPSULE_NAMESPACE_GUID
276 string "Namespace for dynamic capsule GUIDs"
277 # v4 UUID as a default for upstream U-Boot boards
278 default "8c9f137e-91dc-427b-b2d6-b420faebaf2a"
279 depends on EFI_HAVE_CAPSULE_SUPPORT
281 Define the namespace or "salt" GUID used to generate the per-image
282 GUIDs. This should be a GUID in the standard 8-4-4-4-12 format.
284 Device vendors are expected to generate their own namespace GUID
285 to avoid conflicts with upstream/community images.
287 config EFI_CAPSULE_FIRMWARE
290 config EFI_CAPSULE_FIRMWARE_MANAGEMENT
291 bool "Capsule: Firmware Management Protocol"
292 depends on EFI_HAVE_CAPSULE_SUPPORT
295 Select this option if you want to enable capsule-based
296 firmware update using Firmware Management Protocol.
298 config EFI_CAPSULE_FIRMWARE_FIT
299 bool "FMP driver for FIT images"
301 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
304 select SET_DFU_ALT_INFO
305 select EFI_CAPSULE_FIRMWARE
307 Select this option if you want to enable firmware management protocol
310 config EFI_CAPSULE_FIRMWARE_RAW
311 bool "FMP driver for raw images"
312 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
313 depends on SANDBOX || (!SANDBOX && !EFI_CAPSULE_FIRMWARE_FIT)
316 select SET_DFU_ALT_INFO
317 select EFI_CAPSULE_FIRMWARE
319 Select this option if you want to enable firmware management protocol
322 config EFI_CAPSULE_AUTHENTICATE
323 bool "Update Capsule authentication"
324 depends on EFI_CAPSULE_FIRMWARE
325 depends on EFI_CAPSULE_ON_DISK
326 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
331 select RSA_VERIFY_WITH_PKEY
332 select X509_CERTIFICATE_PARSER
333 select PKCS7_MESSAGE_PARSER
335 select IMAGE_SIGN_INFO
336 select EFI_SIGNATURE_SUPPORT
338 Select this option if you want to enable capsule
341 config EFI_CAPSULE_MAX
342 int "Max value for capsule index"
346 Select the max capsule index value used for capsule report
347 variables. This value is used to create CapsuleMax variable.
349 config EFI_CAPSULE_CRT_FILE
350 string "Path to the EFI capsule public key certificate"
351 depends on EFI_CAPSULE_AUTHENTICATE
353 Provides the path to the EFI capsule public key certificate that
354 corresponds to the capsule signing key. This certificate will be used
355 to generate the EFI capsule ESL (signature list file) that gets
356 embedded in the platform's device tree and used for capsule
357 authentication at the time of capsule update.
361 menu "UEFI protocol support"
363 config EFI_DEVICE_PATH_TO_TEXT
364 bool "Device path to text protocol"
367 The device path to text protocol converts device nodes and paths to
368 human readable strings.
370 config EFI_DEVICE_PATH_UTIL
371 bool "Device path utilities protocol"
374 The device path utilities protocol creates and manipulates device
375 paths and device nodes. It is required to run the EFI Shell.
378 bool "Device tree fixup protocol"
379 depends on !GENERATE_ACPI_TABLE
382 The EFI device-tree fix-up protocol provides a function to let the
383 firmware apply fix-ups. This may be used by boot loaders.
385 config EFI_LOADER_HII
389 The Human Interface Infrastructure is a complicated framework that
390 allows UEFI applications to draw fancy menus and hook strings using
391 a translation framework.
393 U-Boot implements enough of its features to be able to run the UEFI
394 Shell, but not more than that.
396 config EFI_UNICODE_COLLATION_PROTOCOL2
397 bool "Unicode collation protocol"
400 The Unicode collation protocol is used for lexical comparisons. It is
401 required to run the UEFI shell.
403 if EFI_UNICODE_COLLATION_PROTOCOL2
405 config EFI_UNICODE_CAPITALIZATION
406 bool "Support Unicode capitalization"
409 Select this option to enable correct handling of the capitalization of
410 Unicode codepoints in the range 0x0000-0xffff. If this option is not
411 set, only the the correct handling of the letters of the codepage
412 used by the FAT file system is ensured.
416 config EFI_RNG_PROTOCOL
417 bool "EFI_RNG_PROTOCOL support"
421 Provide a EFI_RNG_PROTOCOL implementation using the hardware random
422 number generator of the platform.
424 config EFI_TCG2_PROTOCOL
425 bool "EFI_TCG2_PROTOCOL support"
435 Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
438 config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
439 int "EFI_TCG2_PROTOCOL EventLog size"
440 depends on EFI_TCG2_PROTOCOL
443 Define the size of the EventLog for EFI_TCG2_PROTOCOL. Note that
444 this is going to be allocated twice. One for the eventlog it self
445 and one for the configuration table that is required from the spec
447 config EFI_TCG2_PROTOCOL_MEASURE_DTB
448 bool "Measure DTB with EFI_TCG2_PROTOCOL"
449 depends on EFI_TCG2_PROTOCOL
451 When enabled, the DTB image passed to the booted EFI image is
452 measured using the EFI TCG2 protocol. Do not enable this feature if
453 the passed DTB contains data that change across platform reboots
454 and cannot be used has a predictable measurement. Otherwise
455 this feature allows better measurement of the system boot
458 config EFI_LOAD_FILE2_INITRD
459 bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
462 Linux v5.7 and later can make use of this option. If the boot option
463 selected by the UEFI boot manager specifies an existing file to be used
464 as initial RAM disk, a Linux specific Load File2 protocol will be
465 installed and Linux 5.7+ will ignore any initrd=<ramdisk> command line
468 config EFI_RISCV_BOOT_PROTOCOL
469 bool "RISCV_EFI_BOOT_PROTOCOL support"
473 The EFI_RISCV_BOOT_PROTOCOL is used to transfer the boot hart ID
474 to the next boot stage. It should be enabled as it is meant to
475 replace the transfer via the device-tree. The latter is not
476 possible on systems using ACPI.
481 config EFI_LOADER_BOUNCE_BUFFER
482 bool "EFI Applications use bounce buffers for DMA operations"
485 Some hardware does not support DMA to full 64bit addresses. For this
486 hardware we can create a bounce buffer so that payloads don't have to
487 worry about platform details.
489 config EFI_GRUB_ARM32_WORKAROUND
490 bool "Workaround for GRUB on 32bit ARM"
491 default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
493 depends on ARM && !ARM64
495 GRUB prior to version 2.04 requires U-Boot to disable caches. This
496 workaround currently is also needed on systems with caches that
497 cannot be managed via CP15.
500 bool "Enable the UEFI ESRT generation"
501 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
504 Enabling this option creates the ESRT UEFI system table.
507 bool "Enable the UEFI ECPT generation"
510 Enabling this option created the ECPT UEFI table.
512 config EFI_EBBR_2_1_CONFORMANCE
513 bool "Add the EBBRv2.1 conformance entry to the ECPT table"
514 depends on BOOTMETH_EFI_BOOTMGR
516 depends on EFI_LOADER_HII
517 depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
518 depends on EFI_RNG_PROTOCOL || !DM_RNG
519 depends on EFI_UNICODE_COLLATION_PROTOCOL2
522 Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
524 config EFI_SCROLL_ON_CLEAR_SCREEN
525 bool "Avoid overwriting previous output on clear screen"
527 Instead of erasing the screen content when the console screen should
528 be cleared, emit blank new lines so that previous output is scrolled
529 out of sight rather than overwritten. On serial consoles this allows
530 to capture complete boot logs (except for interactive menus etc.)
531 and can ease debugging related issues.
535 menu "EFI bootmanager"
538 bool "UEFI Boot Manager"
541 Select this option if you want to select the UEFI binary to be booted
542 via UEFI variables Boot####, BootOrder, and BootNext. You should also
543 normally enable CMD_BOOTEFI_BOOTMGR so that the command is available.
546 bool "EFI HTTP Boot support"
551 Enabling this option adds EFI HTTP Boot support. It allows to
552 directly boot from network.
557 source "lib/efi/Kconfig"