u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: "Tom Rini" <trini@konsulko.com>, "Simon Glass" <sjg@chromium.org>,
	"Bin Meng" <bmeng.cn@gmail.com>,
	"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
	"Marek Behún" <kabel@kernel.org>
Subject: [PATCH 43/45] vbe: Add docs and a test for the VBE command
Date: Sun, 25 Sep 2022 09:02:46 -0600	[thread overview]
Message-ID: <20220925150248.2524421-44-sjg@chromium.org> (raw)
In-Reply-To: <20220925150248.2524421-1-sjg@chromium.org>

After further development this seems to be useful for debugging and
testing. Add documentation and a test.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 doc/usage/cmd/vbe.rst | 90 +++++++++++++++++++++++++++++++++++++++++++
 doc/usage/index.rst   |  1 +
 test/boot/Makefile    |  1 +
 test/boot/vbe.c       | 69 +++++++++++++++++++++++++++++++++
 4 files changed, 161 insertions(+)
 create mode 100644 doc/usage/cmd/vbe.rst
 create mode 100644 test/boot/vbe.c

diff --git a/doc/usage/cmd/vbe.rst b/doc/usage/cmd/vbe.rst
new file mode 100644
index 00000000000..2b5cdd7d411
--- /dev/null
+++ b/doc/usage/cmd/vbe.rst
@@ -0,0 +1,90 @@
+vbe command
+===========
+
+Synopsis
+--------
+
+::
+
+    vbe list
+    vbe select <name_or_id>
+
+Description
+-----------
+
+The vbe command provides a way to interact with :doc:`../../develop/vbe`. It has
+subcommands for different purposes.
+
+vbe list
+~~~~~~~~
+
+Lists the available VBE bootmeths. These are a subset of all bootmeths, as
+accessed via the :doc:`bootmeth`.
+
+The fields are as follows:
+
+#:
+    Shows the bootmeth sequence number, Use the `bootmeth list` command to see
+    all available bootmeths.
+
+Sel:
+    Indicates the selected bootmeth with an asterisk (`*`).
+
+Device:
+    Name of VBE device, which is taken from the name of its device tree node.
+
+Driver:
+    Name of the VBE driver
+
+Description:
+    Description of the VBE driver
+
+
+vbe select
+~~~~~~~~~~
+
+Allows a particular bootmeth to be selected. Either a sequence number or a
+device name can be provided.
+
+Without any arguments, any selected device is deselected.
+
+
+Examples
+--------
+
+This shows listing and selecting devices::
+
+    => vbe list
+      #  Sel  Device           Driver          Description
+    ---  ---  --------------   --------------  -----------
+      2       firmware0        vbe_simple      VBE simple
+    ---  ---  --------------   --------------  -----------
+    => vbe sel 2
+    => vbe list
+      #  Sel  Device           Driver          Description
+    ---  ---  --------------   --------------  -----------
+      2  *    firmware0        vbe_simple      VBE simple
+    ---  ---  --------------   --------------  -----------
+    => vbe sel
+    => vbe list
+      #  Sel  Device           Driver          Description
+    ---  ---  --------------   --------------  -----------
+      2       firmware0        vbe_simple      VBE simple
+    ---  ---  --------------   --------------  -----------
+
+This shows selecting a VBE device by its name::
+
+    => vbe sel firmware0
+    => vbe list
+      #  Sel  Device           Driver          Description
+    ---  ---  --------------   --------------  -----------
+      2  *    firmware0        vbe_simple      VBE simple
+    ---  ---  --------------   --------------  -----------
+    =>
+
+
+Return value
+------------
+
+The return value $? is set to 0 (true) on success, or 1 (failure) if something
+goes wrong, such as failing to find the bootmeth with `vbe select`.
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index 73966c6e012..62c898c3575 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -68,6 +68,7 @@ Shell commands
    cmd/size
    cmd/true
    cmd/ums
+   cmd/vbe
    cmd/wdt
 
 Booting OS
diff --git a/test/boot/Makefile b/test/boot/Makefile
index d724629d3b0..167629a03ee 100644
--- a/test/boot/Makefile
+++ b/test/boot/Makefile
@@ -9,3 +9,4 @@ ifdef CONFIG_OF_LIVE
 obj-$(CONFIG_BOOTMETH_VBE_SIMPLE) += vbe_simple.o
 endif
 obj-$(CONFIG_BOOTMETH_VBE) += vbe_fixup.o
