blob: f23b99885212ab82dc2ee5428870bd1cd0535843 [file] [log] [blame]
Simon Glassb45b1632020-09-10 20:21:13 -06001menu "Boot options"
2
3menu "Boot images"
4
5config ANDROID_BOOT_IMAGE
6 bool "Enable support for Android Boot Images"
7 default y if FASTBOOT
8 help
9 This enables support for booting images which use the Android
10 image format header.
11
12config FIT
13 bool "Support Flattened Image Tree"
Alexandru Gagniuc650b7862021-09-02 19:54:21 -050014 select HASH
Simon Glassb45b1632020-09-10 20:21:13 -060015 select MD5
16 select SHA1
Alexandru Gagniuc8d310ef2021-09-02 19:54:17 -050017 imply SHA256
Simon Glassb45b1632020-09-10 20:21:13 -060018 help
19 This option allows you to boot the new uImage structure,
20 Flattened Image Tree. FIT is formally a FDT, which can include
21 images of various types (kernel, FDT blob, ramdisk, etc.)
22 in a single blob. To boot this new uImage structure,
23 pass the address of the blob to the "bootm" command.
24 FIT is very flexible, supporting compression, multiple images,
25 multiple configurations, verification through hashing and also
26 verified boot (secure boot using RSA).
27
28if FIT
29
30config FIT_EXTERNAL_OFFSET
31 hex "FIT external data offset"
32 default 0x0
33 help
34 This specifies a data offset in fit image.
35 The offset is from data payload offset to the beginning of
36 fit image header. When specifies a offset, specific data
37 could be put in the hole between data payload and fit image
38 header, such as CSF data on i.MX platform.
39
Simon Glass244705b2021-02-15 17:08:10 -070040config FIT_FULL_CHECK
41 bool "Do a full check of the FIT before using it"
42 default y
43 help
44 Enable this do a full check of the FIT to make sure it is valid. This
45 helps to protect against carefully crafted FITs which take advantage
46 of bugs or omissions in the code. This includes a bad structure,
47 multiple root nodes and the like.
48
Simon Glassb45b1632020-09-10 20:21:13 -060049config FIT_SIGNATURE
50 bool "Enable signature verification of FIT uImages"
51 depends on DM
52 select HASH
Alexandru Gagniuc1f2e2312021-07-29 11:47:18 -050053 imply RSA
54 imply RSA_VERIFY
Simon Glassb45b1632020-09-10 20:21:13 -060055 select IMAGE_SIGN_INFO
Simon Glass244705b2021-02-15 17:08:10 -070056 select FIT_FULL_CHECK
Simon Glassb45b1632020-09-10 20:21:13 -060057 help
58 This option enables signature verification of FIT uImages,
59 using a hash signed and verified using RSA. If
60 CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
61 hashing is available using hardware, then the RSA library will use
62 it. See doc/uImage.FIT/signature.txt for more details.
63
64 WARNING: When relying on signed FIT images with a required signature
65 check the legacy image format is disabled by default, so that
66 unsigned images cannot be loaded. If a board needs the legacy image
67 format support in this case, enable it using
68 CONFIG_LEGACY_IMAGE_FORMAT.
69
70config FIT_SIGNATURE_MAX_SIZE
71 hex "Max size of signed FIT structures"
72 depends on FIT_SIGNATURE
73 default 0x10000000
74 help
75 This option sets a max size in bytes for verified FIT uImages.
76 A sane value of 256MB protects corrupted DTB structures from overlapping
77 device memory. Assure this size does not extend past expected storage
78 space.
79
Simon Glass66b00c82021-07-14 17:05:31 -050080config FIT_RSASSA_PSS
Simon Glassb45b1632020-09-10 20:21:13 -060081 bool "Support rsassa-pss signature scheme of FIT image contents"
82 depends on FIT_SIGNATURE
Simon Glassb45b1632020-09-10 20:21:13 -060083 help
84 Enable this to support the pss padding algorithm as described
85 in the rfc8017 (https://tools.ietf.org/html/rfc8017).
86
87config FIT_CIPHER
88 bool "Enable ciphering data in a FIT uImages"
89 depends on DM
90 select AES
91 help
92 Enable the feature of data ciphering/unciphering in the tool mkimage
93 and in the u-boot support of the FIT image.
94
95config FIT_VERBOSE
96 bool "Show verbose messages when FIT images fail"
97 help
98 Generally a system will have valid FIT images so debug messages
99 are a waste of code space. If you are debugging your images then
100 you can enable this option to get more verbose information about
101 failures.
102
103config FIT_BEST_MATCH
104 bool "Select the best match for the kernel device tree"
105 help
106 When no configuration is explicitly selected, default to the
107 one whose fdt's compatibility field best matches that of
108 U-Boot itself. A match is considered "best" if it matches the
109 most specific compatibility entry of U-Boot's fdt's root node.
110 The order of entries in the configuration's fdt is ignored.
111
112config FIT_IMAGE_POST_PROCESS
113 bool "Enable post-processing of FIT artifacts after loading by U-Boot"
Siew Chin Lim2492d592021-03-01 20:04:11 +0800114 depends on TI_SECURE_DEVICE || SOCFPGA_SECURE_VAB_AUTH
Simon Glassb45b1632020-09-10 20:21:13 -0600115 help
116 Allows doing any sort of manipulation to blobs after they got extracted
117 from FIT images like stripping off headers or modifying the size of the
118 blob, verification, authentication, decryption etc. in a platform or
119 board specific way. In order to use this feature a platform or board-
120 specific implementation of board_fit_image_post_process() must be
121 provided. Also, anything done during this post-processing step would
122 need to be comprehended in how the images were prepared before being
123 injected into the FIT creation (i.e. the blobs would have been pre-
124 processed before being added to the FIT image).
125
Ravik Hasija11dac412021-01-27 14:01:48 -0800126config FIT_PRINT
127 bool "Support FIT printing"
128 default y
129 help
130 Support printing the content of the fitImage in a verbose manner.
131
Simon Glassb45b1632020-09-10 20:21:13 -0600132if SPL
133
134config SPL_FIT
135 bool "Support Flattened Image Tree within SPL"
136 depends on SPL
Alexandru Gagniuc650b7862021-09-02 19:54:21 -0500137 select SPL_HASH
Simon Glassb45b1632020-09-10 20:21:13 -0600138 select SPL_OF_LIBFDT
139
140config SPL_FIT_PRINT
141 bool "Support FIT printing within SPL"
142 depends on SPL_FIT
143 help
144 Support printing the content of the fitImage in a verbose manner in SPL.
145
Simon Glass244705b2021-02-15 17:08:10 -0700146config SPL_FIT_FULL_CHECK
147 bool "Do a full check of the FIT before using it"
148 help
149 Enable this do a full check of the FIT to make sure it is valid. This
150 helps to protect against carefully crafted FITs which take advantage
151 of bugs or omissions in the code. This includes a bad structure,
152 multiple root nodes and the like.
153
154
Simon Glassb45b1632020-09-10 20:21:13 -0600155config SPL_FIT_SIGNATURE
156 bool "Enable signature verification of FIT firmware within SPL"
157 depends on SPL_DM
Klaus Heinrich Kiwiae5073f2021-02-09 15:41:54 -0300158 depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
Klaus Heinrich Kiwic9796e62021-02-09 15:41:53 -0300159 select FIT_SIGNATURE
Simon Glassb45b1632020-09-10 20:21:13 -0600160 select SPL_FIT
Simon Glassa8437ce2021-07-10 21:14:25 -0600161 select SPL_CRYPTO
Alexandru Gagniuc97464ff2021-09-02 19:54:19 -0500162 select SPL_HASH
Alexandru Gagniuc1f2e2312021-07-29 11:47:18 -0500163 imply SPL_RSA
164 imply SPL_RSA_VERIFY
Simon Glassb45b1632020-09-10 20:21:13 -0600165 select SPL_IMAGE_SIGN_INFO
Simon Glass244705b2021-02-15 17:08:10 -0700166 select SPL_FIT_FULL_CHECK
Simon Glassb45b1632020-09-10 20:21:13 -0600167
168config SPL_LOAD_FIT
169 bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
170 select SPL_FIT
171 help
172 Normally with the SPL framework a legacy image is generated as part
173 of the build. This contains U-Boot along with information as to
174 where it should be loaded. This option instead enables generation
175 of a FIT (Flat Image Tree) which provides more flexibility. In
176 particular it can handle selecting from multiple device tree
177 and passing the correct one to U-Boot.
178
Alexandru Gagniuc064c9c22021-03-29 12:05:15 -0500179 This path has the following limitations:
180
Bin Meng91cdcb92021-05-10 20:23:29 +0800181 1. "loadables" images, other than FDTs, which do not have a "load"
Alexandru Gagniuc064c9c22021-03-29 12:05:15 -0500182 property will not be loaded. This limitation also applies to FPGA
183 images with the correct "compatible" string.
184 2. For FPGA images, only the "compatible" = "u-boot,fpga-legacy"
185 loading method is supported.
186 3. FDTs are only loaded for images with an "os" property of "u-boot".
187 "linux" images are also supported with Falcon boot mode.
188
Simon Glassb45b1632020-09-10 20:21:13 -0600189config SPL_LOAD_FIT_ADDRESS
190 hex "load address of fit image"
191 depends on SPL_LOAD_FIT
192 default 0x0
193 help
194 Specify the load address of the fit image that will be loaded
195 by SPL.
196
197config SPL_LOAD_FIT_APPLY_OVERLAY
198 bool "Enable SPL applying DT overlays from FIT"
199 depends on SPL_LOAD_FIT
200 select OF_LIBFDT_OVERLAY
201 help
202 The device tree is loaded from the FIT image. Allow the SPL is to
203 also load device-tree overlays from the FIT image an apply them
204 over the device tree.
205
206config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ
207 depends on SPL_LOAD_FIT_APPLY_OVERLAY
208 default 0x10000
209 hex "size of temporary buffer used to load the overlays"
210 help
211 The size of the area where the overlays will be loaded and
212 uncompress. Must be at least as large as biggest overlay
213 (uncompressed)
214
215config SPL_LOAD_FIT_FULL
216 bool "Enable SPL loading U-Boot as a FIT (full fitImage features)"
217 select SPL_FIT
218 help
219 Normally with the SPL framework a legacy image is generated as part
220 of the build. This contains U-Boot along with information as to
221 where it should be loaded. This option instead enables generation
222 of a FIT (Flat Image Tree) which provides more flexibility. In
223 particular it can handle selecting from multiple device tree
224 and passing the correct one to U-Boot.
225
226config SPL_FIT_IMAGE_POST_PROCESS
227 bool "Enable post-processing of FIT artifacts after loading by the SPL"
228 depends on SPL_LOAD_FIT
229 help
230 Allows doing any sort of manipulation to blobs after they got extracted
231 from the U-Boot FIT image like stripping off headers or modifying the
232 size of the blob, verification, authentication, decryption etc. in a
233 platform or board specific way. In order to use this feature a platform
234 or board-specific implementation of board_fit_image_post_process() must
235 be provided. Also, anything done during this post-processing step would
236 need to be comprehended in how the images were prepared before being
237 injected into the FIT creation (i.e. the blobs would have been pre-
238 processed before being added to the FIT image).
239
240config SPL_FIT_SOURCE
241 string ".its source file for U-Boot FIT image"
242 depends on SPL_FIT
243 help
244 Specifies a (platform specific) FIT source file to generate the
245 U-Boot FIT image. This could specify further image to load and/or
246 execute.
247
248config USE_SPL_FIT_GENERATOR
249 bool "Use a script to generate the .its script"
Bin Meng442d4462021-05-10 20:23:41 +0800250 default y if SPL_FIT && (!ARCH_SUNXI && !RISCV)
Simon Glassb45b1632020-09-10 20:21:13 -0600251
252config SPL_FIT_GENERATOR
253 string ".its file generator script for U-Boot FIT image"
254 depends on USE_SPL_FIT_GENERATOR
255 default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP
256 default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
Simon Glassb45b1632020-09-10 20:21:13 -0600257 help
258 Specifies a (platform specific) script file to generate the FIT
259 source file used to build the U-Boot FIT image file. This gets
260 passed a list of supported device tree file stub names to
261 include in the generated image.
262
263endif # SPL
264
265endif # FIT
266
267config LEGACY_IMAGE_FORMAT
268 bool "Enable support for the legacy image format"
269 default y if !FIT_SIGNATURE
270 help
271 This option enables the legacy image format. It is enabled by
272 default for backward compatibility, unless FIT_SIGNATURE is
273 set where it is disabled so that unsigned images cannot be
274 loaded. If a board needs the legacy image format support in this
275 case, enable it here.
276
Simon Glassf11d6132020-09-10 20:21:19 -0600277config SUPPORT_RAW_INITRD
278 bool "Enable raw initrd images"
279 help
280 Note, defining the SUPPORT_RAW_INITRD allows user to supply
281 kernel with raw initrd images. The syntax is slightly different, the
282 address of the initrd must be augmented by it's size, in the following
283 format: "<initrd address>:<initrd size>".
284
Simon Glassb45b1632020-09-10 20:21:13 -0600285config OF_BOARD_SETUP
286 bool "Set up board-specific details in device tree before boot"
287 depends on OF_LIBFDT
288 help
289 This causes U-Boot to call ft_board_setup() before booting into
290 the Operating System. This function can set up various
291 board-specific information in the device tree for use by the OS.
292 The device tree is then passed to the OS.
293
294config OF_SYSTEM_SETUP
295 bool "Set up system-specific details in device tree before boot"
296 depends on OF_LIBFDT
297 help
298 This causes U-Boot to call ft_system_setup() before booting into
299 the Operating System. This function can set up various
300 system-specific information in the device tree for use by the OS.
301 The device tree is then passed to the OS.
302
303config OF_STDOUT_VIA_ALIAS
304 bool "Update the device-tree stdout alias from U-Boot"
305 depends on OF_LIBFDT
306 help
307 This uses U-Boot's serial alias from the aliases node to update
308 the device tree passed to the OS. The "linux,stdout-path" property
309 in the chosen node is set to point to the correct serial node.
310 This option currently references CONFIG_CONS_INDEX, which is
311 incorrect when used with device tree as this option does not
312 exist / should not be used.
313
314config SYS_EXTRA_OPTIONS
315 string "Extra Options (DEPRECATED)"
316 help
317 The old configuration infrastructure (= mkconfig + boards.cfg)
318 provided the extra options field. If you have something like
319 "HAS_BAR,BAZ=64", the optional options
320 #define CONFIG_HAS
321 #define CONFIG_BAZ 64
322 will be defined in include/config.h.
323 This option was prepared for the smooth migration from the old
324 configuration to Kconfig. Since this option will be removed sometime,
325 new boards should not use this option.
326
327config HAVE_SYS_TEXT_BASE
328 bool
329 depends on !NIOS2 && !XTENSA
330 depends on !EFI_APP
331 default y
332
333config SYS_TEXT_BASE
334 depends on HAVE_SYS_TEXT_BASE
Tom Rini63471d52021-07-09 10:39:21 -0400335 default 0x0 if POSITION_INDEPENDENT
Simon Glassb45b1632020-09-10 20:21:13 -0600336 default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3
337 default 0x4a000000 if ARCH_SUNXI && !MACH_SUN9I && !MACH_SUN8I_V3S
338 default 0x2a000000 if ARCH_SUNXI && MACH_SUN9I
339 default 0x42e00000 if ARCH_SUNXI && MACH_SUN8I_V3S
340 hex "Text Base"
341 help
342 The address in memory that U-Boot will be running from, initially.
343
344config SYS_CLK_FREQ
345 depends on ARC || ARCH_SUNXI || MPC83xx
346 int "CPU clock frequency"
347 help
348 TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
349
350config ARCH_FIXUP_FDT_MEMORY
351 bool "Enable arch_fixup_memory_banks() call"
352 default y
353 help
354 Enable FDT memory map syncup before OS boot. This feature can be
355 used for booting OS with different memory setup where the part of
356 the memory location should be used for different purpose.
357
Simon Glassd81f07f2020-11-04 09:57:35 -0700358config CHROMEOS
359 bool "Support booting Chrome OS"
360 help
361 Chrome OS requires U-Boot to set up a table indicating the boot mode
362 (e.g. Developer mode) and a few other things. Enable this if you are
363 booting on a Chromebook to avoid getting an error about an invalid
364 firmware ID.
365
366config CHROMEOS_VBOOT
367 bool "Support Chrome OS verified boot"
368 help
369 This is intended to enable the full Chrome OS verified boot support
370 in U-Boot. It is not actually implemented in the U-Boot source code
371 at present, so this option is always set to 'n'. It allows
372 distinguishing between booting Chrome OS in a basic way (developer
373 mode) and a full boot.
374
Tom Rini9ff815a2021-08-24 23:11:49 -0400375config RAMBOOT_PBL
376 bool "Freescale PBL(pre-boot loader) image format support"
377 help
378 Some SoCs use PBL to load RCW and/or pre-initialization instructions.
379 For more details refer to doc/README.pblimage
380
381config SYS_FSL_PBL_PBI
382 string "PBI(pre-boot instructions) commands for the PBL image"
383 depends on RAMBOOT_PBL
384 help
385 PBI commands can be used to configure SoC before it starts the execution.
386 Please refer doc/README.pblimage for more details.
387
388config SYS_FSL_PBL_RCW
389 string "Aadditional RCW (Power on reset configuration) for the PBL image"
390 depends on RAMBOOT_PBL
391 help
392 Enables addition of RCW (Power on reset configuration) in built image.
393 Please refer doc/README.pblimage for more details.
394
Simon Glassb45b1632020-09-10 20:21:13 -0600395endmenu # Boot images
396
Simon Glassd02ddcf2020-09-10 20:21:14 -0600397menu "Boot timing"
398
399config BOOTSTAGE
400 bool "Boot timing and reporting"
401 help
402 Enable recording of boot time while booting. To use it, insert
403 calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
404 bootstage.h. Only a single entry is recorded for each ID. You can
405 give the entry a name with bootstage_mark_name(). You can also
406 record elapsed time in a particular stage using bootstage_start()
407 before starting and bootstage_accum() when finished. Bootstage will
408 add up all the accumulated time and report it.
409
410 Normally, IDs are defined in bootstage.h but a small number of
411 additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
412 as the ID.
413
414 Calls to show_boot_progress() will also result in log entries but
415 these will not have names.
416
417config SPL_BOOTSTAGE
418 bool "Boot timing and reported in SPL"
419 depends on BOOTSTAGE
420 help
421 Enable recording of boot time in SPL. To make this visible to U-Boot
422 proper, enable BOOTSTAGE_STASH as well. This will stash the timing
423 information when SPL finishes and load it when U-Boot proper starts
424 up.
425
426config TPL_BOOTSTAGE
427 bool "Boot timing and reported in TPL"
428 depends on BOOTSTAGE
429 help
430 Enable recording of boot time in SPL. To make this visible to U-Boot
431 proper, enable BOOTSTAGE_STASH as well. This will stash the timing
432 information when TPL finishes and load it when U-Boot proper starts
433 up.
434
435config BOOTSTAGE_REPORT
436 bool "Display a detailed boot timing report before booting the OS"
437 depends on BOOTSTAGE
438 help
439 Enable output of a boot time report just before the OS is booted.
440 This shows how long it took U-Boot to go through each stage of the
441 boot process. The report looks something like this:
442
443 Timer summary in microseconds:
444 Mark Elapsed Stage
445 0 0 reset
446 3,575,678 3,575,678 board_init_f start
447 3,575,695 17 arch_cpu_init A9
448 3,575,777 82 arch_cpu_init done
449 3,659,598 83,821 board_init_r start
450 3,910,375 250,777 main_loop
451 29,916,167 26,005,792 bootm_start
452 30,361,327 445,160 start_kernel
453
454config BOOTSTAGE_RECORD_COUNT
455 int "Number of boot stage records to store"
Simon Glass051ddfb2021-02-03 06:00:49 -0700456 depends on BOOTSTAGE
Simon Glassd02ddcf2020-09-10 20:21:14 -0600457 default 30
458 help
459 This is the size of the bootstage record list and is the maximum
460 number of bootstage records that can be recorded.
461
462config SPL_BOOTSTAGE_RECORD_COUNT
463 int "Number of boot stage records to store for SPL"
Simon Glass051ddfb2021-02-03 06:00:49 -0700464 depends on SPL_BOOTSTAGE
Simon Glassd02ddcf2020-09-10 20:21:14 -0600465 default 5
466 help
467 This is the size of the bootstage record list and is the maximum
468 number of bootstage records that can be recorded.
469
470config TPL_BOOTSTAGE_RECORD_COUNT
471 int "Number of boot stage records to store for TPL"
Simon Glass051ddfb2021-02-03 06:00:49 -0700472 depends on TPL_BOOTSTAGE
Simon Glassd02ddcf2020-09-10 20:21:14 -0600473 default 5
474 help
475 This is the size of the bootstage record list and is the maximum
476 number of bootstage records that can be recorded.
477
478config BOOTSTAGE_FDT
479 bool "Store boot timing information in the OS device tree"
480 depends on BOOTSTAGE
481 help
482 Stash the bootstage information in the FDT. A root 'bootstage'
483 node is created with each bootstage id as a child. Each child
484 has a 'name' property and either 'mark' containing the
485 mark time in microseconds, or 'accum' containing the
486 accumulated time for that bootstage id in microseconds.
487 For example:
488
489 bootstage {
490 154 {
491 name = "board_init_f";
492 mark = <3575678>;
493 };
494 170 {
495 name = "lcd";
496 accum = <33482>;
497 };
498 };
499
500 Code in the Linux kernel can find this in /proc/devicetree.
501
502config BOOTSTAGE_STASH
503 bool "Stash the boot timing information in memory before booting OS"
504 depends on BOOTSTAGE
505 help
506 Some OSes do not support device tree. Bootstage can instead write
507 the boot timing information in a binary format at a given address.
508 This happens through a call to bootstage_stash(), typically in
509 the CPU's cleanup_before_linux() function. You can use the
510 'bootstage stash' and 'bootstage unstash' commands to do this on
511 the command line.
512
513config BOOTSTAGE_STASH_ADDR
514 hex "Address to stash boot timing information"
515 default 0
516 help
517 Provide an address which will not be overwritten by the OS when it
518 starts, so that it can read this information when ready.
519
520config BOOTSTAGE_STASH_SIZE
521 hex "Size of boot timing stash region"
522 default 0x1000
523 help
524 This should be large enough to hold the bootstage stash. A value of
525 4096 (4KiB) is normally plenty.
526
527config SHOW_BOOT_PROGRESS
528 bool "Show boot progress in a board-specific manner"
529 help
530 Defining this option allows to add some board-specific code (calling
531 a user-provided function show_boot_progress(int) that enables you to
532 show the system's boot progress on some display (for example, some
533 LEDs) on your board. At the moment, the following checkpoints are
534 implemented:
535
536 Legacy uImage format:
537
538 Arg Where When
539 1 common/cmd_bootm.c before attempting to boot an image
540 -1 common/cmd_bootm.c Image header has bad magic number
541 2 common/cmd_bootm.c Image header has correct magic number
542 -2 common/cmd_bootm.c Image header has bad checksum
543 3 common/cmd_bootm.c Image header has correct checksum
544 -3 common/cmd_bootm.c Image data has bad checksum
545 4 common/cmd_bootm.c Image data has correct checksum
546 -4 common/cmd_bootm.c Image is for unsupported architecture
547 5 common/cmd_bootm.c Architecture check OK
548 -5 common/cmd_bootm.c Wrong Image Type (not kernel, multi)
549 6 common/cmd_bootm.c Image Type check OK
550 -6 common/cmd_bootm.c gunzip uncompression error
551 -7 common/cmd_bootm.c Unimplemented compression type
552 7 common/cmd_bootm.c Uncompression OK
553 8 common/cmd_bootm.c No uncompress/copy overwrite error
554 -9 common/cmd_bootm.c Unsupported OS (not Linux, BSD, VxWorks, QNX)
555
556 9 common/image.c Start initial ramdisk verification
557 -10 common/image.c Ramdisk header has bad magic number
558 -11 common/image.c Ramdisk header has bad checksum
559 10 common/image.c Ramdisk header is OK
560 -12 common/image.c Ramdisk data has bad checksum
561 11 common/image.c Ramdisk data has correct checksum
562 12 common/image.c Ramdisk verification complete, start loading
563 -13 common/image.c Wrong Image Type (not PPC Linux ramdisk)
564 13 common/image.c Start multifile image verification
565 14 common/image.c No initial ramdisk, no multifile, continue.
566
567 15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
568
569 -30 arch/powerpc/lib/board.c Fatal error, hang the system
570 -31 post/post.c POST test failed, detected by post_output_backlog()
571 -32 post/post.c POST test failed, detected by post_run_single()
572
573 34 common/cmd_doc.c before loading a Image from a DOC device
574 -35 common/cmd_doc.c Bad usage of "doc" command
575 35 common/cmd_doc.c correct usage of "doc" command
576 -36 common/cmd_doc.c No boot device
577 36 common/cmd_doc.c correct boot device
578 -37 common/cmd_doc.c Unknown Chip ID on boot device
579 37 common/cmd_doc.c correct chip ID found, device available
580 -38 common/cmd_doc.c Read Error on boot device
581 38 common/cmd_doc.c reading Image header from DOC device OK
582 -39 common/cmd_doc.c Image header has bad magic number
583 39 common/cmd_doc.c Image header has correct magic number
584 -40 common/cmd_doc.c Error reading Image from DOC device
585 40 common/cmd_doc.c Image header has correct magic number
586 41 common/cmd_ide.c before loading a Image from a IDE device
587 -42 common/cmd_ide.c Bad usage of "ide" command
588 42 common/cmd_ide.c correct usage of "ide" command
589 -43 common/cmd_ide.c No boot device
590 43 common/cmd_ide.c boot device found
591 -44 common/cmd_ide.c Device not available
592 44 common/cmd_ide.c Device available
593 -45 common/cmd_ide.c wrong partition selected
594 45 common/cmd_ide.c partition selected
595 -46 common/cmd_ide.c Unknown partition table
596 46 common/cmd_ide.c valid partition table found
597 -47 common/cmd_ide.c Invalid partition type
598 47 common/cmd_ide.c correct partition type
599 -48 common/cmd_ide.c Error reading Image Header on boot device
600 48 common/cmd_ide.c reading Image Header from IDE device OK
601 -49 common/cmd_ide.c Image header has bad magic number
602 49 common/cmd_ide.c Image header has correct magic number
603 -50 common/cmd_ide.c Image header has bad checksum
604 50 common/cmd_ide.c Image header has correct checksum
605 -51 common/cmd_ide.c Error reading Image from IDE device
606 51 common/cmd_ide.c reading Image from IDE device OK
607 52 common/cmd_nand.c before loading a Image from a NAND device
608 -53 common/cmd_nand.c Bad usage of "nand" command
609 53 common/cmd_nand.c correct usage of "nand" command
610 -54 common/cmd_nand.c No boot device
611 54 common/cmd_nand.c boot device found
612 -55 common/cmd_nand.c Unknown Chip ID on boot device
613 55 common/cmd_nand.c correct chip ID found, device available
614 -56 common/cmd_nand.c Error reading Image Header on boot device
615 56 common/cmd_nand.c reading Image Header from NAND device OK
616 -57 common/cmd_nand.c Image header has bad magic number
617 57 common/cmd_nand.c Image header has correct magic number
618 -58 common/cmd_nand.c Error reading Image from NAND device
619 58 common/cmd_nand.c reading Image from NAND device OK
620
621 -60 common/env_common.c Environment has a bad CRC, using default
622
623 64 net/eth.c starting with Ethernet configuration.
624 -64 net/eth.c no Ethernet found.
625 65 net/eth.c Ethernet found.
626
627 -80 common/cmd_net.c usage wrong
628 80 common/cmd_net.c before calling net_loop()
629 -81 common/cmd_net.c some error in net_loop() occurred
630 81 common/cmd_net.c net_loop() back without error
631 -82 common/cmd_net.c size == 0 (File with size 0 loaded)
632 82 common/cmd_net.c trying automatic boot
633 83 common/cmd_net.c running "source" command
634 -83 common/cmd_net.c some error in automatic boot or "source" command
635 84 common/cmd_net.c end without errors
636
637 FIT uImage format:
638
639 Arg Where When
640 100 common/cmd_bootm.c Kernel FIT Image has correct format
641 -100 common/cmd_bootm.c Kernel FIT Image has incorrect format
642 101 common/cmd_bootm.c No Kernel subimage unit name, using configuration
643 -101 common/cmd_bootm.c Can't get configuration for kernel subimage
644 102 common/cmd_bootm.c Kernel unit name specified
645 -103 common/cmd_bootm.c Can't get kernel subimage node offset
646 103 common/cmd_bootm.c Found configuration node
647 104 common/cmd_bootm.c Got kernel subimage node offset
648 -104 common/cmd_bootm.c Kernel subimage hash verification failed
649 105 common/cmd_bootm.c Kernel subimage hash verification OK
650 -105 common/cmd_bootm.c Kernel subimage is for unsupported architecture
651 106 common/cmd_bootm.c Architecture check OK
652 -106 common/cmd_bootm.c Kernel subimage has wrong type
653 107 common/cmd_bootm.c Kernel subimage type OK
654 -107 common/cmd_bootm.c Can't get kernel subimage data/size
655 108 common/cmd_bootm.c Got kernel subimage data/size
656 -108 common/cmd_bootm.c Wrong image type (not legacy, FIT)
657 -109 common/cmd_bootm.c Can't get kernel subimage type
658 -110 common/cmd_bootm.c Can't get kernel subimage comp
659 -111 common/cmd_bootm.c Can't get kernel subimage os
660 -112 common/cmd_bootm.c Can't get kernel subimage load address
661 -113 common/cmd_bootm.c Image uncompress/copy overwrite error
662
663 120 common/image.c Start initial ramdisk verification
664 -120 common/image.c Ramdisk FIT image has incorrect format
665 121 common/image.c Ramdisk FIT image has correct format
666 122 common/image.c No ramdisk subimage unit name, using configuration
667 -122 common/image.c Can't get configuration for ramdisk subimage
668 123 common/image.c Ramdisk unit name specified
669 -124 common/image.c Can't get ramdisk subimage node offset
670 125 common/image.c Got ramdisk subimage node offset
671 -125 common/image.c Ramdisk subimage hash verification failed
672 126 common/image.c Ramdisk subimage hash verification OK
673 -126 common/image.c Ramdisk subimage for unsupported architecture
674 127 common/image.c Architecture check OK
675 -127 common/image.c Can't get ramdisk subimage data/size
676 128 common/image.c Got ramdisk subimage data/size
677 129 common/image.c Can't get ramdisk load address
678 -129 common/image.c Got ramdisk load address
679
680 -130 common/cmd_doc.c Incorrect FIT image format
681 131 common/cmd_doc.c FIT image format OK
682
683 -140 common/cmd_ide.c Incorrect FIT image format
684 141 common/cmd_ide.c FIT image format OK
685
686 -150 common/cmd_nand.c Incorrect FIT image format
687 151 common/cmd_nand.c FIT image format OK
688
689endmenu
690
Simon Glasseebed782020-09-10 20:21:15 -0600691menu "Boot media"
692
693config NOR_BOOT
694 bool "Support for booting from NOR flash"
695 depends on NOR
696 help
697 Enabling this will make a U-Boot binary that is capable of being
698 booted via NOR. In this case we will enable certain pinmux early
699 as the ROM only partially sets up pinmux. We also default to using
700 NOR for environment.
701
702config NAND_BOOT
703 bool "Support for booting from NAND flash"
Simon Glasseebed782020-09-10 20:21:15 -0600704 imply MTD_RAW_NAND
705 help
706 Enabling this will make a U-Boot binary that is capable of being
707 booted via NAND flash. This is not a must, some SoCs need this,
708 some not.
709
710config ONENAND_BOOT
711 bool "Support for booting from ONENAND"
Simon Glasseebed782020-09-10 20:21:15 -0600712 imply MTD_RAW_NAND
713 help
714 Enabling this will make a U-Boot binary that is capable of being
715 booted via ONENAND. This is not a must, some SoCs need this,
716 some not.
717
718config QSPI_BOOT
719 bool "Support for booting from QSPI flash"
Simon Glasseebed782020-09-10 20:21:15 -0600720 help
721 Enabling this will make a U-Boot binary that is capable of being
722 booted via QSPI flash. This is not a must, some SoCs need this,
723 some not.
724
725config SATA_BOOT
726 bool "Support for booting from SATA"
Simon Glasseebed782020-09-10 20:21:15 -0600727 help
728 Enabling this will make a U-Boot binary that is capable of being
729 booted via SATA. This is not a must, some SoCs need this,
730 some not.
731
732config SD_BOOT
733 bool "Support for booting from SD/EMMC"
Simon Glasseebed782020-09-10 20:21:15 -0600734 help
735 Enabling this will make a U-Boot binary that is capable of being
736 booted via SD/EMMC. This is not a must, some SoCs need this,
737 some not.
738
739config SPI_BOOT
740 bool "Support for booting from SPI flash"
Simon Glasseebed782020-09-10 20:21:15 -0600741 help
742 Enabling this will make a U-Boot binary that is capable of being
743 booted via SPI flash. This is not a must, some SoCs need this,
744 some not.
745
746endmenu
747
Simon Glasse9d54d72020-09-10 20:21:16 -0600748menu "Autoboot options"
749
750config AUTOBOOT
751 bool "Autoboot"
752 default y
753 help
754 This enables the autoboot. See doc/README.autoboot for detail.
755
Simon Glass1b6cbaa2020-09-10 20:21:17 -0600756config BOOTDELAY
757 int "delay in seconds before automatically booting"
758 default 2
759 depends on AUTOBOOT
760 help
761 Delay before automatically running bootcmd;
762 set to 0 to autoboot with no delay, but you can stop it by key input.
763 set to -1 to disable autoboot.
764 set to -2 to autoboot with no delay and not check for abort
765
766 If this value is >= 0 then it is also used for the default delay
767 before starting the default entry in bootmenu. If it is < 0 then
768 a default value of 10s is used.
769
770 See doc/README.autoboot for details.
771
Simon Glasse9d54d72020-09-10 20:21:16 -0600772config AUTOBOOT_KEYED
773 bool "Stop autobooting via specific input key / string"
Simon Glasse9d54d72020-09-10 20:21:16 -0600774 help
775 This option enables stopping (aborting) of the automatic
776 boot feature only by issuing a specific input key or
777 string. If not enabled, any input key will abort the
778 U-Boot automatic booting process and bring the device
779 to the U-Boot prompt for user input.
780
Steffen Jaeckeldfc97322021-07-08 15:57:38 +0200781config AUTOBOOT_FLUSH_STDIN
782 bool "Enable flushing stdin before starting to read the password"
783 depends on AUTOBOOT_KEYED && !SANDBOX
784 help
785 When this option is enabled stdin buffer will be flushed before
786 starting to read the password.
787 This can't be enabled for the sandbox as flushing stdin would
788 break the autoboot unit tests.
789
Simon Glasse9d54d72020-09-10 20:21:16 -0600790config AUTOBOOT_PROMPT
791 string "Autoboot stop prompt"
792 depends on AUTOBOOT_KEYED
793 default "Autoboot in %d seconds\\n"
794 help
795 This string is displayed before the boot delay selected by
796 CONFIG_BOOTDELAY starts. If it is not defined there is no
797 output indicating that autoboot is in progress.
798
799 Note that this define is used as the (only) argument to a
800 printf() call, so it may contain '%' format specifications,
801 provided that it also includes, sepearated by commas exactly
802 like in a printf statement, the required arguments. It is
803 the responsibility of the user to select only such arguments
804 that are valid in the given context.
805
806config AUTOBOOT_ENCRYPTION
807 bool "Enable encryption in autoboot stopping"
808 depends on AUTOBOOT_KEYED
809 help
810 This option allows a string to be entered into U-Boot to stop the
Steffen Jaeckel6aa6bfb2021-07-08 15:57:35 +0200811 autoboot.
812 The behavior depends whether CONFIG_CRYPT_PW from lib is enabled
813 or not.
814 In case CONFIG_CRYPT_PW is enabled, the string will be forwarded
815 to the crypt-based functionality and be compared against the
816 string in the environment variable 'bootstopkeycrypt'.
817 In case CONFIG_CRYPT_PW is disabled the string itself is hashed
818 and compared against the hash in the environment variable
819 'bootstopkeysha256'.
820 If it matches in either case then boot stops and
821 a command-line prompt is presented.
Simon Glasse9d54d72020-09-10 20:21:16 -0600822 This provides a way to ship a secure production device which can also
823 be accessed at the U-Boot command line.
824
Steffen Jaeckel28be70d2021-07-08 15:57:39 +0200825config AUTOBOOT_SHA256_FALLBACK
826 bool "Allow fallback from crypt-hashed password to sha256"
827 depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
828 help
829 This option adds support to fall back from crypt-hashed
830 passwords to checking a SHA256 hashed password in case the
831 'bootstopusesha256' environment variable is set to 'true'.
832
Simon Glasse9d54d72020-09-10 20:21:16 -0600833config AUTOBOOT_DELAY_STR
834 string "Delay autobooting via specific input key / string"
835 depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
836 help
837 This option delays the automatic boot feature by issuing
838 a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
839 or the environment variable "bootdelaykey" is specified
840 and this string is received from console input before
841 autoboot starts booting, U-Boot gives a command prompt. The
842 U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
843 used, otherwise it never times out.
844
845config AUTOBOOT_STOP_STR
846 string "Stop autobooting via specific input key / string"
847 depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
848 help
849 This option enables stopping (aborting) of the automatic
850 boot feature only by issuing a specific input key or
851 string. If CONFIG_AUTOBOOT_STOP_STR or the environment
852 variable "bootstopkey" is specified and this string is
853 received from console input before autoboot starts booting,
854 U-Boot gives a command prompt. The U-Boot prompt never
855 times out, even if CONFIG_BOOT_RETRY_TIME is used.
856
857config AUTOBOOT_KEYED_CTRLC
858 bool "Enable Ctrl-C autoboot interruption"
859 depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
Simon Glasse9d54d72020-09-10 20:21:16 -0600860 help
861 This option allows for the boot sequence to be interrupted
862 by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
863 Setting this variable provides an escape sequence from the
864 limited "password" strings.
865
Steffen Jaeckel792a13f2021-07-08 15:57:37 +0200866config AUTOBOOT_NEVER_TIMEOUT
867 bool "Make the password entry never time-out"
868 depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION && CRYPT_PW
869 help
870 This option removes the timeout from the password entry
871 when the user first presses the <Enter> key before entering
872 any other character.
873
Steffen Jaeckel6aa6bfb2021-07-08 15:57:35 +0200874config AUTOBOOT_STOP_STR_ENABLE
875 bool "Enable fixed string to stop autobooting"
876 depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
877 help
878 This option enables the feature to add a fixed stop
879 string that is defined at compile time.
880 In every case it will be tried to load the stop
881 string from the environment.
882 In case this is enabled and there is no stop string
883 in the environment, this will be used as default value.
884
885config AUTOBOOT_STOP_STR_CRYPT
886 string "Stop autobooting via crypt-hashed password"
887 depends on AUTOBOOT_STOP_STR_ENABLE && CRYPT_PW
888 help
889 This option adds the feature to only stop the autobooting,
890 and therefore boot into the U-Boot prompt, when the input
891 string / password matches a values that is hashed via
892 one of the supported crypt-style password hashing options
893 and saved in the environment variable "bootstopkeycrypt".
894
Simon Glasse9d54d72020-09-10 20:21:16 -0600895config AUTOBOOT_STOP_STR_SHA256
Steffen Jaeckele1788f92021-07-08 15:57:40 +0200896 string "Stop autobooting via SHA256 hashed password"
Steffen Jaeckel6aa6bfb2021-07-08 15:57:35 +0200897 depends on AUTOBOOT_STOP_STR_ENABLE
Simon Glasse9d54d72020-09-10 20:21:16 -0600898 help
899 This option adds the feature to only stop the autobooting,
900 and therefore boot into the U-Boot prompt, when the input
901 string / password matches a values that is encypted via
Joel Peshkin8b7bf532020-11-21 17:18:59 -0800902 a SHA256 hash and saved in the environment variable
903 "bootstopkeysha256". If the value in that variable
904 includes a ":", the portion prior to the ":" will be treated
905 as a salt value.
Simon Glasse9d54d72020-09-10 20:21:16 -0600906
907config AUTOBOOT_USE_MENUKEY
908 bool "Allow a specify key to run a menu from the environment"
909 depends on !AUTOBOOT_KEYED
910 help
911 If a specific key is pressed to stop autoboot, then the commands in
912 the environment variable 'menucmd' are executed before boot starts.
913
914config AUTOBOOT_MENUKEY
915 int "ASCII value of boot key to show a menu"
916 default 0
917 depends on AUTOBOOT_USE_MENUKEY
918 help
919 If this key is pressed to stop autoboot, then the commands in the
920 environment variable 'menucmd' will be executed before boot starts.
921 For example, 33 means "!" in ASCII, so pressing ! at boot would take
922 this action.
923
924config AUTOBOOT_MENU_SHOW
925 bool "Show a menu on boot"
926 depends on CMD_BOOTMENU
927 help
928 This enables the boot menu, controlled by environment variables
929 defined by the board. The menu starts after running the 'preboot'
930 environmnent variable (if enabled) and before handling the boot delay.
931 See README.bootmenu for more details.
932
933endmenu
934
Simon Glass5e958642020-09-10 20:21:18 -0600935config USE_BOOTARGS
936 bool "Enable boot arguments"
937 help
938 Provide boot arguments to bootm command. Boot arguments are specified
939 in CONFIG_BOOTARGS option. Enable this option to be able to specify
940 CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
941 will be undefined and won't take any space in U-Boot image.
942
943config BOOTARGS
944 string "Boot arguments"
945 depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
946 help
947 This can be used to pass arguments to the bootm command. The value of
948 CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
949 this value will also override the "chosen" node in FDT blob.
950
Simon Glass529e2082020-11-05 10:33:48 -0700951config BOOTARGS_SUBST
952 bool "Support substituting strings in boot arguments"
953 help
954 This allows substituting string values in the boot arguments. These
955 are applied after the commandline has been built.
956
957 One use for this is to insert the root-disk UUID into the command
958 line where bootargs contains "root=${uuid}"
959
960 setenv bootargs "console= root=${uuid}"
961 # Set the 'uuid' environment variable
962 part uuid mmc 2:2 uuid
963
964 # Command-line substitution will put the real uuid into the
965 # kernel command line
966 bootm
967
Simon Glass5e958642020-09-10 20:21:18 -0600968config USE_BOOTCOMMAND
969 bool "Enable a default value for bootcmd"
970 help
971 Provide a default value for the bootcmd entry in the environment. If
972 autoboot is enabled this is what will be run automatically. Enable
973 this option to be able to specify CONFIG_BOOTCOMMAND as a string. If
974 this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
975 won't take any space in U-Boot image.
976
977config BOOTCOMMAND
978 string "bootcmd value"
979 depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
980 default "run distro_bootcmd" if DISTRO_DEFAULTS
981 help
982 This is the string of commands that will be used as bootcmd and if
983 AUTOBOOT is set, automatically run.
984
985config USE_PREBOOT
986 bool "Enable preboot"
987 help
988 When this option is enabled, the existence of the environment
989 variable "preboot" will be checked immediately before starting the
990 CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
991 entering interactive mode.
992
993 This feature is especially useful when "preboot" is automatically
994 generated or modified. For example, the boot code can modify the
995 "preboot" when a user holds down a certain combination of keys.
996
997config PREBOOT
998 string "preboot default value"
999 depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
Patrick Delaunaybb15d402020-10-12 09:47:50 +02001000 default "usb start" if USB_KEYBOARD
Simon Glass5e958642020-09-10 20:21:18 -06001001 default ""
1002 help
1003 This is the default of "preboot" environment variable.
1004
Simon Glassc10ddfd2020-09-10 20:21:20 -06001005config DEFAULT_FDT_FILE
1006 string "Default fdt file"
1007 help
1008 This option is used to set the default fdt file to boot OS.
1009
Simon Glassb45b1632020-09-10 20:21:13 -06001010endmenu # Booting