All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] test/py: Add a way to start sandbox without a device tree
@ 2022-04-27 19:47 Simon Glass
  2022-04-27 19:47 ` [PATCH 2/2] sandbox: Avoid binman error when run without " Simon Glass
  2022-05-05 18:52 ` [PATCH 1/2] test/py: Add a way to start sandbox without a " Tom Rini
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Glass @ 2022-04-27 19:47 UTC (permalink / raw)
  To: U-Boot Mailing List
  Cc: Philippe Reynes, Marek Vasut, Tom Rini, Simon Glass,
	Heinrich Schuchardt, Masami Hiramatsu, Stephen Warren,
	Stephen Warren

This is useful sometimes when running a specific test. Add support for it
in the existing restart_uboot_with_flags() function.

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

 test/py/u_boot_console_sandbox.py | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/test/py/u_boot_console_sandbox.py b/test/py/u_boot_console_sandbox.py
index ce4ca7e55ef..b79ec817957 100644
--- a/test/py/u_boot_console_sandbox.py
+++ b/test/py/u_boot_console_sandbox.py
@@ -27,6 +27,7 @@ class ConsoleSandbox(ConsoleBase):
 
         super(ConsoleSandbox, self).__init__(log, config, max_fifo_fill=1024)
         self.sandbox_flags = []
+        self.use_dtb = True
 
     def get_spawn(self):
         """Connect to a fresh U-Boot instance.
@@ -48,16 +49,13 @@ class ConsoleSandbox(ConsoleBase):
         cmd = []
         if self.config.gdbserver:
             cmd += ['gdbserver', self.config.gdbserver]
-        cmd += [
-            self.config.build_dir + fname,
-            '-v',
-            '-d',
-            self.config.dtb
-        ]
+        cmd += [self.config.build_dir + fname, '-v']
+        if self.use_dtb:
+            cmd += ['-d', self.config.dtb]
         cmd += self.sandbox_flags
         return Spawn(cmd, cwd=self.config.source_dir)
 
-    def restart_uboot_with_flags(self, flags, expect_reset=False):
+    def restart_uboot_with_flags(self, flags, expect_reset=False, use_dtb=True):
         """Run U-Boot with the given command-line flags
 
         Args:
@@ -65,6 +63,7 @@ class ConsoleSandbox(ConsoleBase):
             expect_reset: Boolean indication whether this boot is expected
                 to be reset while the 1st boot process after main boot before
                 prompt. False by default.
+            use_dtb: True to use a device tree file, False to run without one
 
         Returns:
             A u_boot_spawn.Spawn object that is attached to U-Boot.
@@ -72,9 +71,11 @@ class ConsoleSandbox(ConsoleBase):
 
         try:
             self.sandbox_flags = flags
+            self.use_dtb = use_dtb
             return self.restart_uboot(expect_reset)
         finally:
             self.sandbox_flags = []