+obj-$(CONFIG_CMD_VBE) += vbe.o
diff --git a/test/boot/vbe.c b/test/boot/vbe.c
new file mode 100644
index 00000000000..9653ac5d94b
--- /dev/null
+++ b/test/boot/vbe.c
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test for `vbe` command
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <vbe.h>
+#include <test/suites.h>
+#include <test/ut.h>
+#include "bootstd_common.h"
+
+/* Check 'vbe list' command */
+static int vbe_cmd_list(struct unit_test_state *uts)
+{
+	console_record_reset_enable();
+	ut_assertok(run_command("vbe list", 0));
+	ut_assert_nextline("  #  Sel  Device           Driver          Description");
+	ut_assert_nextlinen("---");
+	ut_assert_nextline("  2       firmware0        vbe_simple      VBE simple");
+	ut_assert_nextlinen("---");
+	ut_assert_console_end();
+
+	return 0;
+}
+BOOTSTD_TEST(vbe_cmd_list, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
+
+/* Check 'vbe select' command */
+static int vbe_cmd_select(struct unit_test_state *uts)
+{
+	/* select a device */
+	console_record_reset_enable();
+	ut_assertok(run_command("vbe select 2", 0));
+	ut_assert_console_end();
+
+	ut_assertok(run_command("vbe list", 0));
+	ut_assert_nextline("  #  Sel  Device           Driver          Description");
+	ut_assert_nextlinen("---");
+	ut_assert_nextline("  2  *    firmware0        vbe_simple      VBE simple");
+	ut_assert_nextlinen("---");
+	ut_assert_console_end();
+
+	/* deselect it */
+	ut_assertok(run_command("vbe select", 0));
+	ut_assert_console_end();
+	ut_assertok(run_command("vbe list", 0));
+	ut_assert_nextline("  #  Sel  Device           Driver          Description");
+	ut_assert_nextlinen("---");
+	ut_assert_nextline("  2       firmware0        vbe_simple      VBE simple");
+	ut_assert_nextlinen("---");
+	ut_assert_console_end();
+
+	/* select a device by name */
+	console_record_reset_enable();
+	ut_assertok(run_command("vbe select firmware0", 0));
+	ut_assert_console_end();
+	ut_assertok(run_command("vbe list", 0));
+	ut_assert_nextline("  #  Sel  Device           Driver          Description");
+	ut_assert_nextlinen("---");
+	ut_assert_nextline("  2  *    firmware0        vbe_simple      VBE simple");
+	ut_assert_nextlinen("---");
+	ut_assert_console_end();
+
+	return 0;
+}
+BOOTSTD_TEST(vbe_cmd_select, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
-- 
2.37.3.998.g577e59143f-goog


  parent reply	other threads:[~2022-09-25 15:11 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-25 15:02 [PATCH 00/45] vbe: Implement the full firmware flow Simon Glass
2022-09-25 15:02 ` [PATCH 01/45] Rename CONFIG_SYS_TEXT_BASE to CONFIG_TEXT_BASE Simon Glass
2022-09-25 15:02 ` [PATCH 02/45] disk: Drop debug messages in part_efi Simon Glass
2022-09-26  6:11   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 03/45] bloblist: Drop debugging Simon Glass
2022-09-25 15:02 ` [PATCH 04/45] rsa: Avoid warning in padding_pss_verify() Simon Glass
2022-09-26  6:23   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 05/45] spl: Use binman suffix allow symbols of any SPL etype Simon Glass
2022-09-25 15:02 ` [PATCH 06/45] spl: Split up the board_init_r() function Simon Glass
2022-09-25 15:02 ` [PATCH 07/45] spl: Refactor controls for console output Simon Glass
2022-09-29 15:16   ` Tom Rini
2022-09-25 15:02 ` [PATCH 08/45] spl: Add a separate silence option for SPL Simon Glass
2022-09-25 15:02 ` [PATCH 09/45] CI: Install pyelftools for builds Simon Glass
2022-09-26  6:29   ` Heinrich Schuchardt
2022-09-28 10:20     ` Simon Glass
2022-09-29 15:05       ` Tom Rini
2022-09-29 23:55         ` Simon Glass
2022-09-30 12:56           ` Tom Rini
2022-09-30 13:28             ` Simon Glass
2022-09-25 15:02 ` [PATCH 10/45] binman: Allow obtaining a symbol value Simon Glass
2022-09-25 15:02 ` [PATCH 11/45] binman: Split out looking up a symbol into a function Simon Glass
2022-09-25 15:02 ` [PATCH 12/45] binman: Handle writing ELF symbols in the Entry class Simon Glass
2022-09-25 15:02 ` [PATCH 13/45] binman: Support writing symbols into ELF files Simon Glass
2022-09-25 15:02 ` [PATCH 14/45] dm: blk: Add udevice functions Simon Glass
2022-09-26  0:17   ` AKASHI Takahiro
2022-09-28 10:20     ` Simon Glass
2022-09-29  0:51       ` AKASHI Takahiro
2022-09-29  2:35         ` Simon Glass
2022-09-30  1:54           ` AKASHI Takahiro
2022-09-25 15:02 ` [PATCH 15/45] dm: usb: Update the test to cover reading and writing Simon Glass
2022-09-25 15:02 ` [PATCH 16/45] dm: blk: mmc: Tidy up some Makefile rules for SPL Simon Glass
2022-09-25 15:02 ` [PATCH 17/45] dm: mmc: Allow sandbox emulator to build without writes Simon Glass
2022-09-25 15:02 ` [PATCH 18/45] sandbox: Drop message about writing sandbox state Simon Glass
2022-09-26  6:31   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 19/45] sandbox: Generalise SPL booting Simon Glass
2022-09-25 15:02 ` [PATCH 20/45] sandbox: Add a way to specify the sandbox executable Simon Glass
2022-09-26  6:49   ` Heinrich Schuchardt
2022-11-07 23:35     ` Simon Glass
2022-09-25 15:02 ` [PATCH 21/45] bootstd: Add a way to set up a bootflow Simon Glass
2022-09-25 15:02 ` [PATCH 22/45] image: Move comment for fit_conf_find_compat() Simon Glass
2022-09-26  6:54   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 23/45] test: Report skippped tests Simon Glass
2022-09-25 15:02 ` [PATCH 24/45] test: Update tests to use the skip feature Simon Glass
2022-09-25 15:02 ` [PATCH 25/45] test: Support tests which can only be run manually Simon Glass
2022-09-26  6:56   ` Heinrich Schuchardt
2022-09-28 10:20     ` Simon Glass
2022-09-25 15:02 ` [PATCH 26/45] image: Add the concept of a phase to FIT Simon Glass
2022-09-25 15:02 ` [PATCH 27/45] image: Allow loading a FIT config for a particular phase Simon Glass
2022-09-25 15:02 ` [PATCH 28/45] image: Correct strncpy() warning with image_set_name() Simon Glass
2022-09-25 15:02 ` [PATCH 29/45] vbe: Rename vbe_fixup to vbe_request Simon Glass
2022-09-25 15:02 ` [PATCH 30/45] vbe: Use a warning for a failed requests Simon Glass
2022-09-25 15:02 ` [PATCH 31/45] spl: Allow multiple loaders of the same type Simon Glass
2022-09-30 16:28   ` Tom Rini
2022-09-30 16:37     ` Simon Glass
2022-09-30 16:39       ` Tom Rini
2022-09-30 16:45         ` Simon Glass
2022-09-30 16:50           ` Tom Rini
2022-09-30 16:55             ` Simon Glass
2022-09-25 15:02 ` [PATCH 32/45] sandbox: Support obtaining the next phase from an image Simon Glass
2022-09-25 15:02 ` [PATCH 33/45] vbe: Support selecting operations by SPL phase Simon Glass
2022-09-25 15:02 ` [PATCH 34/45] vbe: Support reading the next SPL phase via VBE Simon Glass
2022-09-25 15:02 ` [PATCH 35/45] vbe: Move OS implementation into a separate file Simon Glass
2022-09-25 15:02 ` [PATCH 36/45] vbe: Drop the U-Boot prefix from the version Simon Glass
2022-09-25 15:02 ` [PATCH 37/45] vbe: Add Kconfig options for VPL Simon Glass
2022-09-25 15:02 ` [PATCH 38/45] vbe: Add info about the VBE device to the fwupd node Simon Glass
2022-09-25 15:02 ` [PATCH 39/45] sandbox: Add a binman image for VPL Simon Glass
2022-09-25 15:02 ` [PATCH 40/45] vbe: Correct pylint warnings in test_vbe Simon Glass
2022-09-25 15:02 ` [PATCH 41/45] vbe: Use a manual test Simon Glass
2022-09-25 15:02 ` [PATCH 42/45] vbe: Record which phases loaded using VBE Simon Glass
2022-09-25 15:02 ` Simon Glass [this message]
2022-09-25 15:02 ` [PATCH 44/45] vbe: Add a subcommand to show the VBE state Simon Glass
2022-09-25 15:02 ` [PATCH 45/45] vbe: Add a test for the VBE flow into U-Boot proper Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220925150248.2524421-44-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=bmeng.cn@gmail.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=kabel@kernel.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).