.. SPDX-License-Identifier: GPL-2.0+:

bootflow command
================

Synopis
-------

::

    bootflow scan [-abelGH] [bootdev]
    bootflow list [-e]
    bootflow select [<num|name>]
    bootflow info [-ds]
    bootflow read
    bootflow boot
    bootflow cmdline [set|get|clear|delete|auto] <param> [<value>]

Description
-----------

The `bootflow` command is used to manage bootflows. It can scan bootdevs to
locate bootflows, list them and boot them.

See :doc:`../../develop/bootstd` for more information.


bootflow scan
~~~~~~~~~~~~~

Scans for available bootflows, optionally booting the first valid one it finds.
This operates in two modes:

- If no bootdev is selected (see `bootdev select`) it scans bootflows one
  by one, extracting all the bootdevs from each
- If a bootdev is selected, it just scans that one bootflow

Flags are:

-a
    Collect all bootflows, even those that cannot be loaded. Normally if a file
    is not where it is expected, then the bootflow fails and so is dropped
    during the scan. With this option you can see why each bootflow would be
    dropped.

-b
    Boot each valid bootflow as it is scanned. Typically only the first bootflow
    matters, since by then the system boots in the OS and U-Boot is no-longer
    running. `bootflow scan -b` is a quick way to boot the first available OS.
    A valid bootflow is one that made it all the way to the `loaded` state.

-e
    Used with -l to also show errors for each bootflow. The shows detailed error
    information for each bootflow that failed to make it to the `loaded` state.

-l
    List bootflows while scanning. This is helpful when you want to see what
    is happening during scanning. Use it with the `-b` flag to see which
    bootdev and bootflows are being tried.

-G
    Skip global bootmeths when scanning. By default these are tried first, but
    this flag disables them.

-H
    Don't use bootdev hunters. By default these are used before each boot
    priority or label is tried, to see if more bootdevs can be discovered, but
    this flag disables that process.


The optional argument specifies a particular bootdev to scan. This can either be
the name of a bootdev or its sequence number (both shown with `bootdev list`).
Alternatively a convenience label can be used, like `mmc0`, which is the type of
device and an optional sequence number. Specifically, the label is the uclass of
the bootdev's parent followed by the sequence number of that parent. Sequence
numbers are typically set by aliases, so if you have 'mmc0' in your devicetree
alias section, then `mmc0` refers to the bootdev attached to that device.


bootflow list
~~~~~~~~~~~~~

Lists the previously scanned bootflows. You must use `bootflow scan` before this
to see anything.

If you scanned with -a and have bootflows with errors, -e can be used to show
those errors.

The list looks something like this:

===  ======  ======  ========  ====  ===============================   ================
Seq  Method  State   Uclass    Part  Name                              Filename
===  ======  ======  ========  ====  ===============================   ================
  0  distro  ready   mmc          2  mmc\@7e202000.bootdev.part_2      /boot/extlinux/extlinux.conf
  1  pxe     ready   ethernet     0  smsc95xx_eth.bootdev.0            rpi.pxe/extlinux/extlinux.conf
===  ======  ======  ========  ====  ===============================   ================

The fields are as follows:

Seq:
    Sequence number in the scan, used to reference the bootflow later

Method:
    The boot method (bootmeth) used to find the bootflow. Several methods are
    included in U-Boot.

State:
    Current state of the bootflow, indicating how far the bootdev got in
    obtaining a valid one. See :ref:`BootflowStates` for a list of states.

Uclass:
    Name of the media device's Uclass. This indicates the type of the parent
    device (e.g. MMC, Ethernet).

Part:
    Partition number being accesseed, numbered from 1. Normally a device will
    have a partition table with a small number of partitions. For devices
    without partition tables (e.g. network) this field is 0.

Name:
    Name of the bootflow. This is generated from the bootdev appended with
    the partition information

Filename:
    Name of the bootflow file. This indicates where the file is on the
    filesystem or network device.


bootflow select
~~~~~~~~~~~~~~~

Use this to select a particular bootflow. You can select it by the sequence
number or name, as shown in `bootflow list`.

Once a bootflow is selected, you can use `bootflow info` and `bootflow boot`.

