blob: 9fa8789bc2b12253d3a77572089be1bac22f7ebf [file] [log] [blame]
Simon Glasscf298162020-09-10 20:21:13 -06001menu "Boot options"
2
3menu "Boot images"
4
Simon Glass12a7ea02023-09-14 10:55:49 -06005menuconfig FIT
6 bool "Flattened Image Tree (FIT)"
Alexandru Gagniuc92055e12021-09-02 19:54:21 -05007 select HASH
Simon Glasscf298162020-09-10 20:21:13 -06008 select MD5
9 select SHA1
Alexandru Gagniuceb5171d2021-09-02 19:54:17 -050010 imply SHA256
Simon Glasscf298162020-09-10 20:21:13 -060011 help
12 This option allows you to boot the new uImage structure,
13 Flattened Image Tree. FIT is formally a FDT, which can include
14 images of various types (kernel, FDT blob, ramdisk, etc.)
15 in a single blob. To boot this new uImage structure,
16 pass the address of the blob to the "bootm" command.
17 FIT is very flexible, supporting compression, multiple images,
18 multiple configurations, verification through hashing and also
19 verified boot (secure boot using RSA).
20
Simon Glass12a7ea02023-09-14 10:55:49 -060021if FIT
Simon Glassd6b318d2021-12-18 11:27:50 -070022
Simon Glasscf298162020-09-10 20:21:13 -060023config FIT_EXTERNAL_OFFSET
24 hex "FIT external data offset"
25 default 0x0
26 help
27 This specifies a data offset in fit image.
28 The offset is from data payload offset to the beginning of
29 fit image header. When specifies a offset, specific data
30 could be put in the hole between data payload and fit image
31 header, such as CSF data on i.MX platform.
32
Simon Glass6f3c2d82021-02-15 17:08:10 -070033config FIT_FULL_CHECK
34 bool "Do a full check of the FIT before using it"
35 default y
36 help
37 Enable this do a full check of the FIT to make sure it is valid. This
38 helps to protect against carefully crafted FITs which take advantage
39 of bugs or omissions in the code. This includes a bad structure,
40 multiple root nodes and the like.
41
Simon Glasscf298162020-09-10 20:21:13 -060042config FIT_SIGNATURE
43 bool "Enable signature verification of FIT uImages"
Simon Glass12a7ea02023-09-14 10:55:49 -060044 depends on DM
Simon Glasscf298162020-09-10 20:21:13 -060045 select HASH
Alexandru Gagniuc61416fe2021-07-29 11:47:18 -050046 imply RSA
47 imply RSA_VERIFY
Simon Glasscf298162020-09-10 20:21:13 -060048 select IMAGE_SIGN_INFO
Simon Glass6f3c2d82021-02-15 17:08:10 -070049 select FIT_FULL_CHECK
Simon Glasscf298162020-09-10 20:21:13 -060050 help
51 This option enables signature verification of FIT uImages,
52 using a hash signed and verified using RSA. If
53 CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
54 hashing is available using hardware, then the RSA library will use
55 it. See doc/uImage.FIT/signature.txt for more details.
56
57 WARNING: When relying on signed FIT images with a required signature
58 check the legacy image format is disabled by default, so that
59 unsigned images cannot be loaded. If a board needs the legacy image
60 format support in this case, enable it using
61 CONFIG_LEGACY_IMAGE_FORMAT.
62
63config FIT_SIGNATURE_MAX_SIZE
64 hex "Max size of signed FIT structures"
65 depends on FIT_SIGNATURE
66 default 0x10000000
67 help
68 This option sets a max size in bytes for verified FIT uImages.
69 A sane value of 256MB protects corrupted DTB structures from overlapping
70 device memory. Assure this size does not extend past expected storage
71 space.
72
Simon Glassad74aed2021-07-14 17:05:31 -050073config FIT_RSASSA_PSS
Simon Glasscf298162020-09-10 20:21:13 -060074 bool "Support rsassa-pss signature scheme of FIT image contents"
75 depends on FIT_SIGNATURE
Simon Glasscf298162020-09-10 20:21:13 -060076 help
77 Enable this to support the pss padding algorithm as described
78 in the rfc8017 (https://tools.ietf.org/html/rfc8017).
79
80config FIT_CIPHER
81 bool "Enable ciphering data in a FIT uImages"
Simon Glass12a7ea02023-09-14 10:55:49 -060082 depends on DM
Simon Glasscf298162020-09-10 20:21:13 -060083 select AES
84 help
85 Enable the feature of data ciphering/unciphering in the tool mkimage
86 and in the u-boot support of the FIT image.
87
88config FIT_VERBOSE
89 bool "Show verbose messages when FIT images fail"
90 help
91 Generally a system will have valid FIT images so debug messages
92 are a waste of code space. If you are debugging your images then
93 you can enable this option to get more verbose information about
94 failures.
95
96config FIT_BEST_MATCH
97 bool "Select the best match for the kernel device tree"
98 help
99 When no configuration is explicitly selected, default to the
100 one whose fdt's compatibility field best matches that of
101 U-Boot itself. A match is considered "best" if it matches the
102 most specific compatibility entry of U-Boot's fdt's root node.
103 The order of entries in the configuration's fdt is ignored.
104
105config FIT_IMAGE_POST_PROCESS
106 bool "Enable post-processing of FIT artifacts after loading by U-Boot"
Manorit Chawdhry86fab112023-07-14 11:22:40 +0530107 depends on SOCFPGA_SECURE_VAB_AUTH
Simon Glasscf298162020-09-10 20:21:13 -0600108 help
109 Allows doing any sort of manipulation to blobs after they got extracted
110 from FIT images like stripping off headers or modifying the size of the
111 blob, verification, authentication, decryption etc. in a platform or
112 board specific way. In order to use this feature a platform or board-
113 specific implementation of board_fit_image_post_process() must be
114 provided. Also, anything done during this post-processing step would
115 need to be comprehended in how the images were prepared before being
116 injected into the FIT creation (i.e. the blobs would have been pre-
117 processed before being added to the FIT image).
118
Ravik Hasija7a018822021-01-27 14:01:48 -0800119config FIT_PRINT
120 bool "Support FIT printing"
121 default y
122 help
123 Support printing the content of the fitImage in a verbose manner.
124
Simon Glasscf298162020-09-10 20:21:13 -0600125config SPL_FIT
126 bool "Support Flattened Image Tree within SPL"
Simon Glass4d8ea262023-09-14 10:55:52 -0600127 depends on SPL
Alexandru Gagniuc92055e12021-09-02 19:54:21 -0500128 select SPL_HASH
Simon Glasscf298162020-09-10 20:21:13 -0600129 select SPL_OF_LIBFDT
130
131config SPL_FIT_PRINT
132 bool "Support FIT printing within SPL"
133 depends on SPL_FIT
134 help
135 Support printing the content of the fitImage in a verbose manner in SPL.
136
Simon Glass6f3c2d82021-02-15 17:08:10 -0700137config SPL_FIT_FULL_CHECK
138 bool "Do a full check of the FIT before using it"
Tom Rini90c78882022-12-04 10:14:20 -0500139 depends on SPL_FIT
Simon Glass6f3c2d82021-02-15 17:08:10 -0700140 help
141 Enable this do a full check of the FIT to make sure it is valid. This
142 helps to protect against carefully crafted FITs which take advantage
143 of bugs or omissions in the code. This includes a bad structure,
144 multiple root nodes and the like.
145
Simon Glasscf298162020-09-10 20:21:13 -0600146config SPL_FIT_SIGNATURE
147 bool "Enable signature verification of FIT firmware within SPL"
148 depends on SPL_DM
Klaus Heinrich Kiwibdb7f262021-02-09 15:41:54 -0300149 depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
Klaus Heinrich Kiwi6ce28132021-02-09 15:41:53 -0300150 select FIT_SIGNATURE
Simon Glasscf298162020-09-10 20:21:13 -0600151 select SPL_FIT
Simon Glass0c6bdbb2021-07-10 21:14:25 -0600152 select SPL_CRYPTO
Alexandru Gagniuc07212092021-09-02 19:54:19 -0500153 select SPL_HASH
Alexandru Gagniuc61416fe2021-07-29 11:47:18 -0500154 imply SPL_RSA
155 imply SPL_RSA_VERIFY
Simon Glasscf298162020-09-10 20:21:13 -0600156 select SPL_IMAGE_SIGN_INFO
Simon Glass6f3c2d82021-02-15 17:08:10 -0700157 select SPL_FIT_FULL_CHECK
Simon Glasscf298162020-09-10 20:21:13 -0600158
Simon Glassb53541f2021-09-25 19:43:39 -0600159config SPL_FIT_SIGNATURE_MAX_SIZE
160 hex "Max size of signed FIT structures in SPL"
161 depends on SPL_FIT_SIGNATURE
162 default 0x10000000
163 help
164 This option sets a max size in bytes for verified FIT uImages.
165 A sane value of 256MB protects corrupted DTB structures from overlapping
166 device memory. Assure this size does not extend past expected storage
167 space.
168
Philippe Reynes5d39c932021-10-15 11:35:03 +0200169config SPL_FIT_RSASSA_PSS
170 bool "Support rsassa-pss signature scheme of FIT image contents in SPL"
171 depends on SPL_FIT_SIGNATURE
172 help
173 Enable this to support the pss padding algorithm as described
174 in the rfc8017 (https://tools.ietf.org/html/rfc8017) in SPL.
175
Simon Glasscf298162020-09-10 20:21:13 -0600176config SPL_LOAD_FIT
177 bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
Simon Glass4d8ea262023-09-14 10:55:52 -0600178 depends on SPL
Simon Glasscf298162020-09-10 20:21:13 -0600179 select SPL_FIT
180 help
181 Normally with the SPL framework a legacy image is generated as part
182 of the build. This contains U-Boot along with information as to
183 where it should be loaded. This option instead enables generation
184 of a FIT (Flat Image Tree) which provides more flexibility. In
185 particular it can handle selecting from multiple device tree
186 and passing the correct one to U-Boot.
187
Alexandru Gagniucdf51ae72021-03-29 12:05:15 -0500188 This path has the following limitations:
189
Bin Meng6e847f62021-05-10 20:23:29 +0800190 1. "loadables" images, other than FDTs, which do not have a "load"
Alexandru Gagniucdf51ae72021-03-29 12:05:15 -0500191 property will not be loaded. This limitation also applies to FPGA
192 images with the correct "compatible" string.
Oleksandr Suvorova3a1afb2022-07-22 17:16:13 +0300193 2. For FPGA images, the supported "compatible" list is in the
194 doc/uImage.FIT/source_file_format.txt.
Alexandru Gagniucdf51ae72021-03-29 12:05:15 -0500195 3. FDTs are only loaded for images with an "os" property of "u-boot".
196 "linux" images are also supported with Falcon boot mode.
197
Simon Glasscf298162020-09-10 20:21:13 -0600198config SPL_LOAD_FIT_ADDRESS
199 hex "load address of fit image"
Simon Glass815f8d32023-09-14 10:55:51 -0600200 depends on SPL_LOAD_FIT
Simon Glasscf298162020-09-10 20:21:13 -0600201 default 0x0
202 help
203 Specify the load address of the fit image that will be loaded
204 by SPL.
205
206config SPL_LOAD_FIT_APPLY_OVERLAY
207 bool "Enable SPL applying DT overlays from FIT"
208 depends on SPL_LOAD_FIT
209 select OF_LIBFDT_OVERLAY
210 help
Hugo Villeneuveb4230372023-04-24 16:51:12 -0400211 The device tree is loaded from the FIT image. Allow the SPL to
Simon Glasscf298162020-09-10 20:21:13 -0600212 also load device-tree overlays from the FIT image an apply them
213 over the device tree.
214
215config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ
216 depends on SPL_LOAD_FIT_APPLY_OVERLAY
217 default 0x10000
218 hex "size of temporary buffer used to load the overlays"
219 help
220 The size of the area where the overlays will be loaded and
221 uncompress. Must be at least as large as biggest overlay
222 (uncompressed)
223
224config SPL_LOAD_FIT_FULL
225 bool "Enable SPL loading U-Boot as a FIT (full fitImage features)"
226 select SPL_FIT
227 help
228 Normally with the SPL framework a legacy image is generated as part
229 of the build. This contains U-Boot along with information as to
230 where it should be loaded. This option instead enables generation
231 of a FIT (Flat Image Tree) which provides more flexibility. In
232 particular it can handle selecting from multiple device tree
233 and passing the correct one to U-Boot.
234
235config SPL_FIT_IMAGE_POST_PROCESS
236 bool "Enable post-processing of FIT artifacts after loading by the SPL"
237 depends on SPL_LOAD_FIT
Andrew Davis042e87e2022-05-04 15:52:28 -0500238 default y if TI_SECURE_DEVICE
Simon Glasscf298162020-09-10 20:21:13 -0600239 help
240 Allows doing any sort of manipulation to blobs after they got extracted
241 from the U-Boot FIT image like stripping off headers or modifying the
242 size of the blob, verification, authentication, decryption etc. in a
243 platform or board specific way. In order to use this feature a platform
244 or board-specific implementation of board_fit_image_post_process() must
245 be provided. Also, anything done during this post-processing step would
246 need to be comprehended in how the images were prepared before being
247 injected into the FIT creation (i.e. the blobs would have been pre-
248 processed before being added to the FIT image).
249
250config SPL_FIT_SOURCE
251 string ".its source file for U-Boot FIT image"
252 depends on SPL_FIT
253 help
254 Specifies a (platform specific) FIT source file to generate the
255 U-Boot FIT image. This could specify further image to load and/or
256 execute.
257
258config USE_SPL_FIT_GENERATOR
259 bool "Use a script to generate the .its script"
Tom Rini90c78882022-12-04 10:14:20 -0500260 depends on SPL_FIT
Simon Glass31f35e82023-01-07 14:07:19 -0700261 default y if SPL_FIT && ARCH_ZYNQMP
Simon Glasscf298162020-09-10 20:21:13 -0600262
263config SPL_FIT_GENERATOR
264 string ".its file generator script for U-Boot FIT image"
265 depends on USE_SPL_FIT_GENERATOR
Simon Glasscf298162020-09-10 20:21:13 -0600266 default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
Simon Glasscf298162020-09-10 20:21:13 -0600267 help
268 Specifies a (platform specific) script file to generate the FIT
269 source file used to build the U-Boot FIT image file. This gets
270 passed a list of supported device tree file stub names to
271 include in the generated image.
272
Simon Glass42184562022-10-20 18:23:13 -0600273if VPL
274
275config VPL_FIT
276 bool "Support Flattened Image Tree within VPL"
277 depends on VPL
278 default y
279 select VPL_HASH
280 select VPL_OF_LIBFDT
281
282config VPL_FIT_PRINT
283 bool "Support FIT printing within VPL"
284 depends on VPL_FIT
285 default y
286 help
287 Support printing the content of the fitImage in a verbose manner in VPL.
288
289config VPL_FIT_FULL_CHECK
290 bool "Do a full check of the FIT before using it"
291 default y
292 help
293 Enable this do a full check of the FIT to make sure it is valid. This
294 helps to protect against carefully crafted FITs which take advantage
295 of bugs or omissions in the code. This includes a bad structure,
296 multiple root nodes and the like.
297
298config VPL_FIT_SIGNATURE
299 bool "Enable signature verification of FIT firmware within VPL"
300 depends on VPL_DM
Simon Glass42184562022-10-20 18:23:13 -0600301 default y
302 select FIT_SIGNATURE
303 select VPL_FIT
304 select VPL_CRYPTO
305 select VPL_HASH
306 imply VPL_RSA
307 imply VPL_RSA_VERIFY
308 select VPL_IMAGE_SIGN_INFO
309 select VPL_FIT_FULL_CHECK
310
311config VPL_FIT_SIGNATURE_MAX_SIZE
312 hex "Max size of signed FIT structures in VPL"
313 depends on VPL_FIT_SIGNATURE
314 default 0x10000000
315 help
316 This option sets a max size in bytes for verified FIT uImages.
317 A sane value of 256MB protects corrupted DTB structures from overlapping
318 device memory. Assure this size does not extend past expected storage
319 space.
320
321endif # VPL
322
Simon Glass4d8ea262023-09-14 10:55:52 -0600323endif # FIT
324
John Keepingbe43a352022-07-28 11:19:15 +0100325config PXE_UTILS
326 bool
327 select MENU
328 help
329 Utilities for parsing PXE file formats.
330
Tom Rini2180a452023-10-26 14:31:24 -0400331config BOOT_DEFAULTS_FEATURES
332 bool
333 select SUPPORT_RAW_INITRD
334 select ENV_VARS_UBOOT_CONFIG
335 imply USB_STORAGE
336 imply EFI_PARTITION
337 imply ISO_PARTITION
338
339config BOOT_DEFAULTS_CMDS
340 bool
Simon Glassa0c739c2023-03-24 16:58:13 -0400341 imply USE_BOOTCOMMAND
342 select CMD_ENV_EXISTS
343 select CMD_EXT2
344 select CMD_EXT4
345 select CMD_FAT
346 select CMD_FS_GENERIC
347 select CMD_PART if PARTITIONS
348 select CMD_DHCP if CMD_NET
349 select CMD_PING if CMD_NET
350 select CMD_PXE if CMD_NET
Simon Glassa0c739c2023-03-24 16:58:13 -0400351 select CMD_BOOTI if ARM64
352 select CMD_BOOTZ if ARM && !ARM64
353 imply CMD_MII if NET
Tom Rini2180a452023-10-26 14:31:24 -0400354
355config BOOT_DEFAULTS
356 bool # Common defaults for standard boot and distroboot
357 select BOOT_DEFAULTS_FEATURES
358 select BOOT_DEFAULTS_CMDS if CMDLINE
Simon Glassa0c739c2023-03-24 16:58:13 -0400359 help
360 These are not required but are commonly needed to support a good
361 selection of booting methods. Enable this to improve the capability
362 of U-Boot to boot various images. Currently much functionality is
363 tied to enabling the command that exercises it.
364
Simon Glass4a8fcb62023-09-14 10:55:53 -0600365menuconfig BOOTSTD
366 bool "Standard boot"
Simon Glassef5e3892022-04-24 23:31:06 -0600367 default y
368 depends on DM && OF_CONTROL && BLK
369 help
370 U-Boot supports a standard way of locating something to boot,
371 typically an Operating System such as Linux, provided by a distro such
372 as Arch Linux or Debian. Enable this to support iterating through
373 available bootdevs and using bootmeths to find bootflows suitable for
374 booting.
375
376 Standard boot is not a standard way of booting, just a framework
377 within U-Boot for supporting all the different ways that exist.
378
379 Terminology:
380
381 - bootdev - a device which can hold a distro (e.g. MMC)
382 - bootmeth - a method to scan a bootdev to find bootflows (owned by
383 U-Boot)
384 - bootflow - a description of how to boot (owned by the distro)
385
Simon Glass4a8fcb62023-09-14 10:55:53 -0600386if BOOTSTD
387
Simon Glass42184562022-10-20 18:23:13 -0600388config SPL_BOOTSTD
Simon Glass1c419582023-02-22 09:33:58 -0700389 bool "Standard boot support in SPL"
Simon Glass42184562022-10-20 18:23:13 -0600390 depends on SPL && SPL_DM && SPL_OF_CONTROL && SPL_BLK
391 default y if VPL
392 help
393 This enables standard boot in SPL. This is neeeded so that VBE
394 (Verified Boot for Embedded) can be used, since it depends on standard
395 boot. It is enabled by default since the main purpose of VPL is to
396 handle the firmware part of VBE.
397
398config VPL_BOOTSTD
399 bool "Standard boot support in VPL"
400 depends on VPL && VPL_DM && VPL_OF_CONTROL && VPL_BLK
401 default y
402 help
403 This enables standard boot in SPL. This is neeeded so that VBE
404 (Verified Boot for Embedded) can be used, since it depends on standard
405 boot. It is enabled by default since the main purpose of VPL is to
406 handle the firmware part of VBE.
407
Simon Glassbcb1d262023-02-22 14:06:23 -0700408config BOOTSTD_FULL
409 bool "Enhanced features for standard boot"
410 default y if SANDBOX
411 help
412 This enables various useful features for standard boot, which are not
413 essential for operation:
414
415 - bootdev, bootmeth commands
416 - extra features in the bootflow command
417 - support for selecting the ordering of bootmeths ("bootmeth order")
418 - support for selecting the ordering of bootdevs using the devicetree
419 as well as the "boot_targets" environment variable
420
Simon Glass22353fa2023-01-28 15:00:21 -0700421config BOOTSTD_DEFAULTS
422 bool "Select some common defaults for standard boot"
423 depends on BOOTSTD
Simon Glassa0c739c2023-03-24 16:58:13 -0400424 select BOOT_DEFAULTS
Simon Glassfba0e732023-05-10 16:34:47 -0600425 select BOOTMETH_DISTRO
Simon Glass22353fa2023-01-28 15:00:21 -0700426 help
427 These are not required but are commonly needed to support a good
428 selection of booting methods. Enable this to improve the capability
429 of U-Boot to boot various images.
430
Simon Glassa91492b2022-04-24 23:31:27 -0600431config BOOTSTD_BOOTCOMMAND
432 bool "Use bootstd to boot"
433 default y if !DISTRO_DEFAULTS
434 help
435 Enable this to select a default boot-command suitable for booting
436 with standard boot. This can be overridden by the board if needed,
437 but the default command should be enough for most boards which use
438 standard boot.
439
440 For now this is only selected if distro boot is NOT used, since
441 standard boot does not support all of the features of distro boot
442 yet.
443
Simon Glass1047b532023-11-18 14:05:19 -0700444config BOOTSTD_PROG
445 bool "Use programmatic boot"
446 depends on !CMDLINE
447 default y
448 help
449 Enable this to provide a board_run_command() function which can boot
450 a systen without using commands. If the boot fails, then U-Boot will
451 panic.
452
453 Note: This currently has many limitations and is not a useful booting
454 solution. Future work will eventually make this a viable option.
455
Simon Glassbc06aa02022-07-30 15:52:21 -0600456config BOOTMETH_GLOBAL
457 bool
458 help
459 Add support for global bootmeths. This feature is used by VBE and
460 EFI bootmgr, since they take full control over which bootdevs are
461 selected to boot.
462
Simon Glassc88d67d2023-07-12 09:04:45 -0600463config BOOTMETH_CROS
464 bool "Bootdev support for Chromium OS"
Simon Glassdaffb0b2023-07-30 11:17:02 -0600465 depends on X86 || ARM || SANDBOX
466 default y if !ARM
Simon Glass71f634b2023-08-24 13:55:45 -0600467 select EFI_PARTITION
468 select PARTITION_TYPE_GUID
469 select PARTITION_UUIDS
Simon Glassc88d67d2023-07-12 09:04:45 -0600470 help
471 Enables support for booting Chromium OS using bootdevs. This uses the
472 kernel A slot and obtains the kernel command line from the parameters
473 provided there.
474
475 Note that only x86 devices are supported at present.
476
Simon Glass79f66352023-05-10 16:34:46 -0600477config BOOTMETH_EXTLINUX
478 bool "Bootdev support for extlinux boot"
John Keepingbe43a352022-07-28 11:19:15 +0100479 select PXE_UTILS
Simon Glass31aefaf2022-04-24 23:31:13 -0600480 default y
481 help
Simon Glass79f66352023-05-10 16:34:46 -0600482 Enables support for extlinux boot using bootdevs. This makes the
Simon Glass31aefaf2022-04-24 23:31:13 -0600483 bootdevs look for a 'extlinux/extlinux.conf' on each filesystem
484 they scan.
485
Simon Glass79f66352023-05-10 16:34:46 -0600486 The specification for this filed is here:
487
488 https://uapi-group.org/specifications/specs/boot_loader_specification/
489
Simon Glass31aefaf2022-04-24 23:31:13 -0600490 This provides a way to try out standard boot on an existing boot flow.
491
Simon Glass79f66352023-05-10 16:34:46 -0600492config BOOTMETH_EXTLINUX_PXE
493 bool "Bootdev support for extlinux boot over network"
Simon Glassdab2c282022-04-24 23:31:16 -0600494 depends on CMD_PXE && CMD_NET && DM_ETH
495 default y
496 help
Simon Glass79f66352023-05-10 16:34:46 -0600497 Enables support for extlinux boot using bootdevs. This makes the
Simon Glassdab2c282022-04-24 23:31:16 -0600498 bootdevs look for a 'extlinux/extlinux.conf' on the tftp server.
499
Simon Glass79f66352023-05-10 16:34:46 -0600500 The specification for this file is here:
501
502 https://uapi-group.org/specifications/specs/boot_loader_specification/
503
Simon Glassdab2c282022-04-24 23:31:16 -0600504 This provides a way to try out standard boot on an existing boot flow.
505
Simon Glassacfa9bd2022-04-24 23:31:17 -0600506config BOOTMETH_EFILOADER
507 bool "Bootdev support for EFI boot"
Tom Rini0bb4abd2023-10-26 14:31:21 -0400508 depends on CMD_BOOTEFI
Simon Glassacfa9bd2022-04-24 23:31:17 -0600509 default y
510 help
511 Enables support for EFI boot using bootdevs. This makes the
512 bootdevs look for a 'boot<arch>.efi' on each filesystem
513 they scan. The resulting file is booted after enabling U-Boot's
514 EFI loader support.
515
516 The <arch> depends on the architecture of the board:
517
518 aa64 - aarch64 (ARM 64-bit)
519 arm - ARM 32-bit
520 ia32 - x86 32-bit
521 x64 - x86 64-bit
522 riscv32 - RISC-V 32-bit
523 riscv64 - RISC-V 64-bit
524
525 This provides a way to try out standard boot on an existing boot flow.
526
Simon Glass4c7418f2022-07-30 15:52:32 -0600527config BOOTMETH_VBE
528 bool "Bootdev support for Verified Boot for Embedded"
529 depends on FIT
530 default y
531 select BOOTMETH_GLOBAL
Tom Rini448e2b62023-01-16 15:46:49 -0500532 select EVENT
Simon Glass4c7418f2022-07-30 15:52:32 -0600533 help
534 Enables support for VBE boot. This is a standard boot method which
535 supports selection of various firmware components, seleciton of an OS to
536 boot as well as updating these using fwupd.
537
Simon Glassfba0e732023-05-10 16:34:47 -0600538config BOOTMETH_DISTRO
539 bool # Options needed to boot any distro
Tom Rini558787f2023-10-26 14:31:27 -0400540 select BOOTMETH_SCRIPT if CMDLINE # E.g. Armbian uses scripts
Simon Glassfba0e732023-05-10 16:34:47 -0600541 select BOOTMETH_EXTLINUX # E.g. Debian uses these
542 select BOOTMETH_EXTLINUX_PXE if CMD_PXE && CMD_NET && DM_ETH
Tom Rini0bb4abd2023-10-26 14:31:21 -0400543 select BOOTMETH_EFILOADER if CMD_BOOTEFI # E.g. Ubuntu uses this
Simon Glassfba0e732023-05-10 16:34:47 -0600544
Simon Glass42184562022-10-20 18:23:13 -0600545config SPL_BOOTMETH_VBE
546 bool "Bootdev support for Verified Boot for Embedded (SPL)"
547 depends on SPL && FIT
Tom Rini448e2b62023-01-16 15:46:49 -0500548 select EVENT
Simon Glass42184562022-10-20 18:23:13 -0600549 default y if VPL
550 help
551 Enables support for VBE boot. This is a standard boot method which
552 supports selection of various firmware components, seleciton of an OS to
553 boot as well as updating these using fwupd.
554
555config VPL_BOOTMETH_VBE
556 bool "Bootdev support for Verified Boot for Embedded (VPL)"
557 depends on VPL && FIT
Tom Rini448e2b62023-01-16 15:46:49 -0500558 select EVENT
Simon Glass42184562022-10-20 18:23:13 -0600559 default y
560 help
561 Enables support for VBE boot. This is a standard boot method which
562 supports selection of various firmware components, seleciton of an OS to
563 boot as well as updating these using fwupd.
564
Simon Glasscb47e212022-07-30 15:52:33 -0600565if BOOTMETH_VBE
566
Simon Glassda900e52023-02-22 09:33:52 -0700567config BOOTMETH_VBE_REQUEST
568 bool "Support for serving VBE OS requests"
569 default y
570 help
571 Enables support for looking that the requests made by the
572 Operating System being booted. These requests result in additions to
573 the device tree /chosen node, added during the device tree fixup
574 phase.
575
576config SPL_BOOTMETH_VBE_REQUEST
577 bool "Support for serving VBE OS requests (SPL)"
578 depends on SPL
579 help
580 Enables support for looking that the requests made by the
581 Operating System being booted. These requests result in additions to
582 the device tree /chosen node, added during the device tree fixup
583 phase.
584
585 This is only useful if you are booting an OS direct from SPL.
586
Simon Glasscb47e212022-07-30 15:52:33 -0600587config BOOTMETH_VBE_SIMPLE
588 bool "Bootdev support for VBE 'simple' method"
589 default y
590 help
591 Enables support for VBE 'simple' boot. This allows updating a single
592 firmware image in boot media such as MMC. It does not support any sort
593 of rollback, recovery or A/B boot.
594
Simon Glass42184562022-10-20 18:23:13 -0600595config BOOTMETH_VBE_SIMPLE_OS
596 bool "Bootdev support for VBE 'simple' method OS phase"
597 default y
598 help
599 Enables support for the OS parts of VBE 'simple' boot. This includes
600 fixing up the device tree with the required VBE information, ready
601 for booting into the OS. This option is only enabled for U-Boot
602 proper, since it is the phase where device tree fixups happen.
603
604config SPL_BOOTMETH_VBE_SIMPLE
605 bool "Bootdev support for VBE 'simple' method (SPL)"
606 depends on SPL
607 default y if VPL
608 help
609 Enables support for VBE 'simple' boot. This allows updating a single
610 firmware image in boot media such as MMC. It does not support any sort
611 of rollback, recovery or A/B boot.
612
613config VPL_BOOTMETH_VBE_SIMPLE
614 bool "Bootdev support for VBE 'simple' method (VPL)"
615 depends on VPL
616 default y
617 help
618 Enables support for VBE 'simple' boot. This allows updating a single
619 firmware image in boot media such as MMC. It does not support any sort
620 of rollback, recovery or A/B boot.
621
622config SPL_BOOTMETH_VBE_SIMPLE_FW
623 bool "Bootdev support for VBE 'simple' method firmware phase (SPL)"
624 depends on VPL
625 default y
626 help
627 Enables support for the firmware parts of VBE 'simple' boot. This
628 includes an SPL loader which locates the correct U-Boot to boot into.
629 This option should really only be enabled for VPL, since it is the
630 phase where the SPL + U-Boot decision should be made. But for now,
631 SPL does its own FIT-configuration selection.
632
633config VPL_BOOTMETH_VBE_SIMPLE_FW
634 bool "Bootdev support for VBE 'simple' method firmware phase (VPL)"
635 depends on VPL
636 default y
637 help
638 Enables support for the firmware parts of VBE 'simple' boot. This
639 includes an SPL loader which locates the correct SPL to boot into.
640 This option enabled for VPL, since it is the phase where the SPL
641 decision is made.
642
Simon Glasscb47e212022-07-30 15:52:33 -0600643endif # BOOTMETH_VBE
644
Simon Glass87c6f8a2023-01-06 08:52:36 -0600645config EXPO
646 bool "Support for expos - groups of scenes displaying a UI"
Simon Glass0041b1c2023-01-28 15:00:18 -0700647 depends on VIDEO
Simon Glass87c6f8a2023-01-06 08:52:36 -0600648 default y if BOOTMETH_VBE
649 help
650 An expo is a way of presenting and collecting information from the
651 user. It consists of a collection of 'scenes' of which only one is
652 presented at a time. An expo is typically used to show a boot menu
653 and allow settings to be changed.
654
655 The expo can be presented in graphics form using a vidconsole, or in
656 text form on a serial console.
657
Simon Glass126947b2022-04-24 23:31:20 -0600658config BOOTMETH_SANDBOX
659 def_bool y
660 depends on SANDBOX
661 help
662 This is a sandbox bootmeth driver used for testing. It always returns
663 -ENOTSUPP when attempting to boot.
664
Simon Glassd9409242022-04-24 23:31:22 -0600665config BOOTMETH_SCRIPT
666 bool "Bootdev support for U-Boot scripts"
667 default y if BOOTSTD_FULL
Tom Rini558787f2023-10-26 14:31:27 -0400668 depends on CMDLINE
Simon Glassab16a3d2023-05-05 20:03:05 -0600669 select HUSH_PARSER
Simon Glassd9409242022-04-24 23:31:22 -0600670 help
671 Enables support for booting a distro via a U-Boot script. This makes
672 the bootdevs look for a 'boot/boot.scr' file which can be used to
673 boot the distro.
674
675 This provides a way to try out standard boot on an existing boot flow.
676 It is not enabled by default to save space.
677
Simon Glass4a8fcb62023-09-14 10:55:53 -0600678endif # BOOTSTD
Simon Glass31aefaf2022-04-24 23:31:13 -0600679
Simon Glass6e558e32023-12-14 21:19:00 -0700680config BOOTM
681 bool "Support booting an application image from memory"
682 default y
683 help
684 This is the main boot implementation in U-Boot, supporting a wide
685 variety of features including FIT and legacy-image boot, kernel and
686 FDT selection, setting up of the command line for the OS and many
687 other features.
688
689 This option should normally be enabled. It is used to implement the
690 'bootm' command.
691
Simon Glassb34c8282023-12-14 21:19:01 -0700692config BOOTM_LINUX
693 bool "Support booting Linux OS images"
694 depends on BOOTM || CMD_BOOTZ || CMD_BOOTI
695 default y
696 help
697 Support booting the Linux kernel directly via a command such as bootm
698 or booti or bootz.
699
700config BOOTM_NETBSD
701 bool "Support booting NetBSD (non-EFI) loader images"
702 depends on BOOTM
703 default y
704 help
705 Support booting NetBSD via the bootm command.
706
707config BOOTM_OPENRTOS
708 bool "Support booting OPENRTOS / FreeRTOS images"
709 depends on BOOTM
710 help
711 Support booting OPENRTOS / FreeRTOS via the bootm command.
712
713config BOOTM_OSE
714 bool "Support booting Enea OSE images"
715 depends on (ARM && (ARM64 || CPU_V7A || CPU_V7R) || SANDBOX || PPC || X86)
716 depends on BOOTM
717 help
718 Support booting Enea OSE images via the bootm command.
719
720config BOOTM_PLAN9
721 bool "Support booting Plan9 OS images"
722 depends on BOOTM
723 default y
724 help
725 Support booting Plan9 images via the bootm command.
726
727config BOOTM_RTEMS
728 bool "Support booting RTEMS OS images"
729 depends on BOOTM
730 default y
731 help
732 Support booting RTEMS images via the bootm command.
733
734config BOOTM_VXWORKS
735 bool "Support booting VxWorks OS images"
736 depends on BOOTM
737 default y
738 help
739 Support booting VxWorks images via the bootm command.
740
Simon Glass52b3c472023-12-14 21:18:59 -0700741config ANDROID_BOOT_IMAGE
742 bool "Android Boot Images"
743 default y if FASTBOOT
744 help
745 This enables support for booting images which use the Android
746 image format header.
747
748config TIMESTAMP
749 bool "Show image date and time when displaying image information"
750 default y if CMD_DATE
751 help
752 When CONFIG_TIMESTAMP is selected, the timestamp (date and time) of
753 an image is printed by image commands like bootm or iminfo. This
754 is shown as 'Timestamp: xxx' and 'Created: xxx'. If this option is
755 enabled, then U-Boot requires FITs to have a timestamp. If a FIT is
756 loaded that does not, the message 'Wrong FIT format: no timestamp'
757 is shown.
758
Simon Glasscf298162020-09-10 20:21:13 -0600759config LEGACY_IMAGE_FORMAT
760 bool "Enable support for the legacy image format"
Andrew Davis52dc3342022-05-04 15:52:27 -0500761 default y if !FIT_SIGNATURE && !TI_SECURE_DEVICE
Simon Glasscf298162020-09-10 20:21:13 -0600762 help
763 This option enables the legacy image format. It is enabled by
764 default for backward compatibility, unless FIT_SIGNATURE is
765 set where it is disabled so that unsigned images cannot be
766 loaded. If a board needs the legacy image format support in this
767 case, enable it here.
768
Eddie Jamesdec166d2023-10-24 10:43:50 -0500769config MEASURED_BOOT
770 bool "Measure boot images and configuration when booting without EFI"
771 depends on HASH && TPM_V2
772 help
773 This option enables measurement of the boot process when booting
774 without UEFI . Measurement involves creating cryptographic hashes
775 of the binary images that are booting and storing them in the TPM.
776 In addition, a log of these hashes is stored in memory for the OS
777 to verify the booted images and configuration. Enable this if the
778 OS has configured some memory area for the event log and you intend
779 to use some attestation tools on your system.
780
781if MEASURED_BOOT
782 config MEASURE_DEVICETREE
783 bool "Measure the devicetree image"
784 default y if MEASURED_BOOT
785 help
786 On some platforms, the devicetree is not static as it may contain
787 random MAC addresses or other such data that changes each boot.
788 Therefore, it should not be measured into the TPM. In that case,
789 disable the measurement here.
790
791 config MEASURE_IGNORE_LOG
792 bool "Ignore the existing event log"
793 default n
794 help
795 On platforms that use an event log memory region that persists
796 through system resets and are the first stage bootloader, then
797 this option should be enabled to ignore any existing data in the
798 event log memory region.
799endif # MEASURED_BOOT
800
Tom Rini9d298c92023-10-26 14:31:25 -0400801config SYS_BOOTM_LEN
802 hex "Maximum size of a decompresed OS image"
803 depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ || \
804 LEGACY_IMAGE_FORMAT || SPL_LEGACY_IMAGE_FORMAT
805 default 0x4000000 if PPC || ARM64
806 default 0x1000000 if X86 || ARCH_MX6 || ARCH_MX7
807 default 0x800000
808 help
809 This is the maximum size of the buffer that is used to decompress the OS
810 image in to if attempting to boot a compressed image.
811
Simon Glassaefa34f2020-09-10 20:21:19 -0600812config SUPPORT_RAW_INITRD
813 bool "Enable raw initrd images"
814 help
815 Note, defining the SUPPORT_RAW_INITRD allows user to supply
816 kernel with raw initrd images. The syntax is slightly different, the
817 address of the initrd must be augmented by it's size, in the following
818 format: "<initrd address>:<initrd size>".
819
Simon Glass96d0aa92020-11-04 09:57:35 -0700820config CHROMEOS
821 bool "Support booting Chrome OS"
822 help
823 Chrome OS requires U-Boot to set up a table indicating the boot mode
824 (e.g. Developer mode) and a few other things. Enable this if you are
825 booting on a Chromebook to avoid getting an error about an invalid
826 firmware ID.
827
828config CHROMEOS_VBOOT
829 bool "Support Chrome OS verified boot"
830 help
831 This is intended to enable the full Chrome OS verified boot support
832 in U-Boot. It is not actually implemented in the U-Boot source code
833 at present, so this option is always set to 'n'. It allows
834 distinguishing between booting Chrome OS in a basic way (developer
835 mode) and a full boot.
836
Tom Rini5a446182022-06-25 11:02:44 -0400837config SYS_RAMBOOT
838 bool
839
Tom Rinid8ef01e2021-08-24 23:11:49 -0400840config RAMBOOT_PBL
841 bool "Freescale PBL(pre-boot loader) image format support"
Tom Rini5a446182022-06-25 11:02:44 -0400842 select SYS_RAMBOOT if PPC
Tom Rinid8ef01e2021-08-24 23:11:49 -0400843 help
844 Some SoCs use PBL to load RCW and/or pre-initialization instructions.
845 For more details refer to doc/README.pblimage
846
Tom Rinid433c742022-03-23 17:20:03 -0400847choice
Tom Riniec9efcf2022-12-28 10:52:51 -0500848 prompt "Freescale PBL (or predecessor) load location"
Tom Rinid433c742022-03-23 17:20:03 -0400849 depends on RAMBOOT_PBL || ((TARGET_P1010RDB_PA || TARGET_P1010RDB_PB \
850 || TARGET_P1020RDB_PC || TARGET_P1020RDB_PD || TARGET_P2020RDB) \
851 && !CMD_NAND)
852
853config SDCARD
Tom Riniec9efcf2022-12-28 10:52:51 -0500854 bool "Freescale PBL (or similar) is found on SD card"
Tom Rinid433c742022-03-23 17:20:03 -0400855
856config SPIFLASH
Tom Riniec9efcf2022-12-28 10:52:51 -0500857 bool "Freescale PBL (or similar) is found on SPI flash"
858
859config NO_PBL
860 bool "Freescale PBL (or similar) is not used in this case"
Tom Rinid433c742022-03-23 17:20:03 -0400861
862endchoice
863
Tom Rinid8e84612022-06-20 08:07:42 -0400864config FSL_FIXED_MMC_LOCATION
865 bool "PBL MMC is at a fixed location"
866 depends on SDCARD && !RAMBOOT_PBL
867
868config ESDHC_HC_BLK_ADDR
869 def_bool y
870 depends on FSL_FIXED_MMC_LOCATION && (ARCH_BSC9131 || ARCH_BSC9132 || ARCH_P1010)
871 help
872 In High Capacity SD Cards (> 2 GBytes), the 32-bit source address and
873 code length of these soc specify the memory address in block address
874 format. Block length is fixed to 512 bytes as per the SD High
875 Capacity specification.
876
Tom Rinid8ef01e2021-08-24 23:11:49 -0400877config SYS_FSL_PBL_PBI
878 string "PBI(pre-boot instructions) commands for the PBL image"
879 depends on RAMBOOT_PBL
880 help
881 PBI commands can be used to configure SoC before it starts the execution.
882 Please refer doc/README.pblimage for more details.
883
884config SYS_FSL_PBL_RCW
885 string "Aadditional RCW (Power on reset configuration) for the PBL image"
886 depends on RAMBOOT_PBL
887 help
888 Enables addition of RCW (Power on reset configuration) in built image.
889 Please refer doc/README.pblimage for more details.
890
Tom Rinibb20a102022-06-25 11:02:46 -0400891config SYS_BOOT_RAMDISK_HIGH
892 depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ
893 depends on !(NIOS2 || SANDBOX || SH || XTENSA)
894 def_bool y
Simon Glassfebb9852023-03-24 16:58:12 -0400895 select LMB
Tom Rinibb20a102022-06-25 11:02:46 -0400896 help
897 Enable initrd_high functionality. If defined then the initrd_high
898 feature is enabled and the boot* ramdisk subcommand is enabled.
899
Simon Glasscf298162020-09-10 20:21:13 -0600900endmenu # Boot images
901
Simon Glassc9d4abe2023-03-24 16:58:11 -0400902config DISTRO_DEFAULTS
Simon Glass3b58de42023-09-14 10:55:55 -0600903 bool "(deprecated) Script-based booting of Linux distributions"
Tom Rinifc97d932023-10-26 14:31:23 -0400904 select CMDLINE
Simon Glassa0c739c2023-03-24 16:58:13 -0400905 select BOOT_DEFAULTS
Simon Glassc9d4abe2023-03-24 16:58:11 -0400906 select AUTO_COMPLETE
907 select CMDLINE_EDITING
Simon Glassc9d4abe2023-03-24 16:58:11 -0400908 select CMD_SYSBOOT
Simon Glassc9d4abe2023-03-24 16:58:11 -0400909 select HUSH_PARSER
Simon Glassc9d4abe2023-03-24 16:58:11 -0400910 select SYS_LONGHELP
Simon Glassc9d4abe2023-03-24 16:58:11 -0400911 help
Simon Glass3b58de42023-09-14 10:55:55 -0600912 Note: These scripts have been replaced by Standard Boot. Do not use
913 them on new boards. See 'Migrating from distro_boot' at
914 doc/develop/bootstd.rst
915
Simon Glassc9d4abe2023-03-24 16:58:11 -0400916 Select this to enable various options and commands which are suitable
917 for building u-boot for booting general purpose Linux distributions.
918
Simon Glass75e65cc2020-09-10 20:21:14 -0600919menu "Boot timing"
920
921config BOOTSTAGE
922 bool "Boot timing and reporting"
923 help
924 Enable recording of boot time while booting. To use it, insert
925 calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
926 bootstage.h. Only a single entry is recorded for each ID. You can
927 give the entry a name with bootstage_mark_name(). You can also
928 record elapsed time in a particular stage using bootstage_start()
929 before starting and bootstage_accum() when finished. Bootstage will
930 add up all the accumulated time and report it.
931
932 Normally, IDs are defined in bootstage.h but a small number of
933 additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
934 as the ID.
935
936 Calls to show_boot_progress() will also result in log entries but
937 these will not have names.
938
939config SPL_BOOTSTAGE
940 bool "Boot timing and reported in SPL"
Tom Rinib3401992022-06-10 23:03:09 -0400941 depends on BOOTSTAGE && SPL
Simon Glass75e65cc2020-09-10 20:21:14 -0600942 help
943 Enable recording of boot time in SPL. To make this visible to U-Boot
944 proper, enable BOOTSTAGE_STASH as well. This will stash the timing
945 information when SPL finishes and load it when U-Boot proper starts
946 up.
947
948config TPL_BOOTSTAGE
949 bool "Boot timing and reported in TPL"
Tom Rini8bea4bf2022-06-08 08:24:39 -0400950 depends on BOOTSTAGE && TPL
Simon Glass75e65cc2020-09-10 20:21:14 -0600951 help
952 Enable recording of boot time in SPL. To make this visible to U-Boot
953 proper, enable BOOTSTAGE_STASH as well. This will stash the timing
954 information when TPL finishes and load it when U-Boot proper starts
955 up.
956
957config BOOTSTAGE_REPORT
958 bool "Display a detailed boot timing report before booting the OS"
959 depends on BOOTSTAGE
960 help
961 Enable output of a boot time report just before the OS is booted.
962 This shows how long it took U-Boot to go through each stage of the
963 boot process. The report looks something like this:
964
965 Timer summary in microseconds:
966 Mark Elapsed Stage
967 0 0 reset
968 3,575,678 3,575,678 board_init_f start
969 3,575,695 17 arch_cpu_init A9
970 3,575,777 82 arch_cpu_init done
971 3,659,598 83,821 board_init_r start
972 3,910,375 250,777 main_loop
973 29,916,167 26,005,792 bootm_start
974 30,361,327 445,160 start_kernel
975
976config BOOTSTAGE_RECORD_COUNT
977 int "Number of boot stage records to store"
Simon Glass939b04e2021-02-03 06:00:49 -0700978 depends on BOOTSTAGE
Simon Glass75e65cc2020-09-10 20:21:14 -0600979 default 30
980 help
981 This is the size of the bootstage record list and is the maximum
982 number of bootstage records that can be recorded.
983
984config SPL_BOOTSTAGE_RECORD_COUNT
985 int "Number of boot stage records to store for SPL"
Simon Glass939b04e2021-02-03 06:00:49 -0700986 depends on SPL_BOOTSTAGE
Simon Glass75e65cc2020-09-10 20:21:14 -0600987 default 5
988 help
989 This is the size of the bootstage record list and is the maximum
990 number of bootstage records that can be recorded.
991
992config TPL_BOOTSTAGE_RECORD_COUNT
993 int "Number of boot stage records to store for TPL"
Simon Glass939b04e2021-02-03 06:00:49 -0700994 depends on TPL_BOOTSTAGE
Simon Glass75e65cc2020-09-10 20:21:14 -0600995 default 5
996 help
997 This is the size of the bootstage record list and is the maximum
998 number of bootstage records that can be recorded.
999
1000config BOOTSTAGE_FDT
1001 bool "Store boot timing information in the OS device tree"
1002 depends on BOOTSTAGE
1003 help
1004 Stash the bootstage information in the FDT. A root 'bootstage'
1005 node is created with each bootstage id as a child. Each child
1006 has a 'name' property and either 'mark' containing the
1007 mark time in microseconds, or 'accum' containing the
1008 accumulated time for that bootstage id in microseconds.
1009 For example:
1010
1011 bootstage {
1012 154 {
1013 name = "board_init_f";
1014 mark = <3575678>;
1015 };
1016 170 {
1017 name = "lcd";
1018 accum = <33482>;
1019 };
1020 };
1021
1022 Code in the Linux kernel can find this in /proc/devicetree.
1023
1024config BOOTSTAGE_STASH
1025 bool "Stash the boot timing information in memory before booting OS"
1026 depends on BOOTSTAGE
1027 help
1028 Some OSes do not support device tree. Bootstage can instead write
1029 the boot timing information in a binary format at a given address.
1030 This happens through a call to bootstage_stash(), typically in
1031 the CPU's cleanup_before_linux() function. You can use the
1032 'bootstage stash' and 'bootstage unstash' commands to do this on
1033 the command line.
1034
1035config BOOTSTAGE_STASH_ADDR
1036 hex "Address to stash boot timing information"
Tom Rinia077ac12023-08-02 11:09:43 -04001037 default 0x0
Simon Glass75e65cc2020-09-10 20:21:14 -06001038 help
1039 Provide an address which will not be overwritten by the OS when it
1040 starts, so that it can read this information when ready.
1041
1042config BOOTSTAGE_STASH_SIZE
1043 hex "Size of boot timing stash region"
1044 default 0x1000
1045 help
1046 This should be large enough to hold the bootstage stash. A value of
1047 4096 (4KiB) is normally plenty.
1048
1049config SHOW_BOOT_PROGRESS
1050 bool "Show boot progress in a board-specific manner"
1051 help
1052 Defining this option allows to add some board-specific code (calling
1053 a user-provided function show_boot_progress(int) that enables you to
1054 show the system's boot progress on some display (for example, some
1055 LEDs) on your board. At the moment, the following checkpoints are
1056 implemented:
1057
1058 Legacy uImage format:
1059
1060 Arg Where When
1061 1 common/cmd_bootm.c before attempting to boot an image
1062 -1 common/cmd_bootm.c Image header has bad magic number
1063 2 common/cmd_bootm.c Image header has correct magic number
1064 -2 common/cmd_bootm.c Image header has bad checksum
1065 3 common/cmd_bootm.c Image header has correct checksum
1066 -3 common/cmd_bootm.c Image data has bad checksum
1067 4 common/cmd_bootm.c Image data has correct checksum
1068 -4 common/cmd_bootm.c Image is for unsupported architecture
1069 5 common/cmd_bootm.c Architecture check OK
1070 -5 common/cmd_bootm.c Wrong Image Type (not kernel, multi)
1071 6 common/cmd_bootm.c Image Type check OK
1072 -6 common/cmd_bootm.c gunzip uncompression error
1073 -7 common/cmd_bootm.c Unimplemented compression type
1074 7 common/cmd_bootm.c Uncompression OK
1075 8 common/cmd_bootm.c No uncompress/copy overwrite error
1076 -9 common/cmd_bootm.c Unsupported OS (not Linux, BSD, VxWorks, QNX)
1077
1078 9 common/image.c Start initial ramdisk verification
1079 -10 common/image.c Ramdisk header has bad magic number
1080 -11 common/image.c Ramdisk header has bad checksum
1081 10 common/image.c Ramdisk header is OK
1082 -12 common/image.c Ramdisk data has bad checksum
1083 11 common/image.c Ramdisk data has correct checksum
1084 12 common/image.c Ramdisk verification complete, start loading
1085 -13 common/image.c Wrong Image Type (not PPC Linux ramdisk)
1086 13 common/image.c Start multifile image verification
1087 14 common/image.c No initial ramdisk, no multifile, continue.
1088
1089 15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
1090
1091 -30 arch/powerpc/lib/board.c Fatal error, hang the system
1092 -31 post/post.c POST test failed, detected by post_output_backlog()
1093 -32 post/post.c POST test failed, detected by post_run_single()
1094
1095 34 common/cmd_doc.c before loading a Image from a DOC device
1096 -35 common/cmd_doc.c Bad usage of "doc" command
1097 35 common/cmd_doc.c correct usage of "doc" command
1098 -36 common/cmd_doc.c No boot device
1099 36 common/cmd_doc.c correct boot device
1100 -37 common/cmd_doc.c Unknown Chip ID on boot device
1101 37 common/cmd_doc.c correct chip ID found, device available
1102 -38 common/cmd_doc.c Read Error on boot device
1103 38 common/cmd_doc.c reading Image header from DOC device OK
1104 -39 common/cmd_doc.c Image header has bad magic number
1105 39 common/cmd_doc.c Image header has correct magic number
1106 -40 common/cmd_doc.c Error reading Image from DOC device
1107 40 common/cmd_doc.c Image header has correct magic number
1108 41 common/cmd_ide.c before loading a Image from a IDE device
1109 -42 common/cmd_ide.c Bad usage of "ide" command
1110 42 common/cmd_ide.c correct usage of "ide" command
1111 -43 common/cmd_ide.c No boot device
1112 43 common/cmd_ide.c boot device found
1113 -44 common/cmd_ide.c Device not available
1114 44 common/cmd_ide.c Device available
1115 -45 common/cmd_ide.c wrong partition selected
1116 45 common/cmd_ide.c partition selected
1117 -46 common/cmd_ide.c Unknown partition table
1118 46 common/cmd_ide.c valid partition table found
1119 -47 common/cmd_ide.c Invalid partition type
1120 47 common/cmd_ide.c correct partition type
1121 -48 common/cmd_ide.c Error reading Image Header on boot device
1122 48 common/cmd_ide.c reading Image Header from IDE device OK
1123 -49 common/cmd_ide.c Image header has bad magic number
1124 49 common/cmd_ide.c Image header has correct magic number
1125 -50 common/cmd_ide.c Image header has bad checksum
1126 50 common/cmd_ide.c Image header has correct checksum
1127 -51 common/cmd_ide.c Error reading Image from IDE device
1128 51 common/cmd_ide.c reading Image from IDE device OK
1129 52 common/cmd_nand.c before loading a Image from a NAND device
1130 -53 common/cmd_nand.c Bad usage of "nand" command
1131 53 common/cmd_nand.c correct usage of "nand" command
1132 -54 common/cmd_nand.c No boot device
1133 54 common/cmd_nand.c boot device found
1134 -55 common/cmd_nand.c Unknown Chip ID on boot device
1135 55 common/cmd_nand.c correct chip ID found, device available
1136 -56 common/cmd_nand.c Error reading Image Header on boot device
1137 56 common/cmd_nand.c reading Image Header from NAND device OK
1138 -57 common/cmd_nand.c Image header has bad magic number
1139 57 common/cmd_nand.c Image header has correct magic number
1140 -58 common/cmd_nand.c Error reading Image from NAND device
1141 58 common/cmd_nand.c reading Image from NAND device OK
1142
1143 -60 common/env_common.c Environment has a bad CRC, using default
1144
1145 64 net/eth.c starting with Ethernet configuration.
1146 -64 net/eth.c no Ethernet found.
1147 65 net/eth.c Ethernet found.
1148
1149 -80 common/cmd_net.c usage wrong
1150 80 common/cmd_net.c before calling net_loop()
1151 -81 common/cmd_net.c some error in net_loop() occurred
1152 81 common/cmd_net.c net_loop() back without error
1153 -82 common/cmd_net.c size == 0 (File with size 0 loaded)
1154 82 common/cmd_net.c trying automatic boot
1155 83 common/cmd_net.c running "source" command
1156 -83 common/cmd_net.c some error in automatic boot or "source" command
1157 84 common/cmd_net.c end without errors
1158
1159 FIT uImage format:
1160
1161 Arg Where When
1162 100 common/cmd_bootm.c Kernel FIT Image has correct format
1163 -100 common/cmd_bootm.c Kernel FIT Image has incorrect format
1164 101 common/cmd_bootm.c No Kernel subimage unit name, using configuration
1165 -101 common/cmd_bootm.c Can't get configuration for kernel subimage
1166 102 common/cmd_bootm.c Kernel unit name specified
1167 -103 common/cmd_bootm.c Can't get kernel subimage node offset
1168 103 common/cmd_bootm.c Found configuration node
1169 104 common/cmd_bootm.c Got kernel subimage node offset
1170 -104 common/cmd_bootm.c Kernel subimage hash verification failed
1171 105 common/cmd_bootm.c Kernel subimage hash verification OK
1172 -105 common/cmd_bootm.c Kernel subimage is for unsupported architecture
1173 106 common/cmd_bootm.c Architecture check OK
1174 -106 common/cmd_bootm.c Kernel subimage has wrong type
1175 107 common/cmd_bootm.c Kernel subimage type OK
1176 -107 common/cmd_bootm.c Can't get kernel subimage data/size
1177 108 common/cmd_bootm.c Got kernel subimage data/size
1178 -108 common/cmd_bootm.c Wrong image type (not legacy, FIT)
1179 -109 common/cmd_bootm.c Can't get kernel subimage type
1180 -110 common/cmd_bootm.c Can't get kernel subimage comp
1181 -111 common/cmd_bootm.c Can't get kernel subimage os
1182 -112 common/cmd_bootm.c Can't get kernel subimage load address
1183 -113 common/cmd_bootm.c Image uncompress/copy overwrite error
1184
1185 120 common/image.c Start initial ramdisk verification
1186 -120 common/image.c Ramdisk FIT image has incorrect format
1187 121 common/image.c Ramdisk FIT image has correct format
1188 122 common/image.c No ramdisk subimage unit name, using configuration
1189 -122 common/image.c Can't get configuration for ramdisk subimage
1190 123 common/image.c Ramdisk unit name specified
1191 -124 common/image.c Can't get ramdisk subimage node offset
1192 125 common/image.c Got ramdisk subimage node offset
1193 -125 common/image.c Ramdisk subimage hash verification failed
1194 126 common/image.c Ramdisk subimage hash verification OK
1195 -126 common/image.c Ramdisk subimage for unsupported architecture
1196 127 common/image.c Architecture check OK
1197 -127 common/image.c Can't get ramdisk subimage data/size
1198 128 common/image.c Got ramdisk subimage data/size
1199 129 common/image.c Can't get ramdisk load address
1200 -129 common/image.c Got ramdisk load address
1201
1202 -130 common/cmd_doc.c Incorrect FIT image format
1203 131 common/cmd_doc.c FIT image format OK
1204
1205 -140 common/cmd_ide.c Incorrect FIT image format
1206 141 common/cmd_ide.c FIT image format OK
1207
1208 -150 common/cmd_nand.c Incorrect FIT image format
1209 151 common/cmd_nand.c FIT image format OK
1210
Marek Vasutb55881d2021-10-23 03:06:03 +02001211config SPL_SHOW_BOOT_PROGRESS
Jan Kiszkac1df3d52021-11-03 15:09:36 +01001212 bool "Show boot progress in a board-specific manner in SPL"
Marek Vasutb55881d2021-10-23 03:06:03 +02001213 depends on SPL
1214 help
1215 Defining this option allows to add some board-specific code (calling
1216 a user-provided function show_boot_progress(int) that enables you to
1217 show the system's boot progress on some display (for example, some
1218 LEDs) on your board. For details see SHOW_BOOT_PROGRESS.
1219
Simon Glass75e65cc2020-09-10 20:21:14 -06001220endmenu
1221
Simon Glass7b6baa32020-09-10 20:21:15 -06001222menu "Boot media"
1223
1224config NOR_BOOT
1225 bool "Support for booting from NOR flash"
1226 depends on NOR
1227 help
1228 Enabling this will make a U-Boot binary that is capable of being
1229 booted via NOR. In this case we will enable certain pinmux early
1230 as the ROM only partially sets up pinmux. We also default to using
1231 NOR for environment.
1232
1233config NAND_BOOT
1234 bool "Support for booting from NAND flash"
Simon Glass7b6baa32020-09-10 20:21:15 -06001235 imply MTD_RAW_NAND
1236 help
1237 Enabling this will make a U-Boot binary that is capable of being
1238 booted via NAND flash. This is not a must, some SoCs need this,
1239 some not.
1240
1241config ONENAND_BOOT
1242 bool "Support for booting from ONENAND"
Simon Glass7b6baa32020-09-10 20:21:15 -06001243 imply MTD_RAW_NAND
1244 help
1245 Enabling this will make a U-Boot binary that is capable of being
1246 booted via ONENAND. This is not a must, some SoCs need this,
1247 some not.
1248
1249config QSPI_BOOT
1250 bool "Support for booting from QSPI flash"
Simon Glass7b6baa32020-09-10 20:21:15 -06001251 help
1252 Enabling this will make a U-Boot binary that is capable of being
1253 booted via QSPI flash. This is not a must, some SoCs need this,
1254 some not.
1255
1256config SATA_BOOT
1257 bool "Support for booting from SATA"
Simon Glass7b6baa32020-09-10 20:21:15 -06001258 help
1259 Enabling this will make a U-Boot binary that is capable of being
1260 booted via SATA. This is not a must, some SoCs need this,
1261 some not.
1262
1263config SD_BOOT
1264 bool "Support for booting from SD/EMMC"
Simon Glass7b6baa32020-09-10 20:21:15 -06001265 help
1266 Enabling this will make a U-Boot binary that is capable of being
1267 booted via SD/EMMC. This is not a must, some SoCs need this,
1268 some not.
1269
Tom Rini66e0e2b2021-12-11 14:55:50 -05001270config SD_BOOT_QSPI
1271 bool "Support for booting from SD/EMMC and enable QSPI"
1272 help
1273 Enabling this will make a U-Boot binary that is capable of being
1274 booted via SD/EMMC while enabling QSPI on the platform as well. This
1275 is not a must, some SoCs need this, some not.
1276
Simon Glass7b6baa32020-09-10 20:21:15 -06001277config SPI_BOOT
1278 bool "Support for booting from SPI flash"
Simon Glass7b6baa32020-09-10 20:21:15 -06001279 help
1280 Enabling this will make a U-Boot binary that is capable of being
1281 booted via SPI flash. This is not a must, some SoCs need this,
1282 some not.
1283
1284endmenu
1285
Simon Glass98eed0d2020-09-10 20:21:16 -06001286menu "Autoboot options"
1287
1288config AUTOBOOT
1289 bool "Autoboot"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001290 depends on CMDLINE
Simon Glass98eed0d2020-09-10 20:21:16 -06001291 default y
1292 help
1293 This enables the autoboot. See doc/README.autoboot for detail.
1294
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001295if AUTOBOOT
1296
Simon Glass95fd4f32020-09-10 20:21:17 -06001297config BOOTDELAY
1298 int "delay in seconds before automatically booting"
1299 default 2
Simon Glass95fd4f32020-09-10 20:21:17 -06001300 help
1301 Delay before automatically running bootcmd;
1302 set to 0 to autoboot with no delay, but you can stop it by key input.
1303 set to -1 to disable autoboot.
1304 set to -2 to autoboot with no delay and not check for abort
1305
1306 If this value is >= 0 then it is also used for the default delay
1307 before starting the default entry in bootmenu. If it is < 0 then
1308 a default value of 10s is used.
1309
1310 See doc/README.autoboot for details.
1311
Simon Glass98eed0d2020-09-10 20:21:16 -06001312config AUTOBOOT_KEYED
1313 bool "Stop autobooting via specific input key / string"
Simon Glass98eed0d2020-09-10 20:21:16 -06001314 help
1315 This option enables stopping (aborting) of the automatic
1316 boot feature only by issuing a specific input key or
1317 string. If not enabled, any input key will abort the
1318 U-Boot automatic booting process and bring the device
1319 to the U-Boot prompt for user input.
1320
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001321if AUTOBOOT_KEYED
1322
Steffen Jaeckeld199c3a2021-07-08 15:57:38 +02001323config AUTOBOOT_FLUSH_STDIN
1324 bool "Enable flushing stdin before starting to read the password"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001325 depends on !SANDBOX
Steffen Jaeckeld199c3a2021-07-08 15:57:38 +02001326 help
1327 When this option is enabled stdin buffer will be flushed before
1328 starting to read the password.
1329 This can't be enabled for the sandbox as flushing stdin would
1330 break the autoboot unit tests.
1331
Simon Glass98eed0d2020-09-10 20:21:16 -06001332config AUTOBOOT_PROMPT
1333 string "Autoboot stop prompt"
Simon Glass98eed0d2020-09-10 20:21:16 -06001334 default "Autoboot in %d seconds\\n"
1335 help
1336 This string is displayed before the boot delay selected by
1337 CONFIG_BOOTDELAY starts. If it is not defined there is no
1338 output indicating that autoboot is in progress.
1339
1340 Note that this define is used as the (only) argument to a
1341 printf() call, so it may contain '%' format specifications,
1342 provided that it also includes, sepearated by commas exactly
1343 like in a printf statement, the required arguments. It is
1344 the responsibility of the user to select only such arguments
1345 that are valid in the given context.
1346
1347config AUTOBOOT_ENCRYPTION
1348 bool "Enable encryption in autoboot stopping"
Simon Glass98eed0d2020-09-10 20:21:16 -06001349 help
1350 This option allows a string to be entered into U-Boot to stop the
Steffen Jaeckel1a4a7782021-07-08 15:57:35 +02001351 autoboot.
1352 The behavior depends whether CONFIG_CRYPT_PW from lib is enabled
1353 or not.
1354 In case CONFIG_CRYPT_PW is enabled, the string will be forwarded
1355 to the crypt-based functionality and be compared against the
1356 string in the environment variable 'bootstopkeycrypt'.
1357 In case CONFIG_CRYPT_PW is disabled the string itself is hashed
1358 and compared against the hash in the environment variable
1359 'bootstopkeysha256'.
1360 If it matches in either case then boot stops and
1361 a command-line prompt is presented.
Simon Glass98eed0d2020-09-10 20:21:16 -06001362 This provides a way to ship a secure production device which can also
1363 be accessed at the U-Boot command line.
1364
Steffen Jaeckel33198742021-07-08 15:57:39 +02001365config AUTOBOOT_SHA256_FALLBACK
1366 bool "Allow fallback from crypt-hashed password to sha256"
1367 depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
1368 help
1369 This option adds support to fall back from crypt-hashed
1370 passwords to checking a SHA256 hashed password in case the
1371 'bootstopusesha256' environment variable is set to 'true'.
1372
Simon Glass98eed0d2020-09-10 20:21:16 -06001373config AUTOBOOT_DELAY_STR
1374 string "Delay autobooting via specific input key / string"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001375 depends on !AUTOBOOT_ENCRYPTION
Simon Glass98eed0d2020-09-10 20:21:16 -06001376 help
1377 This option delays the automatic boot feature by issuing
1378 a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
1379 or the environment variable "bootdelaykey" is specified
1380 and this string is received from console input before
1381 autoboot starts booting, U-Boot gives a command prompt. The
1382 U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
1383 used, otherwise it never times out.
1384
1385config AUTOBOOT_STOP_STR
1386 string "Stop autobooting via specific input key / string"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001387 depends on !AUTOBOOT_ENCRYPTION
Simon Glass98eed0d2020-09-10 20:21:16 -06001388 help
1389 This option enables stopping (aborting) of the automatic
1390 boot feature only by issuing a specific input key or
1391 string. If CONFIG_AUTOBOOT_STOP_STR or the environment
1392 variable "bootstopkey" is specified and this string is
1393 received from console input before autoboot starts booting,
1394 U-Boot gives a command prompt. The U-Boot prompt never
1395 times out, even if CONFIG_BOOT_RETRY_TIME is used.
1396
1397config AUTOBOOT_KEYED_CTRLC
1398 bool "Enable Ctrl-C autoboot interruption"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001399 depends on !AUTOBOOT_ENCRYPTION
Simon Glass98eed0d2020-09-10 20:21:16 -06001400 help
1401 This option allows for the boot sequence to be interrupted
1402 by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
1403 Setting this variable provides an escape sequence from the
1404 limited "password" strings.
1405
Steffen Jaeckel6c0ce6d2021-07-08 15:57:37 +02001406config AUTOBOOT_NEVER_TIMEOUT
1407 bool "Make the password entry never time-out"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001408 depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
Steffen Jaeckel6c0ce6d2021-07-08 15:57:37 +02001409 help
1410 This option removes the timeout from the password entry
1411 when the user first presses the <Enter> key before entering
1412 any other character.
1413
Steffen Jaeckel1a4a7782021-07-08 15:57:35 +02001414config AUTOBOOT_STOP_STR_ENABLE
1415 bool "Enable fixed string to stop autobooting"
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001416 depends on AUTOBOOT_ENCRYPTION
Steffen Jaeckel1a4a7782021-07-08 15:57:35 +02001417 help
1418 This option enables the feature to add a fixed stop
1419 string that is defined at compile time.
1420 In every case it will be tried to load the stop
1421 string from the environment.
1422 In case this is enabled and there is no stop string
1423 in the environment, this will be used as default value.
1424
1425config AUTOBOOT_STOP_STR_CRYPT
1426 string "Stop autobooting via crypt-hashed password"
1427 depends on AUTOBOOT_STOP_STR_ENABLE && CRYPT_PW
1428 help
1429 This option adds the feature to only stop the autobooting,
1430 and therefore boot into the U-Boot prompt, when the input
1431 string / password matches a values that is hashed via
1432 one of the supported crypt-style password hashing options
1433 and saved in the environment variable "bootstopkeycrypt".
1434
Simon Glass98eed0d2020-09-10 20:21:16 -06001435config AUTOBOOT_STOP_STR_SHA256
Steffen Jaeckel25c8b9f2021-07-08 15:57:40 +02001436 string "Stop autobooting via SHA256 hashed password"
Steffen Jaeckel1a4a7782021-07-08 15:57:35 +02001437 depends on AUTOBOOT_STOP_STR_ENABLE
Simon Glass98eed0d2020-09-10 20:21:16 -06001438 help
1439 This option adds the feature to only stop the autobooting,
1440 and therefore boot into the U-Boot prompt, when the input
1441 string / password matches a values that is encypted via
Joel Peshkin652b5042020-11-21 17:18:59 -08001442 a SHA256 hash and saved in the environment variable
1443 "bootstopkeysha256". If the value in that variable
1444 includes a ":", the portion prior to the ":" will be treated
1445 as a salt value.
Simon Glass98eed0d2020-09-10 20:21:16 -06001446
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001447endif # AUTOBOOT_KEYED
1448
1449if !AUTOBOOT_KEYED
1450
Simon Glass98eed0d2020-09-10 20:21:16 -06001451config AUTOBOOT_USE_MENUKEY
1452 bool "Allow a specify key to run a menu from the environment"
Simon Glass98eed0d2020-09-10 20:21:16 -06001453 help
1454 If a specific key is pressed to stop autoboot, then the commands in
1455 the environment variable 'menucmd' are executed before boot starts.
1456
1457config AUTOBOOT_MENUKEY
1458 int "ASCII value of boot key to show a menu"
1459 default 0
1460 depends on AUTOBOOT_USE_MENUKEY
1461 help
1462 If this key is pressed to stop autoboot, then the commands in the
1463 environment variable 'menucmd' will be executed before boot starts.
1464 For example, 33 means "!" in ASCII, so pressing ! at boot would take
1465 this action.
1466
Simon Glass5bcfc7a2023-10-26 14:31:22 -04001467endif
1468
1469endif # AUTOBOOT
1470
Simon Glass98eed0d2020-09-10 20:21:16 -06001471config AUTOBOOT_MENU_SHOW
1472 bool "Show a menu on boot"
1473 depends on CMD_BOOTMENU
1474 help
1475 This enables the boot menu, controlled by environment variables
1476 defined by the board. The menu starts after running the 'preboot'
1477 environmnent variable (if enabled) and before handling the boot delay.
Peter Robinsond1670622023-08-18 15:54:10 +01001478 See doc/usage/cmd/bootmenu.rst for more details.
Simon Glass98eed0d2020-09-10 20:21:16 -06001479
Masahisa Kojima83f73632022-05-26 19:09:38 +09001480config BOOTMENU_DISABLE_UBOOT_CONSOLE
1481 bool "Disallow bootmenu to enter the U-Boot console"
1482 depends on AUTOBOOT_MENU_SHOW
1483 help
1484 If this option is enabled, user can not enter the U-Boot console from
1485 bootmenu. It increases the system security.
1486
Tom Rini69c8a812022-03-11 09:12:04 -05001487config BOOT_RETRY
1488 bool "Boot retry feature"
1489 help
1490 Allow for having the U-Boot command prompt time out and attempt
1491 to boot again. If the environment variable "bootretry" is found then
1492 its value is used, otherwise the retry timeout is
1493 CONFIG_BOOT_RETRY_TIME. CONFIG_BOOT_RETRY_MIN is optional and
1494 defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
1495
1496config BOOT_RETRY_TIME
1497 int "Timeout in seconds before attempting to boot again"
1498 depends on BOOT_RETRY
1499 help
1500 Time in seconds before the U-Boot prompt will timeout and boot will
1501 be attempted again.
1502
1503config BOOT_RETRY_MIN
1504 int "Minimum timeout in seconds for 'bootretry'"
1505 depends on BOOT_RETRY
1506 default BOOT_RETRY_TIME
1507 help
1508 The minimum time in seconds that "bootretry" can be set to.
1509
1510config RESET_TO_RETRY
1511 bool "Reset the board to retry autoboot"
1512 depends on BOOT_RETRY
1513 help
1514 After the countdown timed out, the board will be reset to restart
1515 again.
1516
Simon Glass98eed0d2020-09-10 20:21:16 -06001517endmenu
1518
Philippe Reynes98220742022-03-28 22:56:59 +02001519menu "Image support"
1520
1521config IMAGE_PRE_LOAD
1522 bool "Image pre-load support"
1523 help
1524 Enable an image pre-load stage in the SPL.
1525 This pre-load stage allows to do some manipulation
1526 or check (for example signature check) on an image
1527 before launching it.
1528
1529config SPL_IMAGE_PRE_LOAD
1530 bool "Image pre-load support within SPL"
1531 depends on SPL && IMAGE_PRE_LOAD
1532 help
1533 Enable an image pre-load stage in the SPL.
1534 This pre-load stage allows to do some manipulation
1535 or check (for example signature check) on an image
1536 before launching it.
1537
1538config IMAGE_PRE_LOAD_SIG
1539 bool "Image pre-load signature support"
1540 depends on IMAGE_PRE_LOAD
1541 select FIT_SIGNATURE
1542 select RSA
1543 select RSA_VERIFY_WITH_PKEY
1544 help
1545 Enable signature check support in the pre-load stage.
1546 For this feature a very simple header is added before
1547 the image with few fields:
1548 - a magic
1549 - the image size
1550 - the signature
1551 All other information (header size, type of signature,
1552 ...) are provided in the node /image/pre-load/sig of
1553 u-boot.
1554
1555config SPL_IMAGE_PRE_LOAD_SIG
1556 bool "Image pre-load signature support witin SPL"
1557 depends on SPL_IMAGE_PRE_LOAD && IMAGE_PRE_LOAD_SIG
1558 select SPL_FIT_SIGNATURE
1559 select SPL_RSA
1560 select SPL_RSA_VERIFY_WITH_PKEY
1561 help
1562 Enable signature check support in the pre-load stage in the SPL.
1563 For this feature a very simple header is added before
1564 the image with few fields:
1565 - a magic
1566 - the image size
1567 - the signature
1568 All other information (header size, type of signature,
1569 ...) are provided in the node /image/pre-load/sig of
1570 u-boot.
1571
1572endmenu
1573
Simon Glassddc5f9b2023-09-14 10:55:46 -06001574if OF_LIBFDT
1575
1576menu "Devicetree fixup"
1577
Simon Glass96095e12023-09-14 10:55:47 -06001578config OF_BOARD_SETUP
1579 bool "Set up board-specific details in device tree before boot"
1580 help
1581 This causes U-Boot to call ft_board_setup() before booting into
1582 the Operating System. This function can set up various
1583 board-specific information in the device tree for use by the OS.
1584 The device tree is then passed to the OS.
1585
1586config OF_SYSTEM_SETUP
1587 bool "Set up system-specific details in device tree before boot"
1588 help
1589 This causes U-Boot to call ft_system_setup() before booting into
1590 the Operating System. This function can set up various
1591 system-specific information in the device tree for use by the OS.
1592 The device tree is then passed to the OS.
1593
1594config OF_STDOUT_VIA_ALIAS
1595 bool "Update the device-tree stdout alias from U-Boot"
1596 help
1597 This uses U-Boot's serial alias from the aliases node to update
1598 the device tree passed to the OS. The "linux,stdout-path" property
1599 in the chosen node is set to point to the correct serial node.
1600 This option currently references CONFIG_CONS_INDEX, which is
1601 incorrect when used with device tree as this option does not
1602 exist / should not be used.
1603
Simon Glass040a6042023-09-14 10:55:57 -06001604config FDT_FIXUP_PARTITIONS
Simon Glass400a6a32023-09-14 10:55:58 -06001605 bool "Overwrite MTD partitions in DTS through defined in 'mtdparts'"
Simon Glass040a6042023-09-14 10:55:57 -06001606 help
1607 Allow overwriting defined partitions in the device tree blob
1608 using partition info defined in the 'mtdparts' environment
1609 variable.
1610
Simon Glassddc5f9b2023-09-14 10:55:46 -06001611config FDT_SIMPLEFB
1612 bool "FDT tools for simplefb support"
1613 help
1614 Enable the fdt tools to manage the simple fb nodes in device tree.
1615 These functions can be used by board to indicate to the OS
1616 the presence of the simple frame buffer with associated reserved
1617 memory
1618
Simon Glassc0e5b0e2023-09-14 10:55:59 -06001619config ARCH_FIXUP_FDT_MEMORY
1620 bool "Enable arch_fixup_memory_banks() call"
1621 default y
1622 help
1623 Enable FDT memory map syncup before OS boot. This feature can be
1624 used for booting OS with different memory setup where the part of
1625 the memory location should be used for different purpose.
1626
Simon Glassddc5f9b2023-09-14 10:55:46 -06001627endmenu
1628
1629endif # OF_LIBFDT
1630
Simon Glassfe5db252020-09-10 20:21:18 -06001631config USE_BOOTARGS
1632 bool "Enable boot arguments"
1633 help
1634 Provide boot arguments to bootm command. Boot arguments are specified
1635 in CONFIG_BOOTARGS option. Enable this option to be able to specify
1636 CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
1637 will be undefined and won't take any space in U-Boot image.
1638
1639config BOOTARGS
1640 string "Boot arguments"
1641 depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
1642 help
1643 This can be used to pass arguments to the bootm command. The value of
1644 CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
1645 this value will also override the "chosen" node in FDT blob.
1646
Simon Glass51bb3382020-11-05 10:33:48 -07001647config BOOTARGS_SUBST
1648 bool "Support substituting strings in boot arguments"
1649 help
1650 This allows substituting string values in the boot arguments. These
1651 are applied after the commandline has been built.
1652
1653 One use for this is to insert the root-disk UUID into the command
1654 line where bootargs contains "root=${uuid}"
1655
1656 setenv bootargs "console= root=${uuid}"
1657 # Set the 'uuid' environment variable
1658 part uuid mmc 2:2 uuid
1659
1660 # Command-line substitution will put the real uuid into the
1661 # kernel command line
1662 bootm
1663
Simon Glassfe5db252020-09-10 20:21:18 -06001664config USE_BOOTCOMMAND
1665 bool "Enable a default value for bootcmd"
Tom Rinidbdb4b32023-10-26 14:31:28 -04001666 depends on CMDLINE
Simon Glassfe5db252020-09-10 20:21:18 -06001667 help
1668 Provide a default value for the bootcmd entry in the environment. If
1669 autoboot is enabled this is what will be run automatically. Enable
1670 this option to be able to specify CONFIG_BOOTCOMMAND as a string. If
1671 this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
1672 won't take any space in U-Boot image.
1673
1674config BOOTCOMMAND
1675 string "bootcmd value"
1676 depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
Simon Glassd8d40bc2023-05-06 08:27:09 -06001677 default "bootflow scan -lb" if BOOTSTD_DEFAULTS && CMD_BOOTFLOW_FULL
1678 default "bootflow scan" if BOOTSTD_DEFAULTS && !CMD_BOOTFLOW_FULL
Simon Glassa91492b2022-04-24 23:31:27 -06001679 default "run distro_bootcmd" if !BOOTSTD_BOOTCOMMAND && DISTRO_DEFAULTS
Simon Glassfe5db252020-09-10 20:21:18 -06001680 help
1681 This is the string of commands that will be used as bootcmd and if
1682 AUTOBOOT is set, automatically run.
1683
1684config USE_PREBOOT
1685 bool "Enable preboot"
Tom Rinidbdb4b32023-10-26 14:31:28 -04001686 depends on CMDLINE
Simon Glassfe5db252020-09-10 20:21:18 -06001687 help
1688 When this option is enabled, the existence of the environment
1689 variable "preboot" will be checked immediately before starting the
1690 CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
1691 entering interactive mode.
1692
1693 This feature is especially useful when "preboot" is automatically
1694 generated or modified. For example, the boot code can modify the
1695 "preboot" when a user holds down a certain combination of keys.
1696
1697config PREBOOT
1698 string "preboot default value"
1699 depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
Patrick Delaunay87459da2020-10-12 09:47:50 +02001700 default "usb start" if USB_KEYBOARD
Simon Glassfe5db252020-09-10 20:21:18 -06001701 default ""
1702 help
1703 This is the default of "preboot" environment variable.
1704
Pali Rohár2827c2f2022-07-10 13:42:55 +02001705config PREBOOT_DEFINED
1706 bool
1707 default y if PREBOOT != ""
1708
Simon Glass832876a2020-09-10 20:21:20 -06001709config DEFAULT_FDT_FILE
1710 string "Default fdt file"
1711 help
1712 This option is used to set the default fdt file to boot OS.
1713
Dzmitry Sankouski12a3e1a2022-02-22 21:49:52 +03001714config SAVE_PREV_BL_FDT_ADDR
1715 depends on ARM
1716 bool "Saves fdt address, passed by the previous bootloader, to env var"
1717 help
1718 When u-boot is used as a chain-loaded bootloader (replacing OS kernel),
1719 enable this option to save fdt address, passed by the
1720 previous bootloader for future use.
1721 Address is saved to `prevbl_fdt_addr` environment variable.
1722
1723 If no fdt was provided by previous bootloader, no env variables
1724 will be created.
1725
1726config SAVE_PREV_BL_INITRAMFS_START_ADDR
1727 depends on ARM
1728 bool "Saves initramfs address, passed by the previous bootloader, to env var"
1729 help
1730 When u-boot is used as a chain-loaded bootloader(replacing OS kernel),
1731 enable this option to save initramfs address, passed by the
1732 previous bootloader for future use.
1733 Address is saved to `prevbl_initrd_start_addr` environment variable.
1734
1735 If no initramfs was provided by previous bootloader, no env variables
1736 will be created.
1737
Simon Glassa0874dc2023-06-01 10:23:02 -06001738menu "Configuration editor"
1739
1740config CEDIT
1741 bool "Configuration editor"
1742 depends on BOOTSTD
1743 help
1744 Provides a way to deal with board configuration and present it to
1745 the user for adjustment.
1746
1747 This is intended to provide both graphical and text-based user
1748 interfaces, but only graphical is support at present.
1749
1750endmenu # Configuration editor
1751
Simon Glasscf298162020-09-10 20:21:13 -06001752endmenu # Booting