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