+            self.use_dtb = True
 
     def kill(self, sig):
         """Send a specific Unix signal to the sandbox process.
-- 
2.36.0.464.gb9c8b46e94-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] sandbox: Avoid binman error when run without device tree
  2022-04-27 19:47 [PATCH 1/2] test/py: Add a way to start sandbox without a device tree Simon Glass
@ 2022-04-27 19:47 ` Simon Glass
  2022-05-05 18:53   ` Tom Rini
  2022-05-05 18:52 ` [PATCH 1/2] test/py: Add a way to start sandbox without a " Tom Rini
  1 sibling, 1 reply; 4+ messages in thread
From: Simon Glass @ 2022-04-27 19:47 UTC (permalink / raw)
  To: U-Boot Mailing List
  Cc: Philippe Reynes, Marek Vasut, Tom Rini, Simon Glass,
	Heinrich Schuchardt, Ilias Apalodimas

With sandbox, U-Boot can be run without a device tree (i.e. no -d or -T
parameter). In this case an empty device tree is created for convenience.
With a recent change this causes an error due to the missing '/binman'
node.

Add this node to avoid the problem, as well as a test that U-Boot can
be run without a device tree.

Fixes: 059df5624b ("arch: Kconfig: imply BINMAN for SANDBOX")
Fixes: https://source.denx.de/u-boot/u-boot/-/issues/11
Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/sandbox/cpu/cpu.c     | 27 ++++++++++++++++++++++++++-
 test/py/tests/test_help.py | 14 ++++++++++++++
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index ff0fa8a6853..7a82798c36d 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -291,6 +291,31 @@ void invalidate_dcache_range(unsigned long start, unsigned long stop)
 {
 }
 
+/**
+ * setup_auto_tree() - Set up a basic device tree to allow sandbox to work
+ *
+ * This is used when no device tree is provided. It creates a simple tree with
+ * just a /binman node.
+ *
+ * @blob: Place to put the created device tree
+ * Returns: 0 on success, -ve FDT error code on failure
+ */
+static int setup_auto_tree(void *blob)
+{
+	int err;
+
+	err = fdt_create_empty_tree(blob, 256);
+	if (err)
+		return err;
+
+	/* Create a /binman node in case CONFIG_BINMAN is enabled */
+	err = fdt_add_subnode(blob, 0, "binman");
+	if (err < 0)
+		return err;
+
+	return 0;
+}
+
 void *board_fdt_blob_setup(int *ret)
 {
 	struct sandbox_state *state = state_get_current();
@@ -303,7 +328,7 @@ void *board_fdt_blob_setup(int *ret)
 	blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0);
 	*ret = 0;
 	if (!state->fdt_fname) {
-		err = fdt_create_empty_tree(blob, 256);
+		err = setup_auto_tree(blob);
 		if (!err)
 			goto done;
 		printf("Unable to create empty FDT: %s\n", fdt_strerror(err));
diff --git a/test/py/tests/test_help.py b/test/py/tests/test_help.py
index d50295e5bd0..03b9d91c117 100644
--- a/test/py/tests/test_help.py
+++ b/test/py/tests/test_help.py
@@ -2,7 +2,21 @@
 # Copyright (c) 2015 Stephen Warren
 # Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
 
+import pytest
+
 def test_help(u_boot_console):
     """Test that the "help" command can be executed."""
 
     u_boot_console.run_command('help')
+
+@pytest.mark.boardspec('sandbox')
+def test_help_no_devicetree(u_boot_console):
+    try:
+        cons = u_boot_console
+        cons.restart_uboot_with_flags([], use_dtb=False)
+        cons.run_command('help')
+        output = cons.get_spawn_output().replace('\r', '')
+        assert 'print command description/usage' in output
+    finally:
+        # Restart afterward to get the normal device tree back
+        u_boot_console.restart_uboot()
-- 
2.36.0.464.gb9c8b46e94-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] test/py: Add a way to start sandbox without a device tree
  2022-04-27 19:47 [PATCH 1/2] test/py: Add a way to start sandbox without a device tree Simon Glass
  2022-04-27 19:47 ` [PATCH 2/2] sandbox: Avoid binman error when run without " Simon Glass
@ 2022-05-05 18:52 ` Tom Rini
  1 sibling, 0 replies; 4+ messages in thread
From: Tom Rini @ 2022-05-05 18:52 UTC (permalink / raw)
  To: Simon Glass
  Cc: U-Boot Mailing List, Philippe Reynes, Marek Vasut,
	Heinrich Schuchardt, Masami Hiramatsu, Stephen Warren,
	Stephen Warren

[-- Attachment #1: Type: text/plain, Size: 299 bytes --]

On Wed, Apr 27, 2022 at 01:47:56PM -0600, Simon Glass wrote:

> This is useful sometimes when running a specific test. Add support for it
> in the existing restart_uboot_with_flags() function.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] sandbox: Avoid binman error when run without device tree
  2022-04-27 19:47 ` [PATCH 2/2] sandbox: Avoid binman error when run without " Simon Glass
@ 2022-05-05 18:53   ` Tom Rini
  0 siblings, 0 replies; 4+ messages in thread
From: Tom Rini @ 2022-05-05 18:53 UTC (permalink / raw)
  To: Simon Glass
  Cc: U-Boot Mailing List, Philippe Reynes, Marek Vasut,
	Heinrich Schuchardt, Ilias Apalodimas

[-- Attachment #1: Type: text/plain, Size: 635 bytes --]

On Wed, Apr 27, 2022 at 01:47:57PM -0600, Simon Glass wrote:

> With sandbox, U-Boot can be run without a device tree (i.e. no -d or -T
> parameter). In this case an empty device tree is created for convenience.
> With a recent change this causes an error due to the missing '/binman'
> node.
> 
> Add this node to avoid the problem, as well as a test that U-Boot can
> be run without a device tree.
> 
> Fixes: 059df5624b ("arch: Kconfig: imply BINMAN for SANDBOX")
> Fixes: https://source.denx.de/u-boot/u-boot/-/issues/11
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-05-05 18:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-27 19:47 [PATCH 1/2] test/py: Add a way to start sandbox without a device tree Simon Glass
2022-04-27 19:47 ` [PATCH 2/2] sandbox: Avoid binman error when run without " Simon Glass
2022-05-05 18:53   ` Tom Rini
2022-05-05 18:52 ` [PATCH 1/2] test/py: Add a way to start sandbox without a " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.