If no bootflow name or number is provided, then any existing bootflow is
unselected.


bootflow info
~~~~~~~~~~~~~

This shows information on the current bootflow, with the format looking like
this:

=========  ===============================
Name       mmc\@7e202000.bootdev.part_2
Device     mmc\@7e202000.bootdev
Block dev  mmc\@7e202000.blk
Type       distro
Method:    extlinux
State      ready
Partition  2
Subdir     (none)
Filename   /extlinux/extlinux.conf
Buffer     3db7ad48
Size       232 (562 bytes)
FDT:       <NULL>
Error      0
=========  ===============================

Most of the information is the same as `bootflow list` above. The new fields
are:

Device
    Name of the bootdev

Block dev
    Name of the block device, if any. Network devices don't have a block device.

Subdir
    Subdirectory used for retrieving files. For network bootdevs this is the
    directory of the 'bootfile' parameter passed from DHCP. All file retrievals
    when booting are relative to this.

Buffer
    Buffer containing the bootflow file. You can use the :doc:`md` to look at
    it, or dump it with `bootflow info -d`.

Size
    Size of the bootflow file

FDT:
    Filename of the device tree, if supported. The EFI bootmeth uses this to
    remember the filename to load. If `<NULL>` then there is none.

Error
    Error number returned from scanning for the bootflow. This is 0 if the
    bootflow is in the 'loaded' state, or a negative error value on error. You
    can look up Linux error codes to find the meaning of the number.

Use the `-d` flag to dump out the contents of the bootfile file.

The `-s` flag shows any x86 setup block, instead of the above.


bootflow read
~~~~~~~~~~~~~

This reads any files related to the bootflow. Some bootflows with large files
avoid doing this when the bootflow is scanned, since it uses a lot of memory
and takes extra time. The files are then automatically read when `bootflow boot`
is used.

This command reads these files immediately. Typically this fills in the bootflow
`buf` property, which can be used to examine the bootflow.

Note that reading the files does not result in any extra parsing, nor loading of
images in the files. This is purely used to read in the data ready for
booting, or examination.


bootflow boot
~~~~~~~~~~~~~

This boots the current bootflow, reading any required files first.


bootflow cmdline
~~~~~~~~~~~~~~~~

Some bootmeths can obtain the OS command line since it is stored with the OS.
In that case, you can use `bootflow cmdline` to adjust this. The command line
is assumed to be in the format used by Linux, i.e. a space-separated set of
parameters with optional values, e.g. "noinitrd console=/dev/tty0".

To change or add a parameter, use::

    bootflow cmdline set <param> <value>

To clear a parameter value to empty you can use "" for the value, or use::

    bootflow cmdline clear <param>

To delete a parameter entirely, use::

    bootflow cmdline delete <param>

Automatic parameters are available in a very few cases. You can use these to
add parmeters where the value is known by U-Boot. For example::

    bootflow cmdline auto earlycon
    bootflow cmdline auto console

can be used to set the early console (or console) to a suitable value so that
output appears on the serial port. This is only supported by the 16550 serial
driver so far.

Example
-------

Here is an example of scanning for bootflows, then listing them::

    U-Boot> bootflow scan -l
    Scanning for bootflows in all bootdevs
    Seq  Type         State   Uclass    Part  Name                      Filename
    ---  -----------  ------  --------  ----  ------------------------  ----------------
    Scanning bootdev 'mmc@7e202000.bootdev':
      0  distro       ready   mmc          2  mmc@7e202000.bootdev.p    /extlinux/extlinux.conf
    Scanning bootdev 'sdhci@7e300000.bootdev':
    Card did not respond to voltage select! : -110
    Scanning bootdev 'smsc95xx_eth.bootdev':
    Waiting for Ethernet connection... done.
    BOOTP broadcast 1
    DHCP client bound to address 192.168.4.30 (4 ms)
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe/'.
    Load address: 0x200000
    Loading: *
    TFTP error: 'Is a directory' (0)
    Starting again

    missing environment variable: pxeuuid
    Retrieving file: rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1
    Waiting for Ethernet connection... done.
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1'.
    Load address: 0x2500000
    Loading: ##################################################  566 Bytes
    	 45.9 KiB/s
    done
    Bytes transferred = 566 (236 hex)
      1  distro       ready   ethernet     0  smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
    No more bootdevs
    ---  -----------  ------  --------  ----  ------------------------  ----------------
    (2 bootflows, 2 valid)
    U-Boot> bootflow l
    Showing all bootflows
    Seq  Type         State   Uclass    Part  Name                      Filename
    ---  -----------  ------  --------  ----  ------------------------  ----------------
      0  distro       ready   mmc          2  mmc@7e202000.bootdev.p    /extlinux/extlinux.conf
      1  pxe          ready   ethernet     0  smsc95xx_eth.bootdev.0     rpi.pxe/extlinux/extlinux.conf
    ---  -----------  ------  --------  ----  ------------------------  ----------------
    (2 bootflows, 2 valid)


