Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 1 | menu "UEFI Support" |
| 2 | |
Alexander Graf | 67ee705 | 2016-03-04 01:10:07 +0100 | [diff] [blame] | 3 | config EFI_LOADER |
Heinrich Schuchardt | 96b236a | 2019-05-11 10:27:58 +0200 | [diff] [blame] | 4 | bool "Support running UEFI applications" |
Tom Rini | 86216cc | 2024-11-15 10:53:58 -0600 | [diff] [blame] | 5 | depends on ( \ |
Heinrich Schuchardt | 30c3a5f | 2019-11-19 04:19:09 +0100 | [diff] [blame] | 6 | ARM && (SYS_CPU = arm1136 || \ |
| 7 | SYS_CPU = arm1176 || \ |
| 8 | SYS_CPU = armv7 || \ |
| 9 | SYS_CPU = armv8) || \ |
Heinrich Schuchardt | 79cea67 | 2019-11-17 10:44:16 +0100 | [diff] [blame] | 10 | X86 || RISCV || SANDBOX) |
Tom Rini | dd487d2 | 2025-01-14 19:22:10 -0600 | [diff] [blame^] | 11 | # We have not fully removed the requirement for some block device |
| 12 | depends on BLK |
Alexander Graf | 5e24717 | 2018-01-24 14:54:21 +0100 | [diff] [blame] | 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 |
Simon Glass | 49a643b | 2021-11-03 21:09:07 -0600 | [diff] [blame] | 17 | depends on !EFI_APP |
Heinrich Schuchardt | ac212dc | 2019-11-20 18:48:02 +0100 | [diff] [blame] | 18 | default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8 |
Heinrich Schuchardt | 013aabb | 2022-05-02 06:27:00 +0200 | [diff] [blame] | 19 | select CHARSET |
Tom Rini | 7d3684a | 2023-01-16 15:46:49 -0500 | [diff] [blame] | 20 | # We need to send DM events, dynamically, in the EFI block driver |
AKASHI Takahiro | 2381f2e | 2022-04-19 10:05:12 +0900 | [diff] [blame] | 21 | select DM_EVENT |
| 22 | select EVENT_DYNAMIC |
Adam Ford | 70c8f05 | 2018-02-06 12:14:28 -0600 | [diff] [blame] | 23 | select LIB_UUID |
Sughosh Ganu | fa0ddab | 2024-10-15 21:07:06 +0530 | [diff] [blame] | 24 | select LMB |
Tom Rini | 86216cc | 2024-11-15 10:53:58 -0600 | [diff] [blame] | 25 | select OF_LIBFDT |
AKASHI Takahiro | ae18a67 | 2022-04-19 10:01:56 +0900 | [diff] [blame] | 26 | imply PARTITION_UUIDS |
Heinrich Schuchardt | 9e18bfa | 2019-01-22 21:35:23 +0100 | [diff] [blame] | 27 | select REGEX |
Heinrich Schuchardt | 6c46aaa | 2020-03-21 20:45:50 +0100 | [diff] [blame] | 28 | imply FAT |
| 29 | imply FAT_WRITE |
Heinrich Schuchardt | 29db4c5 | 2019-12-04 22:58:58 +0100 | [diff] [blame] | 30 | imply USB_KEYBOARD_FN_KEYS |
Heinrich Schuchardt | 8a7514a | 2020-01-15 00:49:35 +0100 | [diff] [blame] | 31 | imply VIDEO_ANSI |
Alexander Graf | 67ee705 | 2016-03-04 01:10:07 +0100 | [diff] [blame] | 32 | help |
Heinrich Schuchardt | 96b236a | 2019-05-11 10:27:58 +0200 | [diff] [blame] | 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. |
Alexander Graf | 7c00a3c | 2016-05-11 18:25:48 +0200 | [diff] [blame] | 37 | |
Heinrich Schuchardt | 0cbab58 | 2019-05-08 23:17:38 +0200 | [diff] [blame] | 38 | if EFI_LOADER |
| 39 | |
AKASHI Takahiro | 9b08b9a | 2024-01-17 13:39:41 +0900 | [diff] [blame] | 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 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 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 |
Heinrich Schuchardt | b2625e8 | 2021-01-15 19:02:50 +0100 | [diff] [blame] | 78 | default y |
| 79 | help |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 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" |
Heinrich Schuchardt | b2625e8 | 2021-01-15 19:02:50 +0100 | [diff] [blame] | 101 | |
Heinrich Schuchardt | 41bc601 | 2020-07-14 19:18:33 +0200 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 09a8d50 | 2020-03-19 18:21:58 +0000 | [diff] [blame] | 108 | config EFI_VARIABLE_FILE_STORE |
| 109 | bool "Store non-volatile UEFI variables as file" |
| 110 | depends on FAT_WRITE |
Heinrich Schuchardt | 41bc601 | 2020-07-14 19:18:33 +0200 | [diff] [blame] | 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 | |
Ilias Apalodimas | 86ba869 | 2024-04-18 15:54:50 +0300 | [diff] [blame] | 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, |
Michal Simek | 0ac2798 | 2024-07-16 15:56:51 +0200 | [diff] [blame] | 120 | since the OS doesn't know how to write that file. At the same time |
Ilias Apalodimas | 86ba869 | 2024-04-18 15:54:50 +0300 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 41bc601 | 2020-07-14 19:18:33 +0200 | [diff] [blame] | 131 | config EFI_MM_COMM_TEE |
Abdellatif El Khlifi | 431c7b5 | 2023-08-04 14:33:44 +0100 | [diff] [blame] | 132 | bool "UEFI variables storage service via the trusted world" |
Tom Rini | 74aad48 | 2023-07-24 19:51:05 -0400 | [diff] [blame] | 133 | depends on OPTEE |
Heinrich Schuchardt | 09a8d50 | 2020-03-19 18:21:58 +0000 | [diff] [blame] | 134 | help |
Abdellatif El Khlifi | 431c7b5 | 2023-08-04 14:33:44 +0100 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 41bc601 | 2020-07-14 19:18:33 +0200 | [diff] [blame] | 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 | |
Abdellatif El Khlifi | 431c7b5 | 2023-08-04 14:33:44 +0100 | [diff] [blame] | 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 | |
Tom Saeger | 79696ce | 2022-03-22 15:21:10 -0600 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 41bc601 | 2020-07-14 19:18:33 +0200 | [diff] [blame] | 183 | endchoice |
Heinrich Schuchardt | 09a8d50 | 2020-03-19 18:21:58 +0000 | [diff] [blame] | 184 | |
Heinrich Schuchardt | 4b7d5c1 | 2020-07-14 21:25:28 +0200 | [diff] [blame] | 185 | config EFI_VARIABLES_PRESEED |
| 186 | bool "Initial values for UEFI variables" |
Tom Saeger | 79696ce | 2022-03-22 15:21:10 -0600 | [diff] [blame] | 187 | depends on !EFI_MM_COMM_TEE |
Heinrich Schuchardt | 4b7d5c1 | 2020-07-14 21:25:28 +0200 | [diff] [blame] | 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" |
Michal Simek | c44f36f | 2024-04-16 08:55:17 +0200 | [diff] [blame] | 198 | default "ubootefi.var" |
Heinrich Schuchardt | 4b7d5c1 | 2020-07-14 21:25:28 +0200 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 12f1861 | 2020-12-20 11:05:38 +0100 | [diff] [blame] | 208 | config EFI_VAR_BUF_SIZE |
| 209 | int "Memory size of the UEFI variable store" |
Ilias Apalodimas | c1a8e6d | 2023-11-06 17:47:53 +0200 | [diff] [blame] | 210 | default 131072 |
Heinrich Schuchardt | 12f1861 | 2020-12-20 11:05:38 +0100 | [diff] [blame] | 211 | range 4096 2147483647 |
| 212 | help |
| 213 | This defines the size in bytes of the memory area reserved for keeping |
| 214 | UEFI variables. |
| 215 | |
Ilias Apalodimas | c1a8e6d | 2023-11-06 17:47:53 +0200 | [diff] [blame] | 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. |
Heinrich Schuchardt | 12f1861 | 2020-12-20 11:05:38 +0100 | [diff] [blame] | 222 | |
Ilias Apalodimas | c1a8e6d | 2023-11-06 17:47:53 +0200 | [diff] [blame] | 223 | Minimum 4096, default 131072 |
Heinrich Schuchardt | 12f1861 | 2020-12-20 11:05:38 +0100 | [diff] [blame] | 224 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 225 | config EFI_PLATFORM_LANG_CODES |
| 226 | string "Language codes supported by firmware" |
| 227 | default "en-US" |
Heinrich Schuchardt | f2856ad | 2019-05-31 22:56:02 +0200 | [diff] [blame] | 228 | help |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 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. |
Heinrich Schuchardt | f2856ad | 2019-05-31 22:56:02 +0200 | [diff] [blame] | 233 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 234 | endmenu |
Heinrich Schuchardt | f2856ad | 2019-05-31 22:56:02 +0200 | [diff] [blame] | 235 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 236 | menu "Capsule support" |
Jan Kiszka | d4d0fec | 2023-01-18 22:24:59 +0100 | [diff] [blame] | 237 | |
AKASHI Takahiro | 473d9b3 | 2020-11-17 09:27:55 +0900 | [diff] [blame] | 238 | config EFI_HAVE_CAPSULE_SUPPORT |
| 239 | bool |
| 240 | |
| 241 | config EFI_RUNTIME_UPDATE_CAPSULE |
| 242 | bool "UpdateCapsule() runtime service" |
AKASHI Takahiro | 473d9b3 | 2020-11-17 09:27:55 +0900 | [diff] [blame] | 243 | select EFI_HAVE_CAPSULE_SUPPORT |
| 244 | help |
| 245 | Select this option if you want to use UpdateCapsule and |
| 246 | QueryCapsuleCapabilities API's. |
| 247 | |
AKASHI Takahiro | 45b81954 | 2020-11-17 09:27:56 +0900 | [diff] [blame] | 248 | config EFI_CAPSULE_ON_DISK |
| 249 | bool "Enable capsule-on-disk support" |
Masami Hiramatsu | ff74486 | 2022-03-21 22:37:56 +0900 | [diff] [blame] | 250 | depends on SYSRESET |
AKASHI Takahiro | 45b81954 | 2020-11-17 09:27:56 +0900 | [diff] [blame] | 251 | select EFI_HAVE_CAPSULE_SUPPORT |
AKASHI Takahiro | 45b81954 | 2020-11-17 09:27:56 +0900 | [diff] [blame] | 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 | |
Ilias Apalodimas | a38d0cb | 2021-06-29 07:55:51 +0300 | [diff] [blame] | 258 | config EFI_IGNORE_OSINDICATIONS |
| 259 | bool "Ignore OsIndications for CapsuleUpdate on-disk" |
| 260 | depends on EFI_CAPSULE_ON_DISK |
Ilias Apalodimas | 44fa8ff | 2024-06-20 23:15:31 +0300 | [diff] [blame] | 261 | default y if !EFI_RT_VOLATILE_STORE |
Ilias Apalodimas | a38d0cb | 2021-06-29 07:55:51 +0300 | [diff] [blame] | 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 | |
AKASHI Takahiro | 45b81954 | 2020-11-17 09:27:56 +0900 | [diff] [blame] | 268 | config EFI_CAPSULE_ON_DISK_EARLY |
| 269 | bool "Initiate capsule-on-disk at U-Boot boottime" |
| 270 | depends on EFI_CAPSULE_ON_DISK |
AKASHI Takahiro | 45b81954 | 2020-11-17 09:27:56 +0900 | [diff] [blame] | 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 | |
Caleb Connolly | 3744e47 | 2024-08-30 13:34:33 +0100 | [diff] [blame] | 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 | |
AKASHI Takahiro | 7ff3f3c | 2020-11-17 09:28:00 +0900 | [diff] [blame] | 290 | config EFI_CAPSULE_FIRMWARE |
| 291 | bool |
AKASHI Takahiro | 7ff3f3c | 2020-11-17 09:28:00 +0900 | [diff] [blame] | 292 | |
AKASHI Takahiro | 0d96378 | 2020-11-30 18:12:11 +0900 | [diff] [blame] | 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 | |
Ilias Apalodimas | 967334d | 2021-06-22 17:38:52 +0300 | [diff] [blame] | 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 |
Sughosh Ganu | a1d9f67 | 2022-04-15 11:29:37 +0530 | [diff] [blame] | 307 | select SET_DFU_ALT_INFO |
Ilias Apalodimas | 967334d | 2021-06-22 17:38:52 +0300 | [diff] [blame] | 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 |
Sughosh Ganu | a1d9f67 | 2022-04-15 11:29:37 +0530 | [diff] [blame] | 319 | select SET_DFU_ALT_INFO |
Ilias Apalodimas | 967334d | 2021-06-22 17:38:52 +0300 | [diff] [blame] | 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 | |
Sughosh Ganu | 586bb98 | 2020-12-30 19:27:09 +0530 | [diff] [blame] | 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 |
Alexandru Gagniuc | 1a69f4d | 2021-05-24 14:28:57 -0500 | [diff] [blame] | 330 | select HASH |
Sughosh Ganu | 586bb98 | 2020-12-30 19:27:09 +0530 | [diff] [blame] | 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 |
Sughosh Ganu | 3f5318f | 2021-04-07 17:23:31 +0530 | [diff] [blame] | 338 | select IMAGE_SIGN_INFO |
Masahisa Kojima | 915e427 | 2021-05-14 09:53:36 +0900 | [diff] [blame] | 339 | select EFI_SIGNATURE_SUPPORT |
Sughosh Ganu | 586bb98 | 2020-12-30 19:27:09 +0530 | [diff] [blame] | 340 | help |
| 341 | Select this option if you want to enable capsule |
| 342 | authentication |
| 343 | |
Etienne Carriere | 6326e91 | 2023-02-16 18:21:41 +0100 | [diff] [blame] | 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 | |
Jonathan Humphreys | 0d6f841 | 2024-06-13 15:27:53 -0500 | [diff] [blame] | 352 | config EFI_CAPSULE_CRT_FILE |
| 353 | string "Path to the EFI capsule public key certificate" |
Sughosh Ganu | 3f46bcc | 2023-08-22 23:10:05 +0530 | [diff] [blame] | 354 | depends on EFI_CAPSULE_AUTHENTICATE |
| 355 | help |
Jonathan Humphreys | 0d6f841 | 2024-06-13 15:27:53 -0500 | [diff] [blame] | 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. |
Sughosh Ganu | 3f46bcc | 2023-08-22 23:10:05 +0530 | [diff] [blame] | 361 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 362 | endmenu |
| 363 | |
| 364 | menu "UEFI protocol support" |
| 365 | |
Heinrich Schuchardt | 3db3591 | 2019-05-11 09:53:33 +0200 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 1cb1a9d | 2021-01-16 09:44:25 +0100 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 0404b28 | 2021-01-16 09:33:24 +0100 | [diff] [blame] | 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 | |
Heinrich Schuchardt | 0cbab58 | 2019-05-08 23:17:38 +0200 | [diff] [blame] | 388 | config EFI_LOADER_HII |
| 389 | bool "HII protocols" |
| 390 | default y |
| 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 | |
Heinrich Schuchardt | b325884 | 2019-05-16 07:52:58 +0200 | [diff] [blame] | 399 | config EFI_UNICODE_COLLATION_PROTOCOL2 |
Heinrich Schuchardt | 532fec7 | 2019-05-08 23:24:26 +0200 | [diff] [blame] | 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 | |
Heinrich Schuchardt | b325884 | 2019-05-16 07:52:58 +0200 | [diff] [blame] | 406 | if EFI_UNICODE_COLLATION_PROTOCOL2 |
Heinrich Schuchardt | 532fec7 | 2019-05-08 23:24:26 +0200 | [diff] [blame] | 407 | |
Heinrich Schuchardt | 58ddcd3 | 2018-09-04 19:34:56 +0200 | [diff] [blame] | 408 | config EFI_UNICODE_CAPITALIZATION |
| 409 | bool "Support Unicode capitalization" |
Heinrich Schuchardt | 58ddcd3 | 2018-09-04 19:34:56 +0200 | [diff] [blame] | 410 | default y |
| 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 | |
Heinrich Schuchardt | 532fec7 | 2019-05-08 23:24:26 +0200 | [diff] [blame] | 417 | endif |
| 418 | |
Sughosh Ganu | 7064a5d | 2019-12-29 00:01:05 +0530 | [diff] [blame] | 419 | config EFI_RNG_PROTOCOL |
| 420 | bool "EFI_RNG_PROTOCOL support" |
| 421 | depends on DM_RNG |
Peter Robinson | fa49752 | 2020-04-01 11:15:01 +0100 | [diff] [blame] | 422 | default y |
Sughosh Ganu | 7064a5d | 2019-12-29 00:01:05 +0530 | [diff] [blame] | 423 | help |
Heinrich Schuchardt | 7bcc7fc | 2020-02-14 23:28:58 +0100 | [diff] [blame] | 424 | Provide a EFI_RNG_PROTOCOL implementation using the hardware random |
| 425 | number generator of the platform. |
Sughosh Ganu | 7064a5d | 2019-12-29 00:01:05 +0530 | [diff] [blame] | 426 | |
Ilias Apalodimas | 590fef6 | 2020-11-11 11:18:11 +0200 | [diff] [blame] | 427 | config EFI_TCG2_PROTOCOL |
| 428 | bool "EFI_TCG2_PROTOCOL support" |
Ilias Apalodimas | cc29c9b | 2021-05-11 14:40:58 +0300 | [diff] [blame] | 429 | default y |
Ilias Apalodimas | 590fef6 | 2020-11-11 11:18:11 +0200 | [diff] [blame] | 430 | depends on TPM_V2 |
Ilias Apalodimas | cc29c9b | 2021-05-11 14:40:58 +0300 | [diff] [blame] | 431 | select SHA1 |
| 432 | select SHA256 |
Ilias Apalodimas | cc29c9b | 2021-05-11 14:40:58 +0300 | [diff] [blame] | 433 | select SHA384 |
| 434 | select SHA512 |
Masahisa Kojima | 70be5a6 | 2021-05-26 12:09:58 +0900 | [diff] [blame] | 435 | select HASH |
Masahisa Kojima | cd1fe7d | 2021-10-26 17:27:24 +0900 | [diff] [blame] | 436 | select SMBIOS_PARSER |
Ilias Apalodimas | 590fef6 | 2020-11-11 11:18:11 +0200 | [diff] [blame] | 437 | help |
| 438 | Provide a EFI_TCG2_PROTOCOL implementation using the TPM hardware |
| 439 | of the platform. |
| 440 | |
Ilias Apalodimas | 967650d | 2020-11-30 11:47:40 +0200 | [diff] [blame] | 441 | config EFI_TCG2_PROTOCOL_EVENTLOG_SIZE |
| 442 | int "EFI_TCG2_PROTOCOL EventLog size" |
| 443 | depends on EFI_TCG2_PROTOCOL |
Masahisa Kojima | 8db8a96 | 2021-07-14 22:00:01 +0900 | [diff] [blame] | 444 | default 65536 |
Ilias Apalodimas | 967650d | 2020-11-30 11:47:40 +0200 | [diff] [blame] | 445 | help |
| 446 | Define the size of the EventLog for EFI_TCG2_PROTOCOL. Note that |
| 447 | this is going to be allocated twice. One for the eventlog it self |
| 448 | and one for the configuration table that is required from the spec |
| 449 | |
Etienne Carriere | b906435 | 2023-02-16 17:29:48 +0100 | [diff] [blame] | 450 | config EFI_TCG2_PROTOCOL_MEASURE_DTB |
| 451 | bool "Measure DTB with EFI_TCG2_PROTOCOL" |
| 452 | depends on EFI_TCG2_PROTOCOL |
| 453 | help |
| 454 | When enabled, the DTB image passed to the booted EFI image is |
| 455 | measured using the EFI TCG2 protocol. Do not enable this feature if |
| 456 | the passed DTB contains data that change across platform reboots |
| 457 | and cannot be used has a predictable measurement. Otherwise |
| 458 | this feature allows better measurement of the system boot |
| 459 | sequence. |
| 460 | |
Ilias Apalodimas | 3510ba7 | 2020-02-21 09:55:45 +0200 | [diff] [blame] | 461 | config EFI_LOAD_FILE2_INITRD |
| 462 | bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk" |
Ilias Apalodimas | b307e3d | 2021-03-17 21:55:00 +0200 | [diff] [blame] | 463 | default y |
Ilias Apalodimas | 3510ba7 | 2020-02-21 09:55:45 +0200 | [diff] [blame] | 464 | help |
Ilias Apalodimas | b307e3d | 2021-03-17 21:55:00 +0200 | [diff] [blame] | 465 | Linux v5.7 and later can make use of this option. If the boot option |
| 466 | selected by the UEFI boot manager specifies an existing file to be used |
| 467 | as initial RAM disk, a Linux specific Load File2 protocol will be |
| 468 | installed and Linux 5.7+ will ignore any initrd=<ramdisk> command line |
| 469 | argument. |
Ilias Apalodimas | 3510ba7 | 2020-02-21 09:55:45 +0200 | [diff] [blame] | 470 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 471 | config EFI_RISCV_BOOT_PROTOCOL |
| 472 | bool "RISCV_EFI_BOOT_PROTOCOL support" |
| 473 | default y |
| 474 | depends on RISCV |
AKASHI Takahiro | 1900a3b | 2020-04-14 11:51:38 +0900 | [diff] [blame] | 475 | help |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 476 | The EFI_RISCV_BOOT_PROTOCOL is used to transfer the boot hart ID |
| 477 | to the next boot stage. It should be enabled as it is meant to |
| 478 | replace the transfer via the device-tree. The latter is not |
| 479 | possible on systems using ACPI. |
AKASHI Takahiro | 1900a3b | 2020-04-14 11:51:38 +0900 | [diff] [blame] | 480 | |
Adriano Cordova | 9debc90 | 2024-12-04 00:05:25 -0300 | [diff] [blame] | 481 | config EFI_IP4_CONFIG2_PROTOCOL |
| 482 | bool "EFI_IP4_CONFIG2_PROTOCOL support" |
| 483 | default y if ARCH_QEMU || SANDBOX |
| 484 | depends on NET || NET_LWIP |
| 485 | help |
| 486 | Provides an implementation of the EFI_IP4_CONFIG2_PROTOCOL, this |
| 487 | protocol can be used to set and get the current ip address and |
| 488 | other network information. |
| 489 | |
Adriano Cordova | e9b19eb | 2024-12-04 00:05:26 -0300 | [diff] [blame] | 490 | config EFI_HTTP_PROTOCOL |
| 491 | bool "EFI_HTTP_PROTOCOL support" |
| 492 | default y if ARCH_QEMU || SANDBOX |
| 493 | depends on WGET |
| 494 | help |
| 495 | Provides an EFI HTTP driver implementing the EFI_HTTP_PROTOCOL. and |
| 496 | EFI_HTTP_SERVICE_BINDING_PROTOCOL. |
| 497 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 498 | endmenu |
| 499 | |
| 500 | menu "Misc options" |
| 501 | config EFI_LOADER_BOUNCE_BUFFER |
| 502 | bool "EFI Applications use bounce buffers for DMA operations" |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 503 | help |
| 504 | Some hardware does not support DMA to full 64bit addresses. For this |
| 505 | hardware we can create a bounce buffer so that payloads don't have to |
| 506 | worry about platform details. |
| 507 | |
| 508 | config EFI_GRUB_ARM32_WORKAROUND |
| 509 | bool "Workaround for GRUB on 32bit ARM" |
| 510 | default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU |
| 511 | default y |
| 512 | depends on ARM && !ARM64 |
| 513 | help |
| 514 | GRUB prior to version 2.04 requires U-Boot to disable caches. This |
| 515 | workaround currently is also needed on systems with caches that |
| 516 | cannot be managed via CP15. |
Masahisa Kojima | 915e427 | 2021-05-14 09:53:36 +0900 | [diff] [blame] | 517 | |
Jose Marinho | ebb61ee | 2021-03-02 17:26:38 +0000 | [diff] [blame] | 518 | config EFI_ESRT |
| 519 | bool "Enable the UEFI ESRT generation" |
| 520 | depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT |
| 521 | default y |
| 522 | help |
| 523 | Enabling this option creates the ESRT UEFI system table. |
| 524 | |
Jose Marinho | ff72cb3 | 2021-12-23 14:51:07 +0000 | [diff] [blame] | 525 | config EFI_ECPT |
| 526 | bool "Enable the UEFI ECPT generation" |
| 527 | default y |
| 528 | help |
| 529 | Enabling this option created the ECPT UEFI table. |
| 530 | |
Vincent Stehlé | c53cec6 | 2022-12-16 17:55:04 +0100 | [diff] [blame] | 531 | config EFI_EBBR_2_1_CONFORMANCE |
| 532 | bool "Add the EBBRv2.1 conformance entry to the ECPT table" |
Heinrich Schuchardt | 7cbf745 | 2024-07-18 14:05:09 +0200 | [diff] [blame] | 533 | depends on BOOTMETH_EFI_BOOTMGR |
Jose Marinho | e3b7c9b | 2021-12-17 12:55:05 +0000 | [diff] [blame] | 534 | depends on EFI_ECPT |
| 535 | depends on EFI_LOADER_HII |
| 536 | depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV |
| 537 | depends on EFI_RNG_PROTOCOL || !DM_RNG |
| 538 | depends on EFI_UNICODE_COLLATION_PROTOCOL2 |
| 539 | default y |
| 540 | help |
Vincent Stehlé | c53cec6 | 2022-12-16 17:55:04 +0100 | [diff] [blame] | 541 | Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table. |
Jose Marinho | e3b7c9b | 2021-12-17 12:55:05 +0000 | [diff] [blame] | 542 | |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 543 | config EFI_SCROLL_ON_CLEAR_SCREEN |
| 544 | bool "Avoid overwriting previous output on clear screen" |
| 545 | help |
| 546 | Instead of erasing the screen content when the console screen should |
| 547 | be cleared, emit blank new lines so that previous output is scrolled |
| 548 | out of sight rather than overwritten. On serial consoles this allows |
| 549 | to capture complete boot logs (except for interactive menus etc.) |
| 550 | and can ease debugging related issues. |
| 551 | |
| 552 | endmenu |
| 553 | |
| 554 | menu "EFI bootmanager" |
| 555 | |
| 556 | config EFI_BOOTMGR |
| 557 | bool "UEFI Boot Manager" |
Sunil V L | 279d1c8 | 2022-01-28 20:48:44 +0530 | [diff] [blame] | 558 | default y |
Sunil V L | 279d1c8 | 2022-01-28 20:48:44 +0530 | [diff] [blame] | 559 | help |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 560 | Select this option if you want to select the UEFI binary to be booted |
| 561 | via UEFI variables Boot####, BootOrder, and BootNext. You should also |
| 562 | normally enable CMD_BOOTEFI_BOOTMGR so that the command is available. |
Sunil V L | 279d1c8 | 2022-01-28 20:48:44 +0530 | [diff] [blame] | 563 | |
Masahisa Kojima | 949c441 | 2023-11-10 13:25:40 +0900 | [diff] [blame] | 564 | config EFI_HTTP_BOOT |
| 565 | bool "EFI HTTP Boot support" |
Heinrich Schuchardt | c7a6a80 | 2024-10-19 12:59:57 +0200 | [diff] [blame] | 566 | depends on NET || NET_LWIP |
| 567 | select CMD_NET |
Masahisa Kojima | 949c441 | 2023-11-10 13:25:40 +0900 | [diff] [blame] | 568 | select CMD_DNS |
| 569 | select CMD_WGET |
| 570 | select BLKMAP |
| 571 | help |
| 572 | Enabling this option adds EFI HTTP Boot support. It allows to |
| 573 | directly boot from network. |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 574 | endmenu |
Masahisa Kojima | 949c441 | 2023-11-10 13:25:40 +0900 | [diff] [blame] | 575 | |
Simon Glass | b343ee3 | 2024-09-26 23:59:31 +0200 | [diff] [blame] | 576 | config BOOTEFI_HELLO_COMPILE |
| 577 | bool "Compile a standard EFI hello world binary for testing" |
| 578 | default y |
| 579 | help |
| 580 | This compiles a standard EFI hello world application with U-Boot so |
| 581 | that it can be used with the test/py testing framework. This is useful |
| 582 | for testing that EFI is working at a basic level, and for bringing |
| 583 | up EFI support on a new architecture. |
| 584 | |
| 585 | No additional space will be required in the resulting U-Boot binary |
| 586 | when this option is enabled. |
| 587 | |
Simon Glass | 8a4ee05 | 2024-11-07 14:31:41 -0700 | [diff] [blame] | 588 | config BOOTEFI_TESTAPP_COMPILE |
| 589 | bool "Compile an EFI test app for testing" |
| 590 | default y |
| 591 | help |
| 592 | This compiles an app designed for testing. It is packed into an image |
| 593 | by the test.py testing frame in the setup_efi_image() function. |
| 594 | |
| 595 | No additional space will be required in the resulting U-Boot binary |
| 596 | when this option is enabled. |
| 597 | |
Heinrich Schuchardt | 0cbab58 | 2019-05-08 23:17:38 +0200 | [diff] [blame] | 598 | endif |
Ilias Apalodimas | 17aea46 | 2024-08-30 14:45:27 +0300 | [diff] [blame] | 599 | |
| 600 | source "lib/efi/Kconfig" |
| 601 | |
| 602 | endmenu |