]> Git Repo - u-boot.git/blob - lib/efi_loader/Kconfig
e58b882560537ec43b8f6df37d9906c69afbd59c
[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 OF_LIBFDT && ( \
6                 ARM && (SYS_CPU = arm1136 || \
7                         SYS_CPU = arm1176 || \
8                         SYS_CPU = armv7   || \
9                         SYS_CPU = armv8)  || \
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
15         depends on !EFI_APP
16         default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
17         select BLK
18         select CHARSET
19         # We need to send DM events, dynamically, in the EFI block driver
20         select DM_EVENT
21         select EVENT_DYNAMIC
22         select LIB_UUID
23         imply PARTITION_UUIDS
24         select REGEX
25         imply FAT
26         imply FAT_WRITE
27         imply USB_KEYBOARD_FN_KEYS
28         imply VIDEO_ANSI
29         help
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.
34
35 if EFI_LOADER
36
37 config EFI_BINARY_EXEC
38         bool "Execute UEFI binary"
39         default y
40         help
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
44           command to do that.
45
46 config EFI_SECURE_BOOT
47         bool "Enable EFI secure boot support"
48         depends on EFI_LOADER && FIT_SIGNATURE
49         select HASH
50         select SHA256
51         select RSA
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
58         select PKCS7_VERIFY
59         select MSCODE_PARSER
60         select EFI_SIGNATURE_SUPPORT
61         help
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.
66
67 config EFI_SIGNATURE_SUPPORT
68         bool
69
70 menu "UEFI services"
71
72 config EFI_GET_TIME
73         bool "GetTime() runtime service"
74         depends on DM_RTC
75         default y
76         help
77           Provide the GetTime() runtime service at boottime. This service
78           can be used by an EFI application to read the real time clock.
79
80 config EFI_SET_TIME
81         bool "SetTime() runtime service"
82         depends on EFI_GET_TIME
83         default y if ARCH_QEMU || SANDBOX
84         help
85           Provide the SetTime() runtime service at boottime. This service
86           can be used by an EFI application to adjust the real time clock.
87
88 config EFI_HAVE_RUNTIME_RESET
89         # bool "Reset runtime service is available"
90         bool
91         default y
92         depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
93                    SANDBOX || SYSRESET_SBI || SYSRESET_X86
94
95 endmenu
96
97 menu "UEFI Variables"
98
99 choice
100         prompt "Store for non-volatile UEFI variables"
101         default EFI_VARIABLE_FILE_STORE
102         help
103           Select where non-volatile UEFI variables shall be stored.
104
105 config EFI_VARIABLE_FILE_STORE
106         bool "Store non-volatile UEFI variables as file"
107         depends on FAT_WRITE
108         help
109           Select this option if you want non-volatile UEFI variables to be
110           stored as file /ubootefi.var on the EFI system partition.
111
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
115         help
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
119
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
127
128 config EFI_MM_COMM_TEE
129         bool "UEFI variables storage service via the trusted world"
130         depends on OPTEE
131         help
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.
135
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.
139
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
144           the door bell event.
145
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
149         help
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.
156
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
160         help
161           This defines the offset in bytes of the data read or written to in the shared
162           buffer by the MM SP.
163
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
167         help
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.
172
173 config EFI_VARIABLE_NO_STORE
174         bool "Don't persist non-volatile UEFI variables"
175         help
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.
179
180 endchoice
181
182 config EFI_VARIABLES_PRESEED
183         bool "Initial values for UEFI variables"
184         depends on !EFI_MM_COMM_TEE
185         help
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
189           allowed.
190
191 if EFI_VARIABLES_PRESEED
192
193 config EFI_VAR_SEED_FILE
194         string "File with initial values of non-volatile UEFI variables"
195         default "ubootefi.var"
196         help
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
201           directory.
202
203 endif
204
205 config EFI_VAR_BUF_SIZE
206         int "Memory size of the UEFI variable store"
207         default 131072
208         range 4096 2147483647
209         help
210           This defines the size in bytes of the memory area reserved for keeping
211           UEFI variables.
212
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.
219
220           Minimum 4096, default 131072
221
222 config EFI_PLATFORM_LANG_CODES
223         string "Language codes supported by firmware"
224         default "en-US"
225         help
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.
230
231 endmenu
232
233 menu "Capsule support"
234
235 config EFI_HAVE_CAPSULE_SUPPORT
236         bool
237
238 config EFI_RUNTIME_UPDATE_CAPSULE
239         bool "UpdateCapsule() runtime service"
240         select EFI_HAVE_CAPSULE_SUPPORT
241         help
242           Select this option if you want to use UpdateCapsule and
243           QueryCapsuleCapabilities API's.
244
245 config EFI_CAPSULE_ON_DISK
246         bool "Enable capsule-on-disk support"
247         depends on SYSRESET
248         select EFI_HAVE_CAPSULE_SUPPORT
249         help
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.
254
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
259         help
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.
264
265 config EFI_CAPSULE_ON_DISK_EARLY
266         bool "Initiate capsule-on-disk at U-Boot boottime"
267         depends on EFI_CAPSULE_ON_DISK
268         help
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.
274
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
280         help
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.
283
284           Device vendors are expected to generate their own namespace GUID
285           to avoid conflicts with upstream/community images.
286
287 config EFI_CAPSULE_FIRMWARE
288         bool
289
290 config EFI_CAPSULE_FIRMWARE_MANAGEMENT
291         bool "Capsule: Firmware Management Protocol"
292         depends on EFI_HAVE_CAPSULE_SUPPORT
293         default y
294         help
295           Select this option if you want to enable capsule-based
296           firmware update using Firmware Management Protocol.
297
298 config EFI_CAPSULE_FIRMWARE_FIT
299         bool "FMP driver for FIT images"
300         depends on FIT
301         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
302         select UPDATE_FIT
303         select DFU
304         select SET_DFU_ALT_INFO
305         select EFI_CAPSULE_FIRMWARE
306         help
307           Select this option if you want to enable firmware management protocol
308           driver for FIT image
309
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)
314         select DFU_WRITE_ALT
315         select DFU
316         select SET_DFU_ALT_INFO
317         select EFI_CAPSULE_FIRMWARE
318         help
319           Select this option if you want to enable firmware management protocol
320           driver for raw image
321
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
327         select HASH
328         select SHA256
329         select RSA
330         select RSA_VERIFY
331         select RSA_VERIFY_WITH_PKEY
332         select X509_CERTIFICATE_PARSER
333         select PKCS7_MESSAGE_PARSER
334         select PKCS7_VERIFY
335         select IMAGE_SIGN_INFO
336         select EFI_SIGNATURE_SUPPORT
337         help
338           Select this option if you want to enable capsule
339           authentication
340
341 config EFI_CAPSULE_MAX
342         int "Max value for capsule index"
343         default 15
344         range 0 65535
345         help
346           Select the max capsule index value used for capsule report
347           variables. This value is used to create CapsuleMax variable.
348
349 config EFI_CAPSULE_CRT_FILE
350         string "Path to the EFI capsule public key certificate"
351         depends on EFI_CAPSULE_AUTHENTICATE
352         help
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.
358
359 endmenu
360
361 menu "UEFI protocol support"
362
363 config EFI_DEVICE_PATH_TO_TEXT
364         bool "Device path to text protocol"
365         default y
366         help
367           The device path to text protocol converts device nodes and paths to
368           human readable strings.
369
370 config EFI_DEVICE_PATH_UTIL
371         bool "Device path utilities protocol"
372         default y
373         help
374           The device path utilities protocol creates and manipulates device
375           paths and device nodes. It is required to run the EFI Shell.
376
377 config EFI_DT_FIXUP
378         bool "Device tree fixup protocol"
379         depends on !GENERATE_ACPI_TABLE
380         default y
381         help
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.
384
385 config EFI_LOADER_HII
386         bool "HII protocols"
387         default y
388         help
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.
392
393           U-Boot implements enough of its features to be able to run the UEFI
394           Shell, but not more than that.
395
396 config EFI_UNICODE_COLLATION_PROTOCOL2
397         bool "Unicode collation protocol"
398         default y
399         help
400           The Unicode collation protocol is used for lexical comparisons. It is
401           required to run the UEFI shell.
402
403 if EFI_UNICODE_COLLATION_PROTOCOL2
404
405 config EFI_UNICODE_CAPITALIZATION
406         bool "Support Unicode capitalization"
407         default y
408         help
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.
413
414 endif
415
416 config EFI_RNG_PROTOCOL
417         bool "EFI_RNG_PROTOCOL support"
418         depends on DM_RNG
419         default y
420         help
421           Provide a EFI_RNG_PROTOCOL implementation using the hardware random
422           number generator of the platform.
423
424 config EFI_TCG2_PROTOCOL
425         bool "EFI_TCG2_PROTOCOL support"
426         default y
427         depends on TPM_V2
428         select SHA1
429         select SHA256
430         select SHA384
431         select SHA512
432         select HASH
433         select SMBIOS_PARSER
434         help
435           Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
436           of the platform.
437
438 config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
439         int "EFI_TCG2_PROTOCOL EventLog size"
440         depends on EFI_TCG2_PROTOCOL
441         default 65536
442         help
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
446
447 config EFI_TCG2_PROTOCOL_MEASURE_DTB
448         bool "Measure DTB with EFI_TCG2_PROTOCOL"
449         depends on EFI_TCG2_PROTOCOL
450         help
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
456           sequence.
457
458 config EFI_LOAD_FILE2_INITRD
459         bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
460         default y
461         help
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
466           argument.
467
468 config EFI_RISCV_BOOT_PROTOCOL
469         bool "RISCV_EFI_BOOT_PROTOCOL support"
470         default y
471         depends on RISCV
472         help
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.
477
478 endmenu
479
480 menu "Misc options"
481 config EFI_LOADER_BOUNCE_BUFFER
482         bool "EFI Applications use bounce buffers for DMA operations"
483         depends on ARM64
484         help
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.
488
489 config EFI_GRUB_ARM32_WORKAROUND
490         bool "Workaround for GRUB on 32bit ARM"
491         default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
492         default y
493         depends on ARM && !ARM64
494         help
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.
498
499 config EFI_ESRT
500         bool "Enable the UEFI ESRT generation"
501         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
502         default y
503         help
504           Enabling this option creates the ESRT UEFI system table.
505
506 config EFI_ECPT
507         bool "Enable the UEFI ECPT generation"
508         default y
509         help
510           Enabling this option created the ECPT UEFI table.
511
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
515         depends on EFI_ECPT
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
520         default y
521         help
522           Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
523
524 config EFI_SCROLL_ON_CLEAR_SCREEN
525         bool "Avoid overwriting previous output on clear screen"
526         help
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.
532
533 endmenu
534
535 menu "EFI bootmanager"
536
537 config EFI_BOOTMGR
538         bool "UEFI Boot Manager"
539         default y
540         help
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.
544
545 config EFI_HTTP_BOOT
546         bool "EFI HTTP Boot support"
547         select CMD_DNS
548         select CMD_WGET
549         select BLKMAP
550         help
551           Enabling this option adds EFI HTTP Boot support. It allows to
552           directly boot from network.
553 endmenu
554
555 endif
556
557 source "lib/efi/Kconfig"
558
559 endmenu
This page took 0.048775 seconds and 2 git commands to generate.