]> Git Repo - u-boot.git/blob - lib/efi_loader/Kconfig
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sh
[u-boot.git] / lib / efi_loader / Kconfig
1 menu "UEFI Support"
2
3 config EFI_LOADER
4         bool "Support running UEFI applications"
5         depends on ( \
6                 ARM && (SYS_CPU = arm1136 || \
7                         SYS_CPU = arm1176 || \
8                         SYS_CPU = armv7   || \
9                         SYS_CPU = armv8)  || \
10                 X86 || RISCV || SANDBOX)
11         # We have not fully removed the requirement for some block device
12         depends on BLK
13         # We need EFI_STUB_64BIT to be set on x86_64 with EFI_STUB
14         depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
15         # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
16         depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
17         depends on !EFI_APP
18         default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
19         select CHARSET
20         # We need to send DM events, dynamically, in the EFI block driver
21         select DM_EVENT
22         select EVENT_DYNAMIC
23         select LIB_UUID
24         select LMB
25         select OF_LIBFDT
26         imply PARTITION_UUIDS
27         select REGEX
28         imply FAT
29         imply FAT_WRITE
30         imply USB_KEYBOARD_FN_KEYS
31         imply VIDEO_ANSI
32         help
33           Select this option if you want to run UEFI applications (like GNU
34           GRUB or iPXE) on top of U-Boot. If this option is enabled, U-Boot
35           will expose the UEFI API to a loaded application, enabling it to
36           reuse U-Boot's device drivers.
37
38 if EFI_LOADER
39
40 config EFI_BINARY_EXEC
41         bool "Execute UEFI binary"
42         default y
43         help
44           Select this option if you want to execute the UEFI binary after
45           loading it with U-Boot load commands or other methods.
46           You may enable CMD_BOOTEFI_BINARY so that you can use bootefi
47           command to do that.
48
49 config EFI_SECURE_BOOT
50         bool "Enable EFI secure boot support"
51         depends on EFI_LOADER && FIT_SIGNATURE
52         select HASH
53         select SHA256
54         select RSA
55         select RSA_VERIFY_WITH_PKEY
56         select IMAGE_SIGN_INFO
57         select ASYMMETRIC_KEY_TYPE
58         select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
59         select X509_CERTIFICATE_PARSER
60         select PKCS7_MESSAGE_PARSER
61         select PKCS7_VERIFY
62         select MSCODE_PARSER
63         select EFI_SIGNATURE_SUPPORT
64         help
65           Select this option to enable EFI secure boot support.
66           Once SecureBoot mode is enforced, any EFI binary can run only if
67           it is signed with a trusted key. To do that, you need to install,
68           at least, PK, KEK and db.
69
70 config EFI_SIGNATURE_SUPPORT
71         bool
72
73 menu "UEFI services"
74
75 config EFI_GET_TIME
76         bool "GetTime() runtime service"
77         depends on DM_RTC
78         default y
79         help
80           Provide the GetTime() runtime service at boottime. This service
81           can be used by an EFI application to read the real time clock.
82
83 config EFI_SET_TIME
84         bool "SetTime() runtime service"
85         depends on EFI_GET_TIME
86         default y if ARCH_QEMU || SANDBOX
87         help
88           Provide the SetTime() runtime service at boottime. This service
89           can be used by an EFI application to adjust the real time clock.
90
91 config EFI_HAVE_RUNTIME_RESET
92         # bool "Reset runtime service is available"
93         bool
94         default y
95         depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
96                    SANDBOX || SYSRESET_SBI || SYSRESET_X86
97
98 endmenu
99
100 menu "UEFI Variables"
101
102 choice
103         prompt "Store for non-volatile UEFI variables"
104         default EFI_VARIABLE_FILE_STORE
105         help
106           Select where non-volatile UEFI variables shall be stored.
107
108 config EFI_VARIABLE_FILE_STORE
109         bool "Store non-volatile UEFI variables as file"
110         depends on FAT_WRITE
111         help
112           Select this option if you want non-volatile UEFI variables to be
113           stored as file /ubootefi.var on the EFI system partition.
114
115 config EFI_RT_VOLATILE_STORE
116         bool "Allow variable runtime services in volatile storage (e.g RAM)"
117         depends on EFI_VARIABLE_FILE_STORE
118         help
119           When EFI variables are stored on file we don't allow SetVariableRT,
120           since the OS doesn't know how to write that file. At the same time
121           we copy runtime variables in DRAM and support GetVariableRT
122
123           Enable this option to allow SetVariableRT on the RAM backend of
124           the EFI variable storage. The OS will be responsible for syncing
125           the RAM contents to the file, otherwise any changes made during
126           runtime won't persist reboots.
127           Authenticated variables are not supported. Note that this will
128           violate the EFI spec since writing auth variables will return
129           EFI_INVALID_PARAMETER
130
131 config EFI_MM_COMM_TEE
132         bool "UEFI variables storage service via the trusted world"
133         depends on OPTEE
134         help
135           Allowing access to the MM SP services (SPs such as  StandAlonneMM, smm-gateway).
136           When using the u-boot OP-TEE driver, StandAlonneMM is supported.
137           When using the u-boot FF-A  driver any MM SP is supported.
138
139           If OP-TEE is present and running StandAloneMM, dispatch all UEFI
140           variable related operations to that. The application will verify,
141           authenticate and store the variables on an RPMB.
142
143           When ARM_FFA_TRANSPORT is used, dispatch all UEFI variable related
144           operations to the MM SP running in the secure world.
145           A door bell mechanism is used to notify the SP when there is data in the shared
146           MM buffer. The data is copied by u-boot to the shared buffer before issuing
147           the door bell event.
148
149 config FFA_SHARED_MM_BUF_SIZE
150         int "Memory size of the shared MM communication buffer"
151         depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
152         help
153           This defines the size in bytes of the memory area reserved for the shared
154           buffer used for communication between the MM feature in U-Boot and
155           the MM SP in secure world.
156           The size of the memory region must be a multiple of the size of the maximum
157           translation granule size that is specified in the ID_AA64MMFR0_EL1 System register.
158           It is assumed that the MM SP knows the size of the shared MM communication buffer.
159
160 config FFA_SHARED_MM_BUF_OFFSET
161         int "Data offset in the shared MM communication buffer"
162         depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
163         help
164           This defines the offset in bytes of the data read or written to in the shared
165           buffer by the MM SP.
166
167 config FFA_SHARED_MM_BUF_ADDR
168         hex "Define the address of the shared MM communication buffer"
169         depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
170         help
171           This defines the address of the shared MM communication buffer
172           used for communication between the MM feature in U-Boot and
173           the MM SP in secure world.
174           It is assumed that the MM SP knows the address of the shared MM communication buffer.
175
176 config EFI_VARIABLE_NO_STORE
177         bool "Don't persist non-volatile UEFI variables"
178         help
179           If you choose this option, non-volatile variables cannot be persisted.
180           You could still provide non-volatile variables via
181           EFI_VARIABLES_PRESEED.
182
183 endchoice
184
185 config EFI_VARIABLES_PRESEED
186         bool "Initial values for UEFI variables"
187         depends on !EFI_MM_COMM_TEE
188         help
189           Include a file with the initial values for non-volatile UEFI variables
190           into the U-Boot binary. If this configuration option is set, changes
191           to authentication related variables (PK, KEK, db, dbx) are not
192           allowed.
193
194 if EFI_VARIABLES_PRESEED
195
196 config EFI_VAR_SEED_FILE
197         string "File with initial values of non-volatile UEFI variables"
198         default "ubootefi.var"
199         help
200           File with initial values of non-volatile UEFI variables. The file must
201           be in the same format as the storage in the EFI system partition. The
202           easiest way to create it is by setting the non-volatile variables in
203           U-Boot. If a relative file path is used, it is relative to the source
204           directory.
205
206 endif
207
208 config EFI_VAR_BUF_SIZE
209         int "Memory size of the UEFI variable store"
210         default 131072
211         range 4096 2147483647
212         help
213           This defines the size in bytes of the memory area reserved for keeping
214           UEFI variables.
215
216           When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) is used the
217           available size for storing variables is defined in
218           PcdFlashNvStorageVariableSize.
219           That value is probed at runtime from U-Boot. In that case,
220           EFI_VAR_BUF_SIZE represents the memory U-Boot reserves to present
221           runtime variables to the OS.
222
223           Minimum 4096, default 131072
224
225 config EFI_PLATFORM_LANG_CODES
226         string "Language codes supported by firmware"
227         default "en-US"
228         help
229           This value is used to initialize the PlatformLangCodes variable. Its
230           value is a semicolon (;) separated list of language codes in native
231           RFC 4646 format, e.g. "en-US;de-DE". The first language code is used
232           to initialize the PlatformLang variable.
233
234 endmenu
235
236 menu "Capsule support"
237
238 config EFI_HAVE_CAPSULE_SUPPORT
239         bool
240
241 config EFI_RUNTIME_UPDATE_CAPSULE
242         bool "UpdateCapsule() runtime service"
243         select EFI_HAVE_CAPSULE_SUPPORT
244         help
245           Select this option if you want to use UpdateCapsule and
246           QueryCapsuleCapabilities API's.
247
248 config EFI_CAPSULE_ON_DISK
249         bool "Enable capsule-on-disk support"
250         depends on SYSRESET
251         select EFI_HAVE_CAPSULE_SUPPORT
252         help
253           Select this option if you want to use capsule-on-disk feature,
254           that is, capsules can be fetched and executed from files
255           under a specific directory on UEFI system partition instead of
256           via UpdateCapsule API.
257
258 config EFI_IGNORE_OSINDICATIONS
259         bool "Ignore OsIndications for CapsuleUpdate on-disk"
260         depends on EFI_CAPSULE_ON_DISK
261         default y if !EFI_RT_VOLATILE_STORE
262         help
263           There are boards where U-Boot does not support SetVariable at runtime.
264           Select this option if you want to use the capsule-on-disk feature
265           without setting the EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED
266           flag in variable OsIndications.
267
268 config EFI_CAPSULE_ON_DISK_EARLY
269         bool "Initiate capsule-on-disk at U-Boot boottime"
270         depends on EFI_CAPSULE_ON_DISK
271         help
272           Normally, without this option enabled, capsules will be
273           executed only at the first time of invoking one of efi command.
274           If this option is enabled, capsules will be enforced to be
275           executed as part of U-Boot initialisation so that they will
276           surely take place whatever is set to distro_bootcmd.
277
278 config EFI_CAPSULE_NAMESPACE_GUID
279         string "Namespace for dynamic capsule GUIDs"
280         # v4 UUID as a default for upstream U-Boot boards
281         default "8c9f137e-91dc-427b-b2d6-b420faebaf2a"
282         depends on EFI_HAVE_CAPSULE_SUPPORT
283         help
284           Define the namespace or "salt" GUID used to generate the per-image
285           GUIDs. This should be a GUID in the standard 8-4-4-4-12 format.
286
287           Device vendors are expected to generate their own namespace GUID
288           to avoid conflicts with upstream/community images.
289
290 config EFI_CAPSULE_FIRMWARE
291         bool
292
293 config EFI_CAPSULE_FIRMWARE_MANAGEMENT
294         bool "Capsule: Firmware Management Protocol"
295         depends on EFI_HAVE_CAPSULE_SUPPORT
296         default y
297         help
298           Select this option if you want to enable capsule-based
299           firmware update using Firmware Management Protocol.
300
301 config EFI_CAPSULE_FIRMWARE_FIT
302         bool "FMP driver for FIT images"
303         depends on FIT
304         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
305         select UPDATE_FIT
306         select DFU
307         select SET_DFU_ALT_INFO
308         select EFI_CAPSULE_FIRMWARE
309         help
310           Select this option if you want to enable firmware management protocol
311           driver for FIT image
312
313 config EFI_CAPSULE_FIRMWARE_RAW
314         bool "FMP driver for raw images"
315         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
316         depends on SANDBOX || (!SANDBOX && !EFI_CAPSULE_FIRMWARE_FIT)
317         select DFU_WRITE_ALT
318         select DFU
319         select SET_DFU_ALT_INFO
320         select EFI_CAPSULE_FIRMWARE
321         help
322           Select this option if you want to enable firmware management protocol
323           driver for raw image
324
325 config EFI_CAPSULE_AUTHENTICATE
326         bool "Update Capsule authentication"
327         depends on EFI_CAPSULE_FIRMWARE
328         depends on EFI_CAPSULE_ON_DISK
329         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
330         select HASH
331         select SHA256
332         select RSA
333         select RSA_VERIFY
334         select RSA_VERIFY_WITH_PKEY
335         select X509_CERTIFICATE_PARSER
336         select PKCS7_MESSAGE_PARSER
337         select PKCS7_VERIFY
338         select IMAGE_SIGN_INFO
339         select EFI_SIGNATURE_SUPPORT
340         help
341           Select this option if you want to enable capsule
342           authentication
343
344 config EFI_CAPSULE_MAX
345         int "Max value for capsule index"
346         default 15
347         range 0 65535
348         help
349           Select the max capsule index value used for capsule report
350           variables. This value is used to create CapsuleMax variable.
351
352 config EFI_CAPSULE_CRT_FILE
353         string "Path to the EFI capsule public key certificate"
354         depends on EFI_CAPSULE_AUTHENTICATE
355         help
356           Provides the path to the EFI capsule public key certificate that
357           corresponds to the capsule signing key. This certificate will be used
358           to generate the EFI capsule ESL (signature list file) that gets
359           embedded in the platform's device tree and used for capsule
360           authentication at the time of capsule update.
361
362 endmenu
363
364 menu "UEFI protocol support"
365
366 config EFI_DEVICE_PATH_TO_TEXT
367         bool "Device path to text protocol"
368         default y
369         help
370           The device path to text protocol converts device nodes and paths to
371           human readable strings.
372
373 config EFI_DEVICE_PATH_UTIL
374         bool "Device path utilities protocol"
375         default y
376         help
377           The device path utilities protocol creates and manipulates device
378           paths and device nodes. It is required to run the EFI Shell.
379
380 config EFI_DT_FIXUP
381         bool "Device tree fixup protocol"
382         depends on !GENERATE_ACPI_TABLE
383         default y
384         help
385           The EFI device-tree fix-up protocol provides a function to let the
386           firmware apply fix-ups. This may be used by boot loaders.
387
388 config EFI_LOADER_HII
389         bool "HII protocols"
390         default y if !HAS_BOARD_SIZE_LIMIT
391         help
392           The Human Interface Infrastructure is a complicated framework that
393           allows UEFI applications to draw fancy menus and hook strings using
394           a translation framework.
395
396           U-Boot implements enough of its features to be able to run the UEFI
397           Shell, but not more than that.
398
399 config EFI_UNICODE_COLLATION_PROTOCOL2
400         bool "Unicode collation protocol"
401         default y
402         help
403           The Unicode collation protocol is used for lexical comparisons. It is
404           required to run the UEFI shell.
405
406 if EFI_UNICODE_COLLATION_PROTOCOL2
407
408 config EFI_UNICODE_CAPITALIZATION
409         bool "Support Unicode capitalization"
410         default y if !HAS_BOARD_SIZE_LIMIT
411         help
412           Select this option to enable correct handling of the capitalization of
413           Unicode codepoints in the range 0x0000-0xffff. If this option is not
414           set, only the the correct handling of the letters of the codepage
415           used by the FAT file system is ensured.
416
417 endif
418
419 config EFI_RNG_PROTOCOL
420         bool "EFI_RNG_PROTOCOL support"
421         depends on DM_RNG
422         default y
423         help
424           Provide a EFI_RNG_PROTOCOL implementation using the hardware random
425           number generator of the platform.
426
427 config EFI_TCG2_PROTOCOL
428         bool "EFI_TCG2_PROTOCOL support"
429         default y
430         depends on TPM_V2
431         select SHA1
432         select SHA256
433         select SHA384
434         select SHA512
435         select HASH
436         select SMBIOS_PARSER
437         help
438           Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
439           of the platform.
440
441 config EFI_TCG2_PROTOCOL_MEASURE_DTB
442         bool "Measure DTB with EFI_TCG2_PROTOCOL"
443         depends on EFI_TCG2_PROTOCOL
444         help
445           When enabled, the DTB image passed to the booted EFI image is
446           measured using the EFI TCG2 protocol. Do not enable this feature if
447           the passed DTB contains data that change across platform reboots
448           and cannot be used has a predictable measurement. Otherwise
449           this feature allows better measurement of the system boot
450           sequence.
451
452 config EFI_LOAD_FILE2_INITRD
453         bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
454         default y
455         help
456           Linux v5.7 and later can make use of this option. If the boot option
457           selected by the UEFI boot manager specifies an existing file to be used
458           as initial RAM disk, a Linux specific Load File2 protocol will be
459           installed and Linux 5.7+ will ignore any initrd=<ramdisk> command line
460           argument.
461
462 config EFI_RISCV_BOOT_PROTOCOL
463         bool "RISCV_EFI_BOOT_PROTOCOL support"
464         default y
465         depends on RISCV
466         help
467           The EFI_RISCV_BOOT_PROTOCOL is used to transfer the boot hart ID
468           to the next boot stage. It should be enabled as it is meant to
469           replace the transfer via the device-tree. The latter is not
470           possible on systems using ACPI.
471
472 config EFI_IP4_CONFIG2_PROTOCOL
473         bool "EFI_IP4_CONFIG2_PROTOCOL support"
474         default y if ARCH_QEMU || SANDBOX
475         depends on NET || NET_LWIP
476         help
477           Provides an implementation of the EFI_IP4_CONFIG2_PROTOCOL, this
478           protocol can be used to set and get the current ip address and
479           other network information.
480
481 config EFI_HTTP_PROTOCOL
482         bool "EFI_HTTP_PROTOCOL support"
483         default y if ARCH_QEMU || SANDBOX
484         depends on WGET
485         help
486           Provides an EFI HTTP driver implementing the EFI_HTTP_PROTOCOL. and
487           EFI_HTTP_SERVICE_BINDING_PROTOCOL.
488
489 endmenu
490
491 menu "Misc options"
492 config EFI_LOADER_BOUNCE_BUFFER
493         bool "EFI Applications use bounce buffers for DMA operations"
494         help
495           Some hardware does not support DMA to full 64bit addresses. For this
496           hardware we can create a bounce buffer so that payloads don't have to
497           worry about platform details.
498
499 config EFI_GRUB_ARM32_WORKAROUND
500         bool "Workaround for GRUB on 32bit ARM"
501         default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
502         default y
503         depends on ARM && !ARM64
504         help
505           GRUB prior to version 2.04 requires U-Boot to disable caches. This
506           workaround currently is also needed on systems with caches that
507           cannot be managed via CP15.
508
509 config EFI_ESRT
510         bool "Enable the UEFI ESRT generation"
511         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
512         default y
513         help
514           Enabling this option creates the ESRT UEFI system table.
515
516 config EFI_ECPT
517         bool "Enable the UEFI ECPT generation"
518         default y
519         help
520           Enabling this option created the ECPT UEFI table.
521
522 config EFI_EBBR_2_1_CONFORMANCE
523         bool "Add the EBBRv2.1 conformance entry to the ECPT table"
524         depends on BOOTMETH_EFI_BOOTMGR
525         depends on EFI_ECPT
526         depends on EFI_LOADER_HII
527         depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
528         depends on EFI_RNG_PROTOCOL || !DM_RNG
529         depends on EFI_UNICODE_COLLATION_PROTOCOL2
530         default y
531         help
532           Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
533
534 config EFI_SCROLL_ON_CLEAR_SCREEN
535         bool "Avoid overwriting previous output on clear screen"
536         help
537           Instead of erasing the screen content when the console screen should
538           be cleared, emit blank new lines so that previous output is scrolled
539           out of sight rather than overwritten. On serial consoles this allows
540           to capture complete boot logs (except for interactive menus etc.)
541           and can ease debugging related issues.
542
543 endmenu
544
545 menu "EFI bootmanager"
546
547 config EFI_BOOTMGR
548         bool "UEFI Boot Manager"
549         default y
550         help
551           Select this option if you want to select the UEFI binary to be booted
552           via UEFI variables Boot####, BootOrder, and BootNext. You should also
553           normally enable CMD_BOOTEFI_BOOTMGR so that the command is available.
554
555 config EFI_HTTP_BOOT
556         bool "EFI HTTP Boot support"
557         depends on NET || NET_LWIP
558         select CMD_NET
559         select CMD_DNS
560         select CMD_WGET
561         select BLKMAP
562         help
563           Enabling this option adds EFI HTTP Boot support. It allows to
564           directly boot from network.
565 endmenu
566
567 config BOOTEFI_HELLO_COMPILE
568         bool "Compile a standard EFI hello world binary for testing"
569         default y
570         help
571           This compiles a standard EFI hello world application with U-Boot so
572           that it can be used with the test/py testing framework. This is useful
573           for testing that EFI is working at a basic level, and for bringing
574           up EFI support on a new architecture.
575
576           No additional space will be required in the resulting U-Boot binary
577           when this option is enabled.
578
579 config BOOTEFI_TESTAPP_COMPILE
580         bool "Compile an EFI test app for testing"
581         default y
582         help
583           This compiles an app designed for testing. It is packed into an image
584           by the test.py testing frame in the setup_efi_image() function.
585
586           No additional space will be required in the resulting U-Boot binary
587           when this option is enabled.
588
589 endif
590
591 source "lib/efi/Kconfig"
592
593 endmenu
This page took 0.072308 seconds and 4 git commands to generate.