The second one is then selected by name (we could instead use `bootflow sel 0`),
displayed and booted::

    U-Boot> bootflow info
    No bootflow selected
    U-Boot> bootflow sel mmc@7e202000.bootdev.part_2
    U-Boot> bootflow info
    Name:      mmc@7e202000.bootdev.part_2
    Device:    mmc@7e202000.bootdev
    Block dev: mmc@7e202000.blk
    Method:    distro
    State:     ready
    Partition: 2
    Subdir:    (none)
    Filename:  extlinux/extlinux.conf
    Buffer:    3db7ae88
    Size:      232 (562 bytes)
    OS:        Fedora-Workstation-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
    Cmdline:   (none)
    Logo:      (none)
    FDT:       <NULL>
    Error:     0
    U-Boot> bootflow boot
    ** Booting bootflow 'smsc95xx_eth.bootdev.0'
    Ignoring unknown command: ui
    Ignoring malformed menu command:  autoboot
    Ignoring malformed menu command:  hidden
    Ignoring unknown command: totaltimeout
    1:	Fedora-Workstation-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
    Retrieving file: rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img
    get 2700000 rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img
    Waiting for Ethernet connection... done.
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe/initramfs-5.3.7-301.fc31.armv7hl.img'.
    Load address: 0x2700000
    Loading: ###################################T ###############  57.7 MiB
    	 1.9 MiB/s
    done
    Bytes transferred = 60498594 (39b22a2 hex)
    Retrieving file: rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl
    get 80000 rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl
    Waiting for Ethernet connection... done.
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe//vmlinuz-5.3.7-301.fc31.armv7hl'.
    Load address: 0x80000
    Loading: ##################################################  7.2 MiB
    	 2.3 MiB/s
    done
    Bytes transferred = 7508480 (729200 hex)
    append: ro root=UUID=9732b35b-4cd5-458b-9b91-80f7047e0b8a rhgb quiet LANG=en_US.UTF-8 cma=192MB cma=256MB
    Retrieving file: rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
    get 2600000 rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
    Waiting for Ethernet connection... done.
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe//dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb'.
    Load address: 0x2600000
    Loading: ##################################################  13.8 KiB
    	 764.6 KiB/s
    done
    Bytes transferred = 14102 (3716 hex)
    Kernel image @ 0x080000 [ 0x000000 - 0x729200 ]
    ## Flattened Device Tree blob at 02600000
       Booting using the fdt blob at 0x2600000
       Using Device Tree in place at 02600000, end 02606715

    Starting kernel ...

    [  OK  ] Started Show Plymouth Boot Screen.
    [  OK  ] Started Forward Password R…s to Plymouth Directory Watch.
    [  OK  ] Reached target Local Encrypted Volumes.
    [  OK  ] Reached target Paths.
    ....


Here we scan for bootflows and boot the first one found::

    U-Boot> bootflow scan -bl
    Scanning for bootflows in all bootdevs
    Seq  Method       State   Uclass    Part  Name                    Filename
    ---  -----------  ------  --------  ----  ----------------------  ----------------
    Scanning bootdev 'mmc@7e202000.bootdev':
      0  distro       ready   mmc          2  mmc@7e202000.bootdev.p  /extlinux/extlinux.conf
    ** Booting bootflow 'mmc@7e202000.bootdev.part_2'
    Ignoring unknown command: ui
    Ignoring malformed menu command:  autoboot
    Ignoring malformed menu command:  hidden
    Ignoring unknown command: totaltimeout
    1:	Fedora-KDE-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)
    Retrieving file: /initramfs-5.3.7-301.fc31.armv7hl.img
    getfile 2700000 /initramfs-5.3.7-301.fc31.armv7hl.img
    Retrieving file: /vmlinuz-5.3.7-301.fc31.armv7hl
    getfile 80000 /vmlinuz-5.3.7-301.fc31.armv7hl
    append: ro root=UUID=b8781f09-e2dd-4cb8-979b-7df5eeaaabea rhgb LANG=en_US.UTF-8 cma=192MB console=tty0 console=ttyS1,115200
    Retrieving file: /dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
    getfile 2600000 /dtb-5.3.7-301.fc31.armv7hl/bcm2837-rpi-3-b.dtb
    Kernel image @ 0x080000 [ 0x000000 - 0x729200 ]
    ## Flattened Device Tree blob at 02600000
       Booting using the fdt blob at 0x2600000
       Using Device Tree in place at 02600000, end 02606715

    Starting kernel ...

    [    0.000000] Booting Linux on physical CPU 0x0


Here is am example using the -e flag to see all errors::

    U-Boot> bootflow scan -a
    Card did not respond to voltage select! : -110
    Waiting for Ethernet connection... done.
    BOOTP broadcast 1
    DHCP client bound to address 192.168.4.30 (4 ms)
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe/'.
    Load address: 0x200000
    Loading: *
    TFTP error: 'Is a directory' (0)
    Starting again

    missing environment variable: pxeuuid
    Retrieving file: rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1
    Waiting for Ethernet connection... done.
    Using smsc95xx_eth device
    TFTP from server 192.168.4.1; our IP address is 192.168.4.30
    Filename 'rpi.pxe/pxelinux.cfg/01-b8-27-eb-a6-61-e1'.
    Load address: 0x2500000
    Loading: ##################################################  566 Bytes
    	 49.8 KiB/s
    done
    Bytes transferred = 566 (236 hex)
    U-Boot> bootflow l -e
    Showing all bootflows
    Seq  Type         State   Uclass    Part  Name                   Filename
    ---  -----------  ------  --------  ----  ---------------------  ----------------
      0  distro       fs      mmc          1  mmc@7e202000.bootdev.p /extlinux/extlinux.conf
         ** File not found, err=-2
      1  distro       ready   mmc          2  mmc@7e202000.bootdev.p /extlinux/extlinux.conf
      2  distro       fs      mmc          3  mmc@7e202000.bootdev.p /extlinux/extlinux.conf
         ** File not found, err=-1
      3  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      4  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      5  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      6  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      7  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      8  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      9  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      a  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      b  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      c  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      d  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      e  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
      f  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
     10  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
     11  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
     12  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
     13  distro       media   mmc          0  mmc@7e202000.bootdev.p <NULL>
         ** No partition found, err=-2
     14  distro       ready   ethernet     0  smsc95xx_eth.bootdev.0 rpi.pxe/extlinux/extlinux.conf
    ---  -----------  ------  --------  ----  ---------------------  ----------------
    (21 bootflows, 2 valid)
    U-Boot>

