blob: a8af1f8f6030b7fc9788d3ec8ffff7eb28b8ec56 [file] [log] [blame]
Simon Glass83b9be62022-04-24 23:31:26 -06001.. SPDX-License-Identifier: GPL-2.0+:
2
3bootflow command
4================
5
6Synopis
7-------
8
9::
10
Simon Glass736612e2023-01-17 10:48:19 -070011 bootflow scan [-abelGH] [bootdev]
Simon Glass83b9be62022-04-24 23:31:26 -060012 bootflow list [-e]
13 bootflow select [<num|name>]
14 bootflow info [-d]
15 bootflow boot
Simon Glasscd91e992023-07-12 09:04:42 -060016 bootflow cmdline [set|get|clear|delete|auto] <param> [<value>]
Simon Glass83b9be62022-04-24 23:31:26 -060017
18Description
19-----------
20
21The `bootflow` command is used to manage bootflows. It can scan bootdevs to
22locate bootflows, list them and boot them.
23
24See :doc:`../../develop/bootstd` for more information.
25
26
27bootflow scan
28~~~~~~~~~~~~~
29
30Scans for available bootflows, optionally booting the first valid one it finds.
31This operates in two modes:
32
33- If no bootdev is selected (see `bootdev select`) it scans bootflows one
34 by one, extracting all the bootdevs from each
35- If a bootdev is selected, it just scans that one bootflow
36
37Flags are:
38
39-a
40 Collect all bootflows, even those that cannot be loaded. Normally if a file
41 is not where it is expected, then the bootflow fails and so is dropped
42 during the scan. With this option you can see why each bootflow would be
43 dropped.
44
45-b
46 Boot each valid bootflow as it is scanned. Typically only the first bootflow
47 matters, since by then the system boots in the OS and U-Boot is no-longer
48 running. `bootflow scan -b` is a quick way to boot the first available OS.
49 A valid bootflow is one that made it all the way to the `loaded` state.
50
51-e
52 Used with -l to also show errors for each bootflow. The shows detailed error
53 information for each bootflow that failed to make it to the `loaded` state.
54
55-l
56 List bootflows while scanning. This is helpful when you want to see what
57 is happening during scanning. Use it with the `-b` flag to see which
58 bootdev and bootflows are being tried.
59
Simon Glass736612e2023-01-17 10:48:19 -070060-G
61 Skip global bootmeths when scanning. By default these are tried first, but
62 this flag disables them.
63
64-H
65 Don't use bootdev hunters. By default these are used before each boot
66 priority or label is tried, to see if more bootdevs can be discovered, but
67 this flag disables that process.
68
69
Simon Glass83b9be62022-04-24 23:31:26 -060070The optional argument specifies a particular bootdev to scan. This can either be
71the name of a bootdev or its sequence number (both shown with `bootdev list`).
72Alternatively a convenience label can be used, like `mmc0`, which is the type of
73device and an optional sequence number. Specifically, the label is the uclass of
74the bootdev's parent followed by the sequence number of that parent. Sequence
75numbers are typically set by aliases, so if you have 'mmc0' in your devicetree
76alias section, then `mmc0` refers to the bootdev attached to that device.
77
78
79bootflow list
80~~~~~~~~~~~~~
81
82Lists the previously scanned bootflows. You must use `bootflow scan` before this
83to see anything.
84
85If you scanned with -a and have bootflows with errors, -e can be used to show
86those errors.
87
88The list looks something like this:
89
90=== ====== ====== ======== ==== =============================== ================
91Seq Method State Uclass Part Name Filename
92=== ====== ====== ======== ==== =============================== ================
93 0 distro ready mmc 2 mmc\@7e202000.bootdev.part_2 /boot/extlinux/extlinux.conf
94 1 pxe ready ethernet 0 smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
95=== ====== ====== ======== ==== =============================== ================
96
97The fields are as follows:
98
99Seq:
100 Sequence number in the scan, used to reference the bootflow later
101
102Method:
103 The boot method (bootmeth) used to find the bootflow. Several methods are
104 included in U-Boot.
105
106State:
107 Current state of the bootflow, indicating how far the bootdev got in
108 obtaining a valid one. See :ref:`BootflowStates` for a list of states.
109
110Uclass:
111 Name of the media device's Uclass. This indicates the type of the parent
112 device (e.g. MMC, Ethernet).
113
114Part:
115 Partition number being accesseed, numbered from 1. Normally a device will
116 have a partition table with a small number of partitions. For devices
117 without partition tables (e.g. network) this field is 0.
118
119Name:
120 Name of the bootflow. This is generated from the bootdev appended with
121 the partition information
122
123Filename:
124 Name of the bootflow file. This indicates where the file is on the
125 filesystem or network device.
126
127
128bootflow select
129~~~~~~~~~~~~~~~
130
131Use this to select a particular bootflow. You can select it by the sequence
132number or name, as shown in `bootflow list`.
133
134Once a bootflow is selected, you can use `bootflow info` and `bootflow boot`.
135
136If no bootflow name or number is provided, then any existing bootflow is
137unselected.
138
139
140bootflow info
141~~~~~~~~~~~~~
142
143This shows information on the current bootflow, with the format looking like
144this:
145
146========= ===============================
147Name mmc\@7e202000.bootdev.part_2
148Device mmc\@7e202000.bootdev
149Block dev mmc\@7e202000.blk
150Type distro
Simon Glassb71d7f72023-05-10 16:34:46 -0600151Method: extlinux
Simon Glass83b9be62022-04-24 23:31:26 -0600152State ready
153Partition 2
154Subdir (none)
155Filename /extlinux/extlinux.conf
156Buffer 3db7ad48
157Size 232 (562 bytes)
Simon Glass736612e2023-01-17 10:48:19 -0700158FDT: <NULL>
Simon Glass83b9be62022-04-24 23:31:26 -0600159Error 0
160========= ===============================
161
162Most of the information is the same as `bootflow list` above. The new fields
163are:
164
165Device
166 Name of the bootdev
167
168Block dev
169 Name of the block device, if any. Network devices don't have a block device.
170
171Subdir
172 Subdirectory used for retrieving files. For network bootdevs this is the
173 directory of the 'bootfile' parameter passed from DHCP. All file retrievals
174 when booting are relative to this.
175
176Buffer
177 Buffer containing the bootflow file. You can use the :doc:`md` to look at
178 it, or dump it with `bootflow info -d`.
179
180Size
181 Size of the bootflow file
182
Simon Glass736612e2023-01-17 10:48:19 -0700183FDT:
184 Filename of the device tree, if supported. The EFI bootmeth uses this to
185 remember the filename to load. If `<NULL>` then there is none.
186
Simon Glass83b9be62022-04-24 23:31:26 -0600187Error
188 Error number returned from scanning for the bootflow. This is 0 if the
189 bootflow is in the 'loaded' state, or a negative error value on error. You
190 can look up Linux error codes to find the meaning of the number.
191
192Use the `-d` flag to dump out the contents of the bootfile file.
193
194
195bootflow boot
196~~~~~~~~~~~~~
197
198This boots the current bootflow.
199
Simon Glass55a2da32023-07-12 09:04:39 -0600200
201bootflow cmdline
202~~~~~~~~~~~~~~~~
203
204Some bootmeths can obtain the OS command line since it is stored with the OS.
205In that case, you can use `bootflow cmdline` to adjust this. The command line
206is assumed to be in the format used by Linux, i.e. a space-separated set of
207parameters with optional values, e.g. "noinitrd console=/dev/tty0".
208
209To change or add a parameter, use::
210
211 bootflow cmdline set <param> <value>
212
213To clear a parameter value to empty you can use "" for the value, or use::
214
215 bootflow cmdline clear <param>
216
217To delete a parameter entirely, use::
218
219 bootflow cmdline delete <param>
Simon Glass83b9be62022-04-24 23:31:26 -0600220
Simon Glasscd91e992023-07-12 09:04:42 -0600221Automatic parameters are available in a very few cases. You can use these to
222add parmeters where the value is known by U-Boot. For example::
223
224 bootflow cmdline auto earlycon
225 bootflow cmdline auto console
226
227can be used to set the early console (or console) to a suitable value so that
228output appears on the serial port. This is only supported by the 16550 serial
229driver so far.
230
Simon Glass83b9be62022-04-24 23:31:26 -0600231Example
232-------
233
234Here is an example of scanning for bootflows, then listing them::
235
236 U-Boot> bootflow scan -l
237 Scanning for bootflows in all bootdevs
238 Seq Type State Uclass Part Name Filename
239 --- ----------- ------ -------- ---- ------------------------ ----------------
240 Scanning bootdev 'mmc@7e202000.bootdev':
241 0 distro ready mmc 2 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
242 Scanning bootdev 'sdhci@7e300000.bootdev':
243 Card did not respond to voltage select! : -110
244 Scanning bootdev 'smsc95xx_eth.bootdev':
245 Waiting for Ethernet connection... done.
246 BOOTP broadcast 1
247 DHCP client bound to address 192.168.4.30 (4 ms)
248 Using smsc95xx_eth device
249 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
250 Filename 'rpi.pxe/'.
251 Load address: 0x200000
252 Loading: *
253 TFTP error: 'Is a directory' (0)
254 Starting again
255
256 missing environment variable: pxeuuid
257 Retrieving file: rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1
258 Waiting for Ethernet connection... done.
259 Using smsc95xx_eth device
260 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
261 Filename 'rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1'.
262 Load address: 0x2500000
263 Loading: ################################################## 566 Bytes
264 45.9 KiB/s
265 done
266 Bytes transferred = 566 (236 hex)
267 1 distro ready ethernet 0 smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
268 No more bootdevs
269 --- ----------- ------ -------- ---- ------------------------ ----------------
270 (2 bootflows, 2 valid)
271 U-Boot> bootflow l
272 Showing all bootflows
273 Seq Type State Uclass Part Name Filename
274 --- ----------- ------ -------- ---- ------------------------ ----------------
275 0 distro ready mmc 2 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
276 1 pxe ready ethernet 0 smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
277 --- ----------- ------ -------- ---- ------------------------ ----------------
278 (2 bootflows, 2 valid)
279
280
281The second one is then selected by name (we could instead use `bootflow sel 0`),
282displayed and booted::
283
284 U-Boot> bootflow info
285 No bootflow selected
286 U-Boot> bootflow sel mmc@7e202000.bootdev.part_2
287 U-Boot> bootflow info
288 Name: mmc@7e202000.bootdev.part_2
289 Device: mmc@7e202000.bootdev
290 Block dev: mmc@7e202000.blk
Simon Glass83b9be62022-04-24 23:31:26 -0600291 Method: distro
292 State: ready
293 Partition: 2
294 Subdir: (none)
295 Filename: extlinux/extlinux.conf
296 Buffer: 3db7ae88
297 Size: 232 (562 bytes)
Simon Glass33927522023-07-12 09:04:34 -0600298 OS: Fedora-Workstation-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
299 Cmdline: (none)
300 Logo: (none)
301 FDT: <NULL>
Simon Glass83b9be62022-04-24 23:31:26 -0600302 Error: 0
303 U-Boot> bootflow boot
304 ** Booting bootflow 'smsc95xx_eth.bootdev.0'
305 Ignoring unknown command: ui
306 Ignoring malformed menu command: autoboot
307 Ignoring malformed menu command: hidden
308 Ignoring unknown command: totaltimeout
309 1: Fedora-Workstation-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
310 Retrieving file: rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img
311 get 2700000 rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img
312 Waiting for Ethernet connection... done.
313 Using smsc95xx_eth device
314 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
315 Filename 'rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img'.
316 Load address: 0x2700000
317 Loading: ###################################T ############### 57.7 MiB
318 1.9 MiB/s
319 done
320 Bytes transferred = 60498594 (39b22a2 hex)
321 Retrieving file: rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl
322 get 80000 rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl
323 Waiting for Ethernet connection... done.
324 Using smsc95xx_eth device
325 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
326 Filename 'rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl'.
327 Load address: 0x80000
328 Loading: ################################################## 7.2 MiB
329 2.3 MiB/s
330 done
331 Bytes transferred = 7508480 (729200 hex)
332 append: ro root=UUID=9732b35b-4cd5-458b-9b91-80f7047e0b8a rhgb quiet LANG=en_US.UTF-8 cma=192MB cma=256MB
333 Retrieving file: rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
334 get 2600000 rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
335 Waiting for Ethernet connection... done.
336 Using smsc95xx_eth device
337 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
338 Filename 'rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb'.
339 Load address: 0x2600000
340 Loading: ################################################## 13.8 KiB
341 764.6 KiB/s
342 done
343 Bytes transferred = 14102 (3716 hex)
344 Kernel image @ 0x080000 [ 0x000000 - 0x729200 ]
345 ## Flattened Device Tree blob at 02600000
346 Booting using the fdt blob at 0x2600000
347 Using Device Tree in place at 02600000, end 02606715
348
349 Starting kernel ...
350
351 [ OK ] Started Show Plymouth Boot Screen.
352 [ OK ] Started Forward Password R…s to Plymouth Directory Watch.
353 [ OK ] Reached target Local Encrypted Volumes.
354 [ OK ] Reached target Paths.
355 ....
356
357
358Here we scan for bootflows and boot the first one found::
359
360 U-Boot> bootflow scan -bl
361 Scanning for bootflows in all bootdevs
362 Seq Method State Uclass Part Name Filename
363 --- ----------- ------ -------- ---- ---------------------- ----------------
364 Scanning bootdev 'mmc@7e202000.bootdev':
365 0 distro ready mmc 2 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
366 ** Booting bootflow 'mmc@7e202000.bootdev.part_2'
367 Ignoring unknown command: ui
368 Ignoring malformed menu command: autoboot
369 Ignoring malformed menu command: hidden
370 Ignoring unknown command: totaltimeout
371 1: Fedora-KDE-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
372 Retrieving file: /initramfs-5.3.7-301.fc31.armv7hl.img
373 getfile 2700000 /initramfs-5.3.7-301.fc31.armv7hl.img
374 Retrieving file: /vmlinuz-5.3.7-301.fc31.armv7hl
375 getfile 80000 /vmlinuz-5.3.7-301.fc31.armv7hl
376 append: ro root=UUID=b8781f09-e2dd-4cb8-979b-7df5eeaaabea rhgb LANG=en_US.UTF-8 cma=192MB console=tty0 console=ttyS1,115200
377 Retrieving file: /dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
378 getfile 2600000 /dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
379 Kernel image @ 0x080000 [ 0x000000 - 0x729200 ]
380 ## Flattened Device Tree blob at 02600000
381 Booting using the fdt blob at 0x2600000
382 Using Device Tree in place at 02600000, end 02606715
383
384 Starting kernel ...
385
386 [ 0.000000] Booting Linux on physical CPU 0x0
387
388
389Here is am example using the -e flag to see all errors::
390
391 U-Boot> bootflow scan -a
392 Card did not respond to voltage select! : -110
393 Waiting for Ethernet connection... done.
394 BOOTP broadcast 1
395 DHCP client bound to address 192.168.4.30 (4 ms)
396 Using smsc95xx_eth device
397 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
398 Filename 'rpi.pxe/'.
399 Load address: 0x200000
400 Loading: *
401 TFTP error: 'Is a directory' (0)
402 Starting again
403
404 missing environment variable: pxeuuid
405 Retrieving file: rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1
406 Waiting for Ethernet connection... done.
407 Using smsc95xx_eth device
408 TFTP from server 192.168.4.1; our IP address is 192.168.4.30
409 Filename 'rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1'.
410 Load address: 0x2500000
411 Loading: ################################################## 566 Bytes
412 49.8 KiB/s
413 done
414 Bytes transferred = 566 (236 hex)
415 U-Boot> bootflow l -e
416 Showing all bootflows
417 Seq Type State Uclass Part Name Filename
418 --- ----------- ------ -------- ---- --------------------- ----------------
419 0 distro fs mmc 1 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
420 ** File not found, err=-2
421 1 distro ready mmc 2 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
422 2 distro fs mmc 3 mmc@7e202000.bootdev.p /extlinux/extlinux.conf
423 ** File not found, err=-1
424 3 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
425 ** No partition found, err=-2
426 4 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
427 ** No partition found, err=-2
428 5 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
429 ** No partition found, err=-2
430 6 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
431 ** No partition found, err=-2
432 7 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
433 ** No partition found, err=-2
434 8 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
435 ** No partition found, err=-2
436 9 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
437 ** No partition found, err=-2
438 a distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
439 ** No partition found, err=-2
440 b distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
441 ** No partition found, err=-2
442 c distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
443 ** No partition found, err=-2
444 d distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
445 ** No partition found, err=-2
446 e distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
447 ** No partition found, err=-2
448 f distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
449 ** No partition found, err=-2
450 10 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
451 ** No partition found, err=-2
452 11 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
453 ** No partition found, err=-2
454 12 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
455 ** No partition found, err=-2
456 13 distro media mmc 0 mmc@7e202000.bootdev.p <NULL>
457 ** No partition found, err=-2
458 14 distro ready ethernet 0 smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
459 --- ----------- ------ -------- ---- --------------------- ----------------
460 (21 bootflows, 2 valid)
461 U-Boot>
462
Simon Glasscd91e992023-07-12 09:04:42 -0600463Here is an example of booting ChromeOS, adjusting the console beforehand. Note that
464the cmdline is word-wrapped here and some parts of the command line are elided::
465
466 => bootfl list
467 Showing all bootflows
468 Seq Method State Uclass Part Name Filename
469 --- ----------- ------ -------- ---- ------------------------ ----------------
470 0 cros ready nvme 0 5.10.153-20434-g98da1eb2c <NULL>
471 1 efi ready nvme c nvme#0.blk#1.bootdev.part efi/boot/bootia32.efi
472 2 efi ready usb_mass_ 2 usb_mass_storage.lun0.boo efi/boot/bootia32.efi
473 --- ----------- ------ -------- ---- ------------------------ ----------------
474 (3 bootflows, 3 valid)
475 => bootfl sel 0
476 => bootfl inf
477 Name: 5.10.153-20434-g98da1eb2cf9d (chrome-bot@chromeos-release-builder-us-central1-b-x32-12-xijx) #1 SMP PREEMPT Tue Jan 24 19:38:23 PST 2023
478 Device: nvme#0.blk#1.bootdev
479 Block dev: nvme#0.blk#1
480 Method: cros
481 State: ready
482 Partition: 0
483 Subdir: (none)
484 Filename: <NULL>
485 Buffer: 737a1400
486 Size: c47000 (12873728 bytes)
487 OS: ChromeOS
488 Cmdline: console= loglevel=7 init=/sbin/init cros_secure drm.trace=0x106
489 root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3
490 dm_verity.max_bios=-1 dm_verity.dev_wait=1
491 dm="1 vroot none ro 1,0 6348800
492 verity payload=PARTUUID=799c935b-ae62-d143-8493-816fa936eef7/PARTNROFF=1
493 hashtree=PARTUUID=799c935b-ae62-d143-8493-816fa936eef7/PARTNROFF=1
494 hashstart=6348800 alg=sha256
495 root_hexdigest=78cc462cd45aecbcd49ca476587b4dee59aa1b00ba5ece58e2c29ec9acd914ab
496 salt=8dec4dc80a75dd834a9b3175c674405e15b16a253fdfe05c79394ae5fd76f66a"
497 noinitrd vt.global_cursor_default=0
498 kern_guid=799c935b-ae62-d143-8493-816fa936eef7 add_efi_memmap boot=local
499 noresume noswap i915.modeset=1 ramoops.ecc=1 tpm_tis.force=0
500 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=3 i915.enable_dc=4
501 xdomain=0 swiotlb=65536 intel_iommu=on i915.enable_psr=1
502 usb-storage.quirks=13fe:6500:u
503 X86 setup: 742e3400
504 Logo: (none)
505 FDT: <NULL>
506 Error: 0
507 => bootflow cmdline auto earlycon
508 => bootflow cmd auto console
509 => print bootargs
510 bootargs=console=ttyS0,115200n8 loglevel=7 ...
511 usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
512 => bootflow cmd del console
513 => print bootargs
514 bootargs=loglevel=7 ... earlycon=uart8250,mmio32,0xfe03e000,115200n8
515 => bootfl boot
516 ** Booting bootflow '5.10.153-20434-g98da1eb2cf9d (chrome-bot@chromeos-release-builder-us-central1-b-x32-12-xijx) #1 SMP PREEMPT Tue Jan 24 19:38:23 PST 2023' with cros
517 Kernel command line: "loglevel=7 ... earlycon=uart8250,mmio32,0xfe03e000,115200n8"
518
519 Starting kernel ...
520
521 [ 0.000000] Linux version 5.10.153-20434-g98da1eb2cf9d (chrome-bot@chromeos-release-builder-us-central1-b-x32-12-xijx) (Chromium OS 15.0_pre465103_p20220825-r4 clang version 15.0.0 (/var/tmp/portage/sys-devel/llvm-15.0_pre465103_p20220825-r4/work/llvm-15.0_pre465103_p20220825/clang db1978b67431ca3462ad8935bf662c15750b8252), LLD 15.0.0) #1 SMP PREEMPT Tue Jan 24 19:38:23 PST 2023
522 [ 0.000000] Command line: loglevel=7 ... usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
523 [ 0.000000] x86/split lock detection: warning about user-space split_locks
524
525
Simon Glass83b9be62022-04-24 23:31:26 -0600526
527Return value
528------------
529
530On success `bootflow boot` normally boots into the Operating System and does not
531return to U-Boot. If something about the U-Boot processing fails, then the
532return value $? is 1. If the boot succeeds but for some reason the Operating
533System returns, then $? is 0, indicating success.
534
535For other subcommands, the return value $? is always 0 (true).
536
537
538.. BootflowStates_: