blob: 69b2c9360d8f9ef78e2012d1aa5d3f749e5d512d [file] [log] [blame]
Ilias Apalodimas17aea462024-08-30 14:45:27 +03001menu "UEFI Support"
2
Alexander Graf67ee7052016-03-04 01:10:07 +01003config EFI_LOADER
Heinrich Schuchardt96b236a2019-05-11 10:27:58 +02004 bool "Support running UEFI applications"
Heinrich Schuchardt79cea672019-11-17 10:44:16 +01005 depends on OF_LIBFDT && ( \
Heinrich Schuchardt30c3a5f2019-11-19 04:19:09 +01006 ARM && (SYS_CPU = arm1136 || \
7 SYS_CPU = arm1176 || \
8 SYS_CPU = armv7 || \
9 SYS_CPU = armv8) || \
Heinrich Schuchardt79cea672019-11-17 10:44:16 +010010 X86 || RISCV || SANDBOX)
Alexander Graf5e247172018-01-24 14:54:21 +010011 # 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
Simon Glass49a643b2021-11-03 21:09:07 -060015 depends on !EFI_APP
Heinrich Schuchardtac212dc2019-11-20 18:48:02 +010016 default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
Tom Rinicec15482024-06-04 19:37:40 -060017 select BLK
Heinrich Schuchardt013aabb2022-05-02 06:27:00 +020018 select CHARSET
Tom Rini7d3684a2023-01-16 15:46:49 -050019 # We need to send DM events, dynamically, in the EFI block driver
AKASHI Takahiro2381f2e2022-04-19 10:05:12 +090020 select DM_EVENT
21 select EVENT_DYNAMIC
Adam Ford70c8f052018-02-06 12:14:28 -060022 select LIB_UUID
Sughosh Ganufa0ddab2024-10-15 21:07:06 +053023 select LMB
AKASHI Takahiroae18a672022-04-19 10:01:56 +090024 imply PARTITION_UUIDS
Heinrich Schuchardt9e18bfa2019-01-22 21:35:23 +010025 select REGEX
Heinrich Schuchardt6c46aaa2020-03-21 20:45:50 +010026 imply FAT
27 imply FAT_WRITE
Heinrich Schuchardt29db4c52019-12-04 22:58:58 +010028 imply USB_KEYBOARD_FN_KEYS
Heinrich Schuchardt8a7514a2020-01-15 00:49:35 +010029 imply VIDEO_ANSI
Alexander Graf67ee7052016-03-04 01:10:07 +010030 help
Heinrich Schuchardt96b236a2019-05-11 10:27:58 +020031 Select this option if you want to run UEFI applications (like GNU
32 GRUB or iPXE) on top of U-Boot. If this option is enabled, U-Boot
33 will expose the UEFI API to a loaded application, enabling it to
34 reuse U-Boot's device drivers.
Alexander Graf7c00a3c2016-05-11 18:25:48 +020035
Heinrich Schuchardt0cbab582019-05-08 23:17:38 +020036if EFI_LOADER
37
AKASHI Takahiro9b08b9a2024-01-17 13:39:41 +090038config EFI_BINARY_EXEC
39 bool "Execute UEFI binary"
40 default y
41 help
42 Select this option if you want to execute the UEFI binary after
43 loading it with U-Boot load commands or other methods.
44 You may enable CMD_BOOTEFI_BINARY so that you can use bootefi
45 command to do that.
46
Ilias Apalodimas17aea462024-08-30 14:45:27 +030047config EFI_SECURE_BOOT
48 bool "Enable EFI secure boot support"
49 depends on EFI_LOADER && FIT_SIGNATURE
50 select HASH
51 select SHA256
52 select RSA
53 select RSA_VERIFY_WITH_PKEY
54 select IMAGE_SIGN_INFO
55 select ASYMMETRIC_KEY_TYPE
56 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
57 select X509_CERTIFICATE_PARSER
58 select PKCS7_MESSAGE_PARSER
59 select PKCS7_VERIFY
60 select MSCODE_PARSER
61 select EFI_SIGNATURE_SUPPORT
62 help
63 Select this option to enable EFI secure boot support.
64 Once SecureBoot mode is enforced, any EFI binary can run only if
65 it is signed with a trusted key. To do that, you need to install,
66 at least, PK, KEK and db.
67
68config EFI_SIGNATURE_SUPPORT
69 bool
70
71menu "UEFI services"
72
73config EFI_GET_TIME
74 bool "GetTime() runtime service"
75 depends on DM_RTC
Heinrich Schuchardtb2625e82021-01-15 19:02:50 +010076 default y
77 help
Ilias Apalodimas17aea462024-08-30 14:45:27 +030078 Provide the GetTime() runtime service at boottime. This service
79 can be used by an EFI application to read the real time clock.
80
81config EFI_SET_TIME
82 bool "SetTime() runtime service"
83 depends on EFI_GET_TIME
84 default y if ARCH_QEMU || SANDBOX
85 help
86 Provide the SetTime() runtime service at boottime. This service
87 can be used by an EFI application to adjust the real time clock.
88
89config EFI_HAVE_RUNTIME_RESET
90 # bool "Reset runtime service is available"
91 bool
92 default y
93 depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
94 SANDBOX || SYSRESET_SBI || SYSRESET_X86
95
96endmenu
97
98menu "UEFI Variables"
Heinrich Schuchardtb2625e82021-01-15 19:02:50 +010099
Heinrich Schuchardt41bc6012020-07-14 19:18:33 +0200100choice
101 prompt "Store for non-volatile UEFI variables"
102 default EFI_VARIABLE_FILE_STORE
103 help
104 Select where non-volatile UEFI variables shall be stored.
105
Heinrich Schuchardt09a8d502020-03-19 18:21:58 +0000106config EFI_VARIABLE_FILE_STORE
107 bool "Store non-volatile UEFI variables as file"
108 depends on FAT_WRITE
Heinrich Schuchardt41bc6012020-07-14 19:18:33 +0200109 help
110 Select this option if you want non-volatile UEFI variables to be
111 stored as file /ubootefi.var on the EFI system partition.
112
Ilias Apalodimas86ba8692024-04-18 15:54:50 +0300113config EFI_RT_VOLATILE_STORE
114 bool "Allow variable runtime services in volatile storage (e.g RAM)"
115 depends on EFI_VARIABLE_FILE_STORE
116 help
117 When EFI variables are stored on file we don't allow SetVariableRT,
Michal Simek0ac27982024-07-16 15:56:51 +0200118 since the OS doesn't know how to write that file. At the same time
Ilias Apalodimas86ba8692024-04-18 15:54:50 +0300119 we copy runtime variables in DRAM and support GetVariableRT
120
121 Enable this option to allow SetVariableRT on the RAM backend of
122 the EFI variable storage. The OS will be responsible for syncing
123 the RAM contents to the file, otherwise any changes made during
124 runtime won't persist reboots.
125 Authenticated variables are not supported. Note that this will
126 violate the EFI spec since writing auth variables will return
127 EFI_INVALID_PARAMETER
128
Heinrich Schuchardt41bc6012020-07-14 19:18:33 +0200129config EFI_MM_COMM_TEE
Abdellatif El Khlifi431c7b52023-08-04 14:33:44 +0100130 bool "UEFI variables storage service via the trusted world"
Tom Rini74aad482023-07-24 19:51:05 -0400131 depends on OPTEE
Heinrich Schuchardt09a8d502020-03-19 18:21:58 +0000132 help
Abdellatif El Khlifi431c7b52023-08-04 14:33:44 +0100133 Allowing access to the MM SP services (SPs such as StandAlonneMM, smm-gateway).
134 When using the u-boot OP-TEE driver, StandAlonneMM is supported.
135 When using the u-boot FF-A driver any MM SP is supported.
136
Heinrich Schuchardt41bc6012020-07-14 19:18:33 +0200137 If OP-TEE is present and running StandAloneMM, dispatch all UEFI
138 variable related operations to that. The application will verify,
139 authenticate and store the variables on an RPMB.
140
Abdellatif El Khlifi431c7b52023-08-04 14:33:44 +0100141 When ARM_FFA_TRANSPORT is used, dispatch all UEFI variable related
142 operations to the MM SP running in the secure world.
143 A door bell mechanism is used to notify the SP when there is data in the shared
144 MM buffer. The data is copied by u-boot to the shared buffer before issuing
145 the door bell event.
146
147config FFA_SHARED_MM_BUF_SIZE
148 int "Memory size of the shared MM communication buffer"
149 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
150 help
151 This defines the size in bytes of the memory area reserved for the shared
152 buffer used for communication between the MM feature in U-Boot and
153 the MM SP in secure world.
154 The size of the memory region must be a multiple of the size of the maximum
155 translation granule size that is specified in the ID_AA64MMFR0_EL1 System register.
156 It is assumed that the MM SP knows the size of the shared MM communication buffer.
157
158config FFA_SHARED_MM_BUF_OFFSET
159 int "Data offset in the shared MM communication buffer"
160 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
161 help
162 This defines the offset in bytes of the data read or written to in the shared
163 buffer by the MM SP.
164
165config FFA_SHARED_MM_BUF_ADDR
166 hex "Define the address of the shared MM communication buffer"
167 depends on EFI_MM_COMM_TEE && ARM_FFA_TRANSPORT
168 help
169 This defines the address of the shared MM communication buffer
170 used for communication between the MM feature in U-Boot and
171 the MM SP in secure world.
172 It is assumed that the MM SP knows the address of the shared MM communication buffer.
173
Tom Saeger79696ce2022-03-22 15:21:10 -0600174config EFI_VARIABLE_NO_STORE
175 bool "Don't persist non-volatile UEFI variables"
176 help
177 If you choose this option, non-volatile variables cannot be persisted.
178 You could still provide non-volatile variables via
179 EFI_VARIABLES_PRESEED.
180
Heinrich Schuchardt41bc6012020-07-14 19:18:33 +0200181endchoice
Heinrich Schuchardt09a8d502020-03-19 18:21:58 +0000182
Heinrich Schuchardt4b7d5c12020-07-14 21:25:28 +0200183config EFI_VARIABLES_PRESEED
184 bool "Initial values for UEFI variables"
Tom Saeger79696ce2022-03-22 15:21:10 -0600185 depends on !EFI_MM_COMM_TEE
Heinrich Schuchardt4b7d5c12020-07-14 21:25:28 +0200186 help
187 Include a file with the initial values for non-volatile UEFI variables
188 into the U-Boot binary. If this configuration option is set, changes
189 to authentication related variables (PK, KEK, db, dbx) are not
190 allowed.
191
192if EFI_VARIABLES_PRESEED
193
194config EFI_VAR_SEED_FILE
195 string "File with initial values of non-volatile UEFI variables"
Michal Simekc44f36f2024-04-16 08:55:17 +0200196 default "ubootefi.var"
Heinrich Schuchardt4b7d5c12020-07-14 21:25:28 +0200197 help
198 File with initial values of non-volatile UEFI variables. The file must
199 be in the same format as the storage in the EFI system partition. The
200 easiest way to create it is by setting the non-volatile variables in
201 U-Boot. If a relative file path is used, it is relative to the source
202 directory.
203
204endif
205
Heinrich Schuchardt12f18612020-12-20 11:05:38 +0100206config EFI_VAR_BUF_SIZE
207 int "Memory size of the UEFI variable store"
Ilias Apalodimasc1a8e6d2023-11-06 17:47:53 +0200208 default 131072
Heinrich Schuchardt12f18612020-12-20 11:05:38 +0100209 range 4096 2147483647
210 help
211 This defines the size in bytes of the memory area reserved for keeping
212 UEFI variables.
213
Ilias Apalodimasc1a8e6d2023-11-06 17:47:53 +0200214 When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) is used the
215 available size for storing variables is defined in
216 PcdFlashNvStorageVariableSize.
217 That value is probed at runtime from U-Boot. In that case,
218 EFI_VAR_BUF_SIZE represents the memory U-Boot reserves to present
219 runtime variables to the OS.
Heinrich Schuchardt12f18612020-12-20 11:05:38 +0100220
Ilias Apalodimasc1a8e6d2023-11-06 17:47:53 +0200221 Minimum 4096, default 131072
Heinrich Schuchardt12f18612020-12-20 11:05:38 +0100222
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300223config EFI_PLATFORM_LANG_CODES
224 string "Language codes supported by firmware"
225 default "en-US"
Heinrich Schuchardtf2856ad2019-05-31 22:56:02 +0200226 help
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300227 This value is used to initialize the PlatformLangCodes variable. Its
228 value is a semicolon (;) separated list of language codes in native
229 RFC 4646 format, e.g. "en-US;de-DE". The first language code is used
230 to initialize the PlatformLang variable.
Heinrich Schuchardtf2856ad2019-05-31 22:56:02 +0200231
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300232endmenu
Heinrich Schuchardtf2856ad2019-05-31 22:56:02 +0200233
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300234menu "Capsule support"
Jan Kiszkad4d0fec2023-01-18 22:24:59 +0100235
AKASHI Takahiro473d9b32020-11-17 09:27:55 +0900236config EFI_HAVE_CAPSULE_SUPPORT
237 bool
238
239config EFI_RUNTIME_UPDATE_CAPSULE
240 bool "UpdateCapsule() runtime service"
AKASHI Takahiro473d9b32020-11-17 09:27:55 +0900241 select EFI_HAVE_CAPSULE_SUPPORT
242 help
243 Select this option if you want to use UpdateCapsule and
244 QueryCapsuleCapabilities API's.
245
AKASHI Takahiro45b819542020-11-17 09:27:56 +0900246config EFI_CAPSULE_ON_DISK
247 bool "Enable capsule-on-disk support"
Masami Hiramatsuff744862022-03-21 22:37:56 +0900248 depends on SYSRESET
AKASHI Takahiro45b819542020-11-17 09:27:56 +0900249 select EFI_HAVE_CAPSULE_SUPPORT
AKASHI Takahiro45b819542020-11-17 09:27:56 +0900250 help
251 Select this option if you want to use capsule-on-disk feature,
252 that is, capsules can be fetched and executed from files
253 under a specific directory on UEFI system partition instead of
254 via UpdateCapsule API.
255
Ilias Apalodimasa38d0cb2021-06-29 07:55:51 +0300256config EFI_IGNORE_OSINDICATIONS
257 bool "Ignore OsIndications for CapsuleUpdate on-disk"
258 depends on EFI_CAPSULE_ON_DISK
Ilias Apalodimas44fa8ff2024-06-20 23:15:31 +0300259 default y if !EFI_RT_VOLATILE_STORE
Ilias Apalodimasa38d0cb2021-06-29 07:55:51 +0300260 help
261 There are boards where U-Boot does not support SetVariable at runtime.
262 Select this option if you want to use the capsule-on-disk feature
263 without setting the EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED
264 flag in variable OsIndications.
265
AKASHI Takahiro45b819542020-11-17 09:27:56 +0900266config EFI_CAPSULE_ON_DISK_EARLY
267 bool "Initiate capsule-on-disk at U-Boot boottime"
268 depends on EFI_CAPSULE_ON_DISK
AKASHI Takahiro45b819542020-11-17 09:27:56 +0900269 help
270 Normally, without this option enabled, capsules will be
271 executed only at the first time of invoking one of efi command.
272 If this option is enabled, capsules will be enforced to be
273 executed as part of U-Boot initialisation so that they will
274 surely take place whatever is set to distro_bootcmd.
275
Caleb Connolly3744e472024-08-30 13:34:33 +0100276config EFI_CAPSULE_NAMESPACE_GUID
277 string "Namespace for dynamic capsule GUIDs"
278 # v4 UUID as a default for upstream U-Boot boards
279 default "8c9f137e-91dc-427b-b2d6-b420faebaf2a"
280 depends on EFI_HAVE_CAPSULE_SUPPORT
281 help
282 Define the namespace or "salt" GUID used to generate the per-image
283 GUIDs. This should be a GUID in the standard 8-4-4-4-12 format.
284
285 Device vendors are expected to generate their own namespace GUID
286 to avoid conflicts with upstream/community images.
287
AKASHI Takahiro7ff3f3c2020-11-17 09:28:00 +0900288config EFI_CAPSULE_FIRMWARE
289 bool
AKASHI Takahiro7ff3f3c2020-11-17 09:28:00 +0900290
AKASHI Takahiro0d963782020-11-30 18:12:11 +0900291config EFI_CAPSULE_FIRMWARE_MANAGEMENT
292 bool "Capsule: Firmware Management Protocol"
293 depends on EFI_HAVE_CAPSULE_SUPPORT
294 default y
295 help
296 Select this option if you want to enable capsule-based
297 firmware update using Firmware Management Protocol.
298
Ilias Apalodimas967334d2021-06-22 17:38:52 +0300299config EFI_CAPSULE_FIRMWARE_FIT
300 bool "FMP driver for FIT images"
301 depends on FIT
302 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
303 select UPDATE_FIT
304 select DFU
Sughosh Ganua1d9f672022-04-15 11:29:37 +0530305 select SET_DFU_ALT_INFO
Ilias Apalodimas967334d2021-06-22 17:38:52 +0300306 select EFI_CAPSULE_FIRMWARE
307 help
308 Select this option if you want to enable firmware management protocol
309 driver for FIT image
310
311config EFI_CAPSULE_FIRMWARE_RAW
312 bool "FMP driver for raw images"
313 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
314 depends on SANDBOX || (!SANDBOX && !EFI_CAPSULE_FIRMWARE_FIT)
315 select DFU_WRITE_ALT
316 select DFU
Sughosh Ganua1d9f672022-04-15 11:29:37 +0530317 select SET_DFU_ALT_INFO
Ilias Apalodimas967334d2021-06-22 17:38:52 +0300318 select EFI_CAPSULE_FIRMWARE
319 help
320 Select this option if you want to enable firmware management protocol
321 driver for raw image
322
Sughosh Ganu586bb982020-12-30 19:27:09 +0530323config EFI_CAPSULE_AUTHENTICATE
324 bool "Update Capsule authentication"
325 depends on EFI_CAPSULE_FIRMWARE
326 depends on EFI_CAPSULE_ON_DISK
327 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
Alexandru Gagniuc1a69f4d2021-05-24 14:28:57 -0500328 select HASH
Sughosh Ganu586bb982020-12-30 19:27:09 +0530329 select SHA256
330 select RSA
331 select RSA_VERIFY
332 select RSA_VERIFY_WITH_PKEY
333 select X509_CERTIFICATE_PARSER
334 select PKCS7_MESSAGE_PARSER
335 select PKCS7_VERIFY
Sughosh Ganu3f5318f2021-04-07 17:23:31 +0530336 select IMAGE_SIGN_INFO
Masahisa Kojima915e4272021-05-14 09:53:36 +0900337 select EFI_SIGNATURE_SUPPORT
Sughosh Ganu586bb982020-12-30 19:27:09 +0530338 help
339 Select this option if you want to enable capsule
340 authentication
341
Etienne Carriere6326e912023-02-16 18:21:41 +0100342config EFI_CAPSULE_MAX
343 int "Max value for capsule index"
344 default 15
345 range 0 65535
346 help
347 Select the max capsule index value used for capsule report
348 variables. This value is used to create CapsuleMax variable.
349
Jonathan Humphreys0d6f8412024-06-13 15:27:53 -0500350config EFI_CAPSULE_CRT_FILE
351 string "Path to the EFI capsule public key certificate"
Sughosh Ganu3f46bcc2023-08-22 23:10:05 +0530352 depends on EFI_CAPSULE_AUTHENTICATE
353 help
Jonathan Humphreys0d6f8412024-06-13 15:27:53 -0500354 Provides the path to the EFI capsule public key certificate that
355 corresponds to the capsule signing key. This certificate will be used
356 to generate the EFI capsule ESL (signature list file) that gets
357 embedded in the platform's device tree and used for capsule
358 authentication at the time of capsule update.
Sughosh Ganu3f46bcc2023-08-22 23:10:05 +0530359
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300360endmenu
361
362menu "UEFI protocol support"
363
Heinrich Schuchardt3db35912019-05-11 09:53:33 +0200364config EFI_DEVICE_PATH_TO_TEXT
365 bool "Device path to text protocol"
366 default y
367 help
368 The device path to text protocol converts device nodes and paths to
369 human readable strings.
370
Heinrich Schuchardt1cb1a9d2021-01-16 09:44:25 +0100371config EFI_DEVICE_PATH_UTIL
372 bool "Device path utilities protocol"
373 default y
374 help
375 The device path utilities protocol creates and manipulates device
376 paths and device nodes. It is required to run the EFI Shell.
377
Heinrich Schuchardt0404b282021-01-16 09:33:24 +0100378config EFI_DT_FIXUP
379 bool "Device tree fixup protocol"
380 depends on !GENERATE_ACPI_TABLE
381 default y
382 help
383 The EFI device-tree fix-up protocol provides a function to let the
384 firmware apply fix-ups. This may be used by boot loaders.
385
Heinrich Schuchardt0cbab582019-05-08 23:17:38 +0200386config EFI_LOADER_HII
387 bool "HII protocols"
388 default y
389 help
390 The Human Interface Infrastructure is a complicated framework that
391 allows UEFI applications to draw fancy menus and hook strings using
392 a translation framework.
393
394 U-Boot implements enough of its features to be able to run the UEFI
395 Shell, but not more than that.
396
Heinrich Schuchardtb3258842019-05-16 07:52:58 +0200397config EFI_UNICODE_COLLATION_PROTOCOL2
Heinrich Schuchardt532fec72019-05-08 23:24:26 +0200398 bool "Unicode collation protocol"
399 default y
400 help
401 The Unicode collation protocol is used for lexical comparisons. It is
402 required to run the UEFI shell.
403
Heinrich Schuchardtb3258842019-05-16 07:52:58 +0200404if EFI_UNICODE_COLLATION_PROTOCOL2
Heinrich Schuchardt532fec72019-05-08 23:24:26 +0200405
Heinrich Schuchardt58ddcd32018-09-04 19:34:56 +0200406config EFI_UNICODE_CAPITALIZATION
407 bool "Support Unicode capitalization"
Heinrich Schuchardt58ddcd32018-09-04 19:34:56 +0200408 default y
409 help
410 Select this option to enable correct handling of the capitalization of
411 Unicode codepoints in the range 0x0000-0xffff. If this option is not
412 set, only the the correct handling of the letters of the codepage
413 used by the FAT file system is ensured.
414
Heinrich Schuchardt532fec72019-05-08 23:24:26 +0200415endif
416
Sughosh Ganu7064a5d2019-12-29 00:01:05 +0530417config EFI_RNG_PROTOCOL
418 bool "EFI_RNG_PROTOCOL support"
419 depends on DM_RNG
Peter Robinsonfa497522020-04-01 11:15:01 +0100420 default y
Sughosh Ganu7064a5d2019-12-29 00:01:05 +0530421 help
Heinrich Schuchardt7bcc7fc2020-02-14 23:28:58 +0100422 Provide a EFI_RNG_PROTOCOL implementation using the hardware random
423 number generator of the platform.
Sughosh Ganu7064a5d2019-12-29 00:01:05 +0530424
Ilias Apalodimas590fef62020-11-11 11:18:11 +0200425config EFI_TCG2_PROTOCOL
426 bool "EFI_TCG2_PROTOCOL support"
Ilias Apalodimascc29c9b2021-05-11 14:40:58 +0300427 default y
Ilias Apalodimas590fef62020-11-11 11:18:11 +0200428 depends on TPM_V2
Ilias Apalodimascc29c9b2021-05-11 14:40:58 +0300429 select SHA1
430 select SHA256
Ilias Apalodimascc29c9b2021-05-11 14:40:58 +0300431 select SHA384
432 select SHA512
Masahisa Kojima70be5a62021-05-26 12:09:58 +0900433 select HASH
Masahisa Kojimacd1fe7d2021-10-26 17:27:24 +0900434 select SMBIOS_PARSER
Ilias Apalodimas590fef62020-11-11 11:18:11 +0200435 help
436 Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware
437 of the platform.
438
Ilias Apalodimas967650d2020-11-30 11:47:40 +0200439config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE
440 int "EFI_TCG2_PROTOCOL EventLog size"
441 depends on EFI_TCG2_PROTOCOL
Masahisa Kojima8db8a962021-07-14 22:00:01 +0900442 default 65536
Ilias Apalodimas967650d2020-11-30 11:47:40 +0200443 help
444 Define the size of the EventLog for EFI_TCG2_PROTOCOL. Note that
445 this is going to be allocated twice. One for the eventlog it self
446 and one for the configuration table that is required from the spec
447
Etienne Carriereb9064352023-02-16 17:29:48 +0100448config EFI_TCG2_PROTOCOL_MEASURE_DTB
449 bool "Measure DTB with EFI_TCG2_PROTOCOL"
450 depends on EFI_TCG2_PROTOCOL
451 help
452 When enabled, the DTB image passed to the booted EFI image is
453 measured using the EFI TCG2 protocol. Do not enable this feature if
454 the passed DTB contains data that change across platform reboots
455 and cannot be used has a predictable measurement. Otherwise
456 this feature allows better measurement of the system boot
457 sequence.
458
Ilias Apalodimas3510ba72020-02-21 09:55:45 +0200459config EFI_LOAD_FILE2_INITRD
460 bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
Ilias Apalodimasb307e3d2021-03-17 21:55:00 +0200461 default y
Ilias Apalodimas3510ba72020-02-21 09:55:45 +0200462 help
Ilias Apalodimasb307e3d2021-03-17 21:55:00 +0200463 Linux v5.7 and later can make use of this option. If the boot option
464 selected by the UEFI boot manager specifies an existing file to be used
465 as initial RAM disk, a Linux specific Load File2 protocol will be
466 installed and Linux 5.7+ will ignore any initrd=<ramdisk> command line
467 argument.
Ilias Apalodimas3510ba72020-02-21 09:55:45 +0200468
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300469config EFI_RISCV_BOOT_PROTOCOL
470 bool "RISCV_EFI_BOOT_PROTOCOL support"
471 default y
472 depends on RISCV
AKASHI Takahiro1900a3b2020-04-14 11:51:38 +0900473 help
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300474 The EFI_RISCV_BOOT_PROTOCOL is used to transfer the boot hart ID
475 to the next boot stage. It should be enabled as it is meant to
476 replace the transfer via the device-tree. The latter is not
477 possible on systems using ACPI.
AKASHI Takahiro1900a3b2020-04-14 11:51:38 +0900478
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300479endmenu
480
481menu "Misc options"
482config EFI_LOADER_BOUNCE_BUFFER
483 bool "EFI Applications use bounce buffers for DMA operations"
484 depends on ARM64
485 help
486 Some hardware does not support DMA to full 64bit addresses. For this
487 hardware we can create a bounce buffer so that payloads don't have to
488 worry about platform details.
489
490config EFI_GRUB_ARM32_WORKAROUND
491 bool "Workaround for GRUB on 32bit ARM"
492 default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
493 default y
494 depends on ARM && !ARM64
495 help
496 GRUB prior to version 2.04 requires U-Boot to disable caches. This
497 workaround currently is also needed on systems with caches that
498 cannot be managed via CP15.
Masahisa Kojima915e4272021-05-14 09:53:36 +0900499
Jose Marinhoebb61ee2021-03-02 17:26:38 +0000500config EFI_ESRT
501 bool "Enable the UEFI ESRT generation"
502 depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
503 default y
504 help
505 Enabling this option creates the ESRT UEFI system table.
506
Jose Marinhoff72cb32021-12-23 14:51:07 +0000507config EFI_ECPT
508 bool "Enable the UEFI ECPT generation"
509 default y
510 help
511 Enabling this option created the ECPT UEFI table.
512
Vincent Stehléc53cec62022-12-16 17:55:04 +0100513config EFI_EBBR_2_1_CONFORMANCE
514 bool "Add the EBBRv2.1 conformance entry to the ECPT table"
Heinrich Schuchardt7cbf7452024-07-18 14:05:09 +0200515 depends on BOOTMETH_EFI_BOOTMGR
Jose Marinhoe3b7c9b2021-12-17 12:55:05 +0000516 depends on EFI_ECPT
517 depends on EFI_LOADER_HII
518 depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
519 depends on EFI_RNG_PROTOCOL || !DM_RNG
520 depends on EFI_UNICODE_COLLATION_PROTOCOL2
521 default y
522 help
Vincent Stehléc53cec62022-12-16 17:55:04 +0100523 Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
Jose Marinhoe3b7c9b2021-12-17 12:55:05 +0000524
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300525config EFI_SCROLL_ON_CLEAR_SCREEN
526 bool "Avoid overwriting previous output on clear screen"
527 help
528 Instead of erasing the screen content when the console screen should
529 be cleared, emit blank new lines so that previous output is scrolled
530 out of sight rather than overwritten. On serial consoles this allows
531 to capture complete boot logs (except for interactive menus etc.)
532 and can ease debugging related issues.
533
534endmenu
535
536menu "EFI bootmanager"
537
538config EFI_BOOTMGR
539 bool "UEFI Boot Manager"
Sunil V L279d1c82022-01-28 20:48:44 +0530540 default y
Sunil V L279d1c82022-01-28 20:48:44 +0530541 help
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300542 Select this option if you want to select the UEFI binary to be booted
543 via UEFI variables Boot####, BootOrder, and BootNext. You should also
544 normally enable CMD_BOOTEFI_BOOTMGR so that the command is available.
Sunil V L279d1c82022-01-28 20:48:44 +0530545
Masahisa Kojima949c4412023-11-10 13:25:40 +0900546config EFI_HTTP_BOOT
547 bool "EFI HTTP Boot support"
548 select CMD_DNS
549 select CMD_WGET
550 select BLKMAP
551 help
552 Enabling this option adds EFI HTTP Boot support. It allows to
553 directly boot from network.
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300554endmenu
Masahisa Kojima949c4412023-11-10 13:25:40 +0900555
Simon Glassb343ee32024-09-26 23:59:31 +0200556config BOOTEFI_HELLO_COMPILE
557 bool "Compile a standard EFI hello world binary for testing"
558 default y
559 help
560 This compiles a standard EFI hello world application with U-Boot so
561 that it can be used with the test/py testing framework. This is useful
562 for testing that EFI is working at a basic level, and for bringing
563 up EFI support on a new architecture.
564
565 No additional space will be required in the resulting U-Boot binary
566 when this option is enabled.
567
Heinrich Schuchardt0cbab582019-05-08 23:17:38 +0200568endif
Ilias Apalodimas17aea462024-08-30 14:45:27 +0300569
570source "lib/efi/Kconfig"
571
572endmenu