bootstd: Allow storing the OS command line in the bootflow
authorSimon Glass <sjg@chromium.org>
Wed, 12 Jul 2023 15:04:34 +0000 (09:04 -0600)
committerBin Meng <bmeng@tinylab.org>
Sun, 16 Jul 2023 15:13:17 +0000 (23:13 +0800)
Some operating systems have a command line which can be adjusted before
booting. Store this in the bootflow so it can be controlled within
U-Boot.

Fix up the example output while we are here, since there are a few new
items.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
cmd/bootflow.c
doc/usage/cmd/bootflow.rst
include/bootflow.h
test/boot/bootflow.c

index 5c61286..ddb168c 100644 (file)
@@ -324,6 +324,12 @@ static int do_bootflow_info(struct cmd_tbl *cmdtp, int flag, int argc,
        printf("Buffer:    %lx\n", (ulong)map_to_sysmem(bflow->buf));
        printf("Size:      %x (%d bytes)\n", bflow->size, bflow->size);
        printf("OS:        %s\n", bflow->os_name ? bflow->os_name : "(none)");
+       printf("Cmdline:   ");
+       if (bflow->cmdline)
+               puts(bflow->cmdline);
+       else
+               puts("(none)");
+       putc('\n');
        printf("Logo:      %s\n", bflow->logo ?
               simple_xtoa((ulong)map_to_sysmem(bflow->logo)) : "(none)");
        if (bflow->logo) {
index 8590efc..907d44a 100644 (file)
@@ -258,7 +258,6 @@ displayed and booted::
     Name:      mmc@7e202000.bootdev.part_2
     Device:    mmc@7e202000.bootdev
     Block dev: mmc@7e202000.blk
-    Sequence:  1
     Method:    distro
     State:     ready
     Partition: 2
@@ -266,6 +265,10 @@ displayed and booted::
     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'
index 018d021..a1c16ab 100644 (file)
@@ -81,6 +81,7 @@ enum bootflow_flags_t {
  * @fdt_size: Size of FDT file
  * @fdt_addr: Address of loaded fdt
  * @flags: Flags for the bootflow (see enum bootflow_flags_t)
+ * @cmdline: OS command line, or NULL if not known (allocated)
  */
 struct bootflow {
        struct list_head bm_node;
@@ -104,6 +105,7 @@ struct bootflow {
        int fdt_size;
        ulong fdt_addr;
        int flags;
+       char *cmdline;
 };
 
 /**
index 2b5f87d..f7ebf9d 100644 (file)
@@ -226,6 +226,7 @@ static int bootflow_cmd_info(struct unit_test_state *uts)
        ut_assert_nextlinen("Buffer:    ");
        ut_assert_nextline("Size:      253 (595 bytes)");
        ut_assert_nextline("OS:        Fedora-Workstation-armhfp-31-1.9 (5.3.7-301.fc31.armv7hl)");
+       ut_assert_nextline("Cmdline:   (none)");
        ut_assert_nextline("Logo:      (none)");
        ut_assert_nextline("FDT:       <NULL>");
        ut_assert_nextline("Error:     0");