Merge tag 'efi-2022-07-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi
[platform/kernel/u-boot.git] / lib / efi_loader / Kconfig
1 config EFI_LOADER
2         bool "Support running UEFI applications"
3         depends on OF_LIBFDT && ( \
4                 ARM && (SYS_CPU = arm1136 || \
5                         SYS_CPU = arm1176 || \
6                         SYS_CPU = armv7   || \
7                         SYS_CPU = armv8)  || \
8                 X86 || RISCV || SANDBOX)
9         # We need EFI_STUB_64BIT to be set on x86_64 with EFI_STUB
10         depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
11         # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
12         depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
13         depends on BLK
14         depends on DM_ETH || !NET
15         depends on !EFI_APP
16         default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
17         select LIB_UUID
18         select PARTITION_UUIDS
19         select HAVE_BLOCK_DEVICE
20         select REGEX
21         imply FAT
22         imply FAT_WRITE
23         imply USB_KEYBOARD_FN_KEYS
24         imply VIDEO_ANSI
25         help
26           Select this option if you want to run UEFI applications (like GNU
27           GRUB or iPXE) on top of U-Boot. If this option is enabled, U-Boot
28           will expose the UEFI API to a loaded application, enabling it to
29           reuse U-Boot's device drivers.
30
31 if EFI_LOADER
32
33 config CMD_BOOTEFI_BOOTMGR
34         bool "UEFI Boot Manager"
35         default y
36         help
37           Select this option if you want to select the UEFI binary to be booted
38           via UEFI variables Boot####, BootOrder, and BootNext. This enables the
39           'bootefi bootmgr' command.
40
41 config EFI_SETUP_EARLY
42         bool
43
44 choice
45         prompt "Store for non-volatile UEFI variables"
46         default EFI_VARIABLE_FILE_STORE
47         help
48           Select where non-volatile UEFI variables shall be stored.
49
50 config EFI_VARIABLE_FILE_STORE
51         bool "Store non-volatile UEFI variables as file"
52         depends on FAT_WRITE
53         help
54           Select this option if you want non-volatile UEFI variables to be
55           stored as file /ubootefi.var on the EFI system partition.
56
57 config EFI_MM_COMM_TEE
58         bool "UEFI variables storage service via OP-TEE"
59         depends on OPTEE
60         help
61           If OP-TEE is present and running StandAloneMM, dispatch all UEFI
62           variable related operations to that. The application will verify,
63           authenticate and store the variables on an RPMB.
64
65 config EFI_VARIABLE_NO_STORE
66         bool "Don't persist non-volatile UEFI variables"
67         help
68           If you choose this option, non-volatile variables cannot be persisted.
69           You could still provide non-volatile variables via
70           EFI_VARIABLES_PRESEED.
71
72 endchoice
73
74 config EFI_VARIABLES_PRESEED
75         bool "Initial values for UEFI variables"
76         depends on !EFI_MM_COMM_TEE
77         help
78           Include a file with the initial values for non-volatile UEFI variables
79           into the U-Boot binary. If this configuration option is set, changes
80           to authentication related variables (PK, KEK, db, dbx) are not
81           allowed.
82
83 if EFI_VARIABLES_PRESEED
84
85 config EFI_VAR_SEED_FILE
86         string "File with initial values of non-volatile UEFI variables"
87         default ubootefi.var
88         help
89           File with initial values of non-volatile UEFI variables. The file must
90           be in the same format as the storage in the EFI system partition. The
91           easiest way to create it is by setting the non-volatile variables in
92           U-Boot. If a relative file path is used, it is relative to the source
93           directory.
94
95 endif
96
97 config EFI_VAR_BUF_SIZE
98         int "Memory size of the UEFI variable store"
99         default 16384
100         range 4096 2147483647
101         help
102           This defines the size in bytes of the memory area reserved for keeping
103           UEFI variables.
104
105           When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) this value should
106           match the value of PcdFlashNvStorageVariableSize used to compile the
107           StandAloneMM module.
108
109           Minimum 4096, default 16384.
110
111 config EFI_GET_TIME
112         bool "GetTime() runtime service"
113         depends on DM_RTC
114         default y
115         help
116           Provide the GetTime() runtime service at boottime. This service
117           can be used by an EFI application to read the real time clock.
118
119 config EFI_SET_TIME
120         bool "SetTime() runtime service"
121         depends on EFI_GET_TIME
122         default y if ARCH_QEMU || SANDBOX
123         help
124           Provide the SetTime() runtime service at boottime. This service
125           can be used by an EFI application to adjust the real time clock.
126
127 config EFI_HAVE_CAPSULE_SUPPORT
128         bool
129
130 config EFI_RUNTIME_UPDATE_CAPSULE
131         bool "UpdateCapsule() runtime service"
132         select EFI_HAVE_CAPSULE_SUPPORT
133         help
134           Select this option if you want to use UpdateCapsule and
135           QueryCapsuleCapabilities API's.
136
137 config EFI_CAPSULE_ON_DISK
138         bool "Enable capsule-on-disk support"
139         depends on SYSRESET
140         select EFI_HAVE_CAPSULE_SUPPORT
141         help
142           Select this option if you want to use capsule-on-disk feature,
143           that is, capsules can be fetched and executed from files
144           under a specific directory on UEFI system partition instead of
145           via UpdateCapsule API.
146
147 config EFI_IGNORE_OSINDICATIONS
148         bool "Ignore OsIndications for CapsuleUpdate on-disk"
149         depends on EFI_CAPSULE_ON_DISK
150         help
151           There are boards where U-Boot does not support SetVariable at runtime.
152           Select this option if you want to use the capsule-on-disk feature
153           without setting the EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED
154           flag in variable OsIndications.
155
156 config EFI_CAPSULE_ON_DISK_EARLY
157         bool "Initiate capsule-on-disk at U-Boot boottime"
158         depends on EFI_CAPSULE_ON_DISK
159         select EFI_SETUP_EARLY
160         help
161           Normally, without this option enabled, capsules will be
162           executed only at the first time of invoking one of efi command.
163           If this option is enabled, capsules will be enforced to be
164           executed as part of U-Boot initialisation so that they will
165           surely take place whatever is set to distro_bootcmd.
166
167 config EFI_CAPSULE_FIRMWARE
168         bool
169
170 config EFI_CAPSULE_FIRMWARE_MANAGEMENT
171         bool "Capsule: Firmware Management Protocol"
172         depends on EFI_HAVE_CAPSULE_SUPPORT
173         default y
174         help
175           Select this option if you want to enable capsule-based
176           firmware update using Firmware Management Protocol.
177
178 config EFI_CAPSULE_FIRMWARE_FIT
179         bool "FMP driver for FIT images"
180         depends on FIT
181         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
182         select UPDATE_FIT
183         select DFU
184         select SET_DFU_ALT_INFO
185         select EFI_CAPSULE_FIRMWARE
186         help
187           Select this option if you want to enable firmware management protocol
188           driver for FIT image
189
190 config EFI_CAPSULE_FIRMWARE_RAW
191         bool "FMP driver for raw images"
192         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
193         depends on SANDBOX || (!SANDBOX && !EFI_CAPSULE_FIRMWARE_FIT)
194         select DFU_WRITE_ALT
195         select DFU
196         select SET_DFU_ALT_INFO
197         select EFI_CAPSULE_FIRMWARE
198         help
199           Select this option if you want to enable firmware management protocol
200           driver for raw image
201
202 config EFI_CAPSULE_AUTHENTICATE
203         bool "Update Capsule authentication"
204         depends on EFI_CAPSULE_FIRMWARE
205         depends on EFI_CAPSULE_ON_DISK
206         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
207         select HASH
208         select SHA256
209         select RSA
210         select RSA_VERIFY
211         select RSA_VERIFY_WITH_PKEY
212         select X509_CERTIFICATE_PARSER
213         select PKCS7_MESSAGE_PARSER
214         select PKCS7_VERIFY
215         select IMAGE_SIGN_INFO
216         select EFI_SIGNATURE_SUPPORT
217         help
218           Select this option if you want to enable capsule
219           authentication
220
221 config EFI_DEVICE_PATH_TO_TEXT
222         bool "Device path to text protocol"
223         default y
224         help
225           The device path to text protocol converts device nodes and paths to
226           human readable strings.
227
228 config EFI_DEVICE_PATH_UTIL
229         bool "Device path utilities protocol"
230         default y
231         help
232           The device path utilities protocol creates and manipulates device
233           paths and device nodes. It is required to run the EFI Shell.
234
235 config EFI_DT_FIXUP
236         bool "Device tree fixup protocol"
237         depends on !GENERATE_ACPI_TABLE
238         default y
239         help
240           The EFI device-tree fix-up protocol provides a function to let the
241           firmware apply fix-ups. This may be used by boot loaders.
242
243 config EFI_LOADER_HII
244         bool "HII protocols"
245         default y
246         help
247           The Human Interface Infrastructure is a complicated framework that
248           allows UEFI applications to draw fancy menus and hook strings using
249           a translation framework.
250
251           U-Boot implements enough of its features to be able to run the UEFI
252           Shell, but not more than that.
253
254 config EFI_UNICODE_COLLATION_PROTOCOL2
255         bool "Unicode collation protocol"
256         default y
257         help
258           The Unicode collation protocol is used for lexical comparisons. It is
259           required to run the UEFI shell.
260
261 if EFI_UNICODE_COLLATION_PROTOCOL2
262
263 config EFI_UNICODE_CAPITALIZATION
264         bool "Support Unicode capitalization"
265         default y
266         help
267           Select this option to enable correct handling of the capitalization of
268           Unicode codepoints in the range 0x0000-0xffff. If this option is not
269           set, only the the correct handling of the letters of the codepage
270           used by the FAT file system is ensured.
271
272 endif
273
274 config EFI_LOADER_BOUNCE_BUFFER
275         bool "EFI Applications use bounce buffers for DMA operations"
276         depends on ARM64
277         help
278           Some hardware does not support DMA to full 64bit addresses. For this
279           hardware we can create a bounce buffer so that payloads don't have to
280           worry about platform details.
281
282 config EFI_PLATFORM_LANG_CODES
283         string "Language codes supported by firmware"
284         default "en-US"
285         help
286           This value is used to initialize the PlatformLangCodes variable. Its
287           value is a semicolon (;) separated list of language codes in native
288           RFC 4646 format, e.g. "en-US;de-DE". The first language code is used
289           to initialize the PlatformLang variable.
290
291 config EFI_HAVE_RUNTIME_RESET
292         # bool "Reset runtime service is available"
293         bool
294         default y
295         depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
296                    SANDBOX || SYSRESET_X86
297
298 config EFI_GRUB_ARM32_WORKAROUND
299         bool "Workaround for GRUB on 32bit ARM"
300         default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
301         default y
302         depends on ARM && !ARM64
303         help
304           GRUB prior to version 2.04 requires U-Boot to disable caches. This
305           workaround currently is also needed on systems with caches that
306           cannot be managed via CP15.
307
308 config EFI_RNG_PROTOCOL
309         bool "EFI_RNG_PROTOCOL support"
310         depends on DM_RNG
311         default y
312         help
313           Provide a EFI_RNG_PROTOCOL implementation using the hardware random
314           number generator of the platform.
315
316 config EFI_TCG2_PROTOCOL
317         bool "EFI_TCG2_PROTOCOL support"
318         default y
319         depends on TPM_V2
320         # Sandbox TPM currently fails on GetCapabilities needed for TCG2
321         depends on !SANDBOX
322         select SHA1
323         select SHA256
324         select SHA384
325         select SHA512
326         select HASH
327         select SMBIOS_PARSER
328         help
329           Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
330           of the platform.
331
332 config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
333         int "EFI_TCG2_PROTOCOL EventLog size"
334         depends on EFI_TCG2_PROTOCOL
335         default 65536
336         help
337                 Define the size of the EventLog for EFI_TCG2_PROTOCOL. Note that
338                 this is going to be allocated twice. One for the eventlog it self
339                 and one for the configuration table that is required from the spec
340
341 config EFI_LOAD_FILE2_INITRD
342         bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
343         default y
344         help
345           Linux v5.7 and later can make use of this option. If the boot option
346           selected by the UEFI boot manager specifies an existing file to be used
347           as initial RAM disk, a Linux specific Load File2 protocol will be
348           installed and Linux 5.7+ will ignore any initrd=<ramdisk> command line
349           argument.
350
351 config EFI_SECURE_BOOT
352         bool "Enable EFI secure boot support"
353         depends on EFI_LOADER && FIT_SIGNATURE
354         select HASH
355         select SHA256
356         select RSA
357         select RSA_VERIFY_WITH_PKEY
358         select IMAGE_SIGN_INFO
359         select ASYMMETRIC_KEY_TYPE
360         select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
361         select X509_CERTIFICATE_PARSER
362         select PKCS7_MESSAGE_PARSER
363         select PKCS7_VERIFY
364         select EFI_SIGNATURE_SUPPORT
365         help
366           Select this option to enable EFI secure boot support.
367           Once SecureBoot mode is enforced, any EFI binary can run only if
368           it is signed with a trusted key. To do that, you need to install,
369           at least, PK, KEK and db.
370
371 config EFI_SIGNATURE_SUPPORT
372         bool
373
374 config EFI_ESRT
375         bool "Enable the UEFI ESRT generation"
376         depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
377         default y
378         help
379           Enabling this option creates the ESRT UEFI system table.
380
381 config EFI_RISCV_BOOT_PROTOCOL
382         bool "RISCV_EFI_BOOT_PROTOCOL support"
383         default y
384         depends on RISCV
385         help
386           The EFI_RISCV_BOOT_PROTOCOL is used to transfer the boot hart ID
387           to the next boot stage. It should be enabled as it is meant to
388           replace the transfer via the device-tree. The latter is not
389           possible on systems using ACPI.
390
391 endif