diff mbox series

[v8,4/8] sandbox: Add a -N flag to control on-host behaviour

Message ID 20241022120032.196311-5-sjg@chromium.org
State Changes Requested
Delegated to: Tom Rini
Headers show
Series efi: Add a test for EFI bootmeth | expand

Commit Message

Simon Glass Oct. 22, 2024, noon UTC
Sandbox is its own architecture, but sometimes we want to mimic the host
architecture, e.g. when running an EFI app not built by U-Boot.

Add a -N/--native flag which tells sandbox to reflect the architecture
of the host.

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

Changes in v8:
- Add new patch to control on-host behaviour

 arch/sandbox/cpu/start.c         | 10 ++++++++++
 arch/sandbox/include/asm/state.h |  1 +
 2 files changed, 11 insertions(+)

Comments

Heinrich Schuchardt Oct. 28, 2024, 6:01 p.m. UTC | #1
On 10/22/24 14:00, Simon Glass wrote:
> Sandbox is its own architecture, but sometimes we want to mimic the host
> architecture, e.g. when running an EFI app not built by U-Boot.
>
> Add a -N/--native flag which tells sandbox to reflect the architecture
> of the host.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v8:
> - Add new patch to control on-host behaviour
>
>   arch/sandbox/cpu/start.c         | 10 ++++++++++
>   arch/sandbox/include/asm/state.h |  1 +
>   2 files changed, 11 insertions(+)
>
> diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
> index 81752edc9f8..2940768cd1c 100644
> --- a/arch/sandbox/cpu/start.c
> +++ b/arch/sandbox/cpu/start.c
> @@ -449,6 +449,16 @@ static void setup_ram_buf(struct sandbox_state *state)
>   	gd->ram_size = state->ram_size;
>   }
>
> +static int sandbox_cmdline_cb_native(struct sandbox_state *state,
> +				     const char *arg)
> +{
> +	state->native = true;
> +
> +	return 0;
> +}
> +SANDBOX_CMDLINE_OPT_SHORT(native, 'N', 0,
> +			  "Use native mode (host-based EFI boot filename)");

We should not need an option for default behavior.

Please, turn the logic around to avoid users seeing unexpected results:

 > +SANDBOX_CMDLINE_OPT_SHORT(non-compliant, 'N', 0,
 > +			  "Non-compliant sandbox, for testing only");

Best regards

Heinrich

> +
>   void state_show(struct sandbox_state *state)
>   {
>   	char **p;
> diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h
> index e7dc01759e8..dc21a623106 100644
> --- a/arch/sandbox/include/asm/state.h
> +++ b/arch/sandbox/include/asm/state.h
> @@ -101,6 +101,7 @@ struct sandbox_state {
>   	bool disable_eth;		/* Disable Ethernet devices */
>   	bool disable_sf_bootdevs;	/* Don't bind SPI flash bootdevs */
>   	bool upl;			/* Enable Universal Payload (UPL) */
> +	bool native;			/* Adjust to reflect host arch */
>
>   	/* Pointer to information for each SPI bus/cs */
>   	struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
diff mbox series

Patch

diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index 81752edc9f8..2940768cd1c 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -449,6 +449,16 @@  static void setup_ram_buf(struct sandbox_state *state)
 	gd->ram_size = state->ram_size;
 }
 
+static int sandbox_cmdline_cb_native(struct sandbox_state *state,
+				     const char *arg)
+{
+	state->native = true;
+
+	return 0;
+}
+SANDBOX_CMDLINE_OPT_SHORT(native, 'N', 0,
+			  "Use native mode (host-based EFI boot filename)");
+
 void state_show(struct sandbox_state *state)
 {
 	char **p;
diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h
index e7dc01759e8..dc21a623106 100644
--- a/arch/sandbox/include/asm/state.h
+++ b/arch/sandbox/include/asm/state.h
@@ -101,6 +101,7 @@  struct sandbox_state {
 	bool disable_eth;		/* Disable Ethernet devices */
 	bool disable_sf_bootdevs;	/* Don't bind SPI flash bootdevs */
 	bool upl;			/* Enable Universal Payload (UPL) */
+	bool native;			/* Adjust to reflect host arch */
 
 	/* Pointer to information for each SPI bus/cs */
 	struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]