Here is an example of booting ChromeOS, adjusting the console beforehand. Note that
the cmdline is word-wrapped here and some parts of the command line are elided::

    => bootfl list
    Showing all bootflows
    Seq  Method       State   Uclass    Part  Name                      Filename
    ---  -----------  ------  --------  ----  ------------------------  ----------------
    0  cros         ready   nvme         0  5.10.153-20434-g98da1eb2c <NULL>
    1  efi          ready   nvme         c  nvme#0.blk#1.bootdev.part efi/boot/bootia32.efi
    2  efi          ready   usb_mass_    2  usb_mass_storage.lun0.boo efi/boot/bootia32.efi
    ---  -----------  ------  --------  ----  ------------------------  ----------------
    (3 bootflows, 3 valid)
    => bootfl sel 0
    => bootfl inf
    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
    Device:    nvme#0.blk#1.bootdev
    Block dev: nvme#0.blk#1
    Method:    cros
    State:     ready
    Partition: 0
    Subdir:    (none)
    Filename:  <NULL>
    Buffer:    737a1400
    Size:      c47000 (12873728 bytes)
    OS:        ChromeOS
    Cmdline:   console= loglevel=7 init=/sbin/init cros_secure drm.trace=0x106
        root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3
        dm_verity.max_bios=-1 dm_verity.dev_wait=1
        dm="1 vroot none ro 1,0 6348800
          verity payload=PARTUUID=799c935b-ae62-d143-8493-816fa936eef7/PARTNROFF=1
          hashtree=PARTUUID=799c935b-ae62-d143-8493-816fa936eef7/PARTNROFF=1
          hashstart=6348800 alg=sha256
          root_hexdigest=78cc462cd45aecbcd49ca476587b4dee59aa1b00ba5ece58e2c29ec9acd914ab
          salt=8dec4dc80a75dd834a9b3175c674405e15b16a253fdfe05c79394ae5fd76f66a"
        noinitrd vt.global_cursor_default=0
        kern_guid=799c935b-ae62-d143-8493-816fa936eef7 add_efi_memmap boot=local
        noresume noswap i915.modeset=1 ramoops.ecc=1 tpm_tis.force=0
        intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=3 i915.enable_dc=4
        xdomain=0 swiotlb=65536 intel_iommu=on i915.enable_psr=1
        usb-storage.quirks=13fe:6500:u
    X86 setup: 742e3400
    Logo:      (none)
    FDT:       <NULL>
    Error:     0
    => bootflow cmdline auto earlycon
    => bootflow cmd auto console
    => print bootargs
    bootargs=console=ttyS0,115200n8 loglevel=7 ...
        usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
    => bootflow cmd del console
    => print bootargs
    bootargs=loglevel=7 ... earlycon=uart8250,mmio32,0xfe03e000,115200n8
    => bootfl boot
    ** 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
    Kernel command line: "loglevel=7 ... earlycon=uart8250,mmio32,0xfe03e000,115200n8"

    Starting kernel ...

    [    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
    [    0.000000] Command line: loglevel=7 ... usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
    [    0.000000] x86/split lock detection: warning about user-space split_locks

This shows looking at x86 setup information::

    => bootfl sel 0
    => bootfl i -s
    Setup located at 77b56010:

    ACPI RSDP addr      : 0
    E820: 2 entries
            Addr        Size  Type
               0        1000  RAM
        fffff000        1000  Reserved
    Setup sectors       : 1e
    Root flags          : 1
    Sys size            : 63420
    RAM size            : 0
    Video mode          : ffff
    Root dev            : 0
    Boot flag           : 0
    Jump                : 66eb
    Header              : 53726448
                          Kernel V2
    Version             : 20d
    Real mode switch    : 0
    Start sys seg       : 1000
    Kernel version      : 38cc
       @00003acc:
    Type of loader      : ff
                          unknown
    Load flags          : 1
                        : loaded-high
    Setup move size     : 8000
    Code32 start        : 100000
    Ramdisk image       : 0
    Ramdisk size        : 0
    Bootsect kludge     : 0
    Heap end ptr        : 5160
    Ext loader ver      : 0
    Ext loader type     : 0
    Command line ptr    : 735000
    Initrd addr max     : 7fffffff
    Kernel alignment    : 200000
    Relocatable kernel  : 1
    Min alignment       : 15
                        : 200000
    Xload flags         : 3
                        : 64-bit-entry can-load-above-4gb
    Cmdline size        : 7ff
    Hardware subarch    : 0
    HW subarch data     : 0
    Payload offset      : 26e
    Payload length      : 612045
    Setup data          : 0
    Pref address        : 1000000
    Init size           : 1383000
    Handover offset     : 0

This shows reading a bootflow to examine the kernel::

    => bootfl i 0
    Name:
    Device:    emmc@1c,0.bootdev
    Block dev: emmc@1c,0.blk
    Method:    cros
    State:     ready
    Partition: 2
    Subdir:    (none)
    Filename:  <NULL>
    Buffer:    0
    Size:      63ee00 (6548992 bytes)
    OS:        ChromeOS
    Cmdline:   console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=PARTUUID=35c775e7-3735-d745-93e5-d9e0238f7ed0/PARTNROFF=1 rootwait rw dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=0 dm="1 vroot none rw 1,0 3788800 verity payload=ROOT_DEV hashtree=HASH_DEV hashstart=3788800 alg=sha1 root_hexdigest=55052b629d3ac889f25a9583ea12cdcd3ea15ff8 salt=a2d4d9e574069f4fed5e3961b99054b7a4905414b60a25d89974a7334021165c" noinitrd vt.global_cursor_default=0 kern_guid=35c775e7-3735-d745-93e5-d9e0238f7ed0 add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic disablevmx=off
    X86 setup: 77b56010
    Logo:      (none)
    FDT:       <NULL>
    Error:     0

Note that `Buffer` is 0 so it has not be read yet. Using `bootflow read`::

    => bootfl read
    => bootfl info
    Name:
    Device:    emmc@1c,0.bootdev
    Block dev: emmc@1c,0.blk
    Method:    cros
    State:     ready
    Partition: 2
    Subdir:    (none)
    Filename:  <NULL>
    Buffer:    77b7e400
    Size:      63ee00 (6548992 bytes)
    OS:        ChromeOS
    Cmdline:   console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=PARTUUID=35c775e7-3735-d745-93e5-d9e0238f7ed0/PARTNROFF=1 rootwait rw dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=0 dm="1 vroot none rw 1,0 3788800 verity payload=ROOT_DEV hashtree=HASH_DEV hashstart=3788800 alg=sha1 root_hexdigest=55052b629d3ac889f25a9583ea12cdcd3ea15ff8 salt=a2d4d9e574069f4fed5e3961b99054b7a4905414b60a25d89974a7334021165c" noinitrd vt.global_cursor_default=0 kern_guid=35c775e7-3735-d745-93e5-d9e0238f7ed0 add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic disablevmx=off
    X86 setup: 781b4400
    Logo:      (none)
    FDT:       <NULL>
    Error:     0

Now the buffer can be accessed::

    => md 77b7e400
    77b7e400: 1186f6fc 40000002 b8fa0c75 00000018  .......@u.......
    77b7e410: c08ed88e a68dd08e 000001e8 000000e8  ................
    77b7e420: ed815d00 00000021 62c280b8 89e80100  .]..!......b....
    77b7e430: 22f7e8c4 c0850061 22ec850f eb890061  ..."a......"a...
    77b7e440: 0230868b 01480000 21d0f7c3 00fb81c3  ..0...H....!....
    77b7e450: 7d010000 0000bb05 c3810100 00d4f000  ...}............
    77b7e460: 8130858d 85890061 00618132 3095010f  ..0.a...2.a....0
    77b7e470: 0f006181 c883e020 e0220f20 e000bb8d  .a.. ... .".....
    77b7e480: c0310062 001800b9 8dabf300 62e000bb  b.1............b
    77b7e490: 07878d00 89000010 00bb8d07 8d0062f0  .............b..
    77b7e4a0: 00100787 0004b900 07890000 00100005  ................
    77b7e4b0: 08c78300 8df37549 630000bb 0183b800  ....Iu.....c....
    77b7e4c0: 00b90000 89000008 00000507 c7830020  ............ ...
    77b7e4d0: f3754908 e000838d 220f0062 0080b9d8  .Iu.....b.."....
    77b7e4e0: 320fc000 08e8ba0f c031300f b8d0000f  ...2.....01.....
    77b7e4f0: 00000020 6ad8000f 00858d10 50000002   ......j.......P


Return value
------------

On success `bootflow boot` normally boots into the Operating System and does not
return to U-Boot. If something about the U-Boot processing fails, then the
return value $? is 1. If the boot succeeds but for some reason the Operating
System returns, then $? is 0, indicating success.

For other subcommands, the return value $? is always 0 (true).


.. BootflowStates_:
