[PATCH v3 00/17] x86: zboot: Enhance the 'zboot' command

classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH v3 14/17] x86: zboot: Add an option to dump the setup information

Bin Meng-2
On Sun, Sep 6, 2020 at 4:51 AM Simon Glass <[hidden email]> wrote:

>
> There is a lot of information in the setup block and it is quite hard to
> decode manually. Add a 'zboot dump' command to decode it into a
> human-readable format.
>
> Signed-off-by: Simon Glass <[hidden email]>
> Reviewed-by: Wolfgang Wallner <[hidden email]>
> ---
>
> Changes in v3:
> - Update two local arrays to be static
> - Use 'Commandline' instead of 'Commandline'
>
>  arch/x86/include/asm/e820.h |   1 +
>  arch/x86/lib/zimage.c       | 199 +++++++++++++++++++++++++++++++++++-
>  2 files changed, 199 insertions(+), 1 deletion(-)
>

Reviewed-by: Bin Meng <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH v3 10/17] x86: zboot: Add an 'load' subcommand

Bin Meng-2
In reply to this post by Simon Glass-3
On Sun, Sep 6, 2020 at 4:51 AM Simon Glass <[hidden email]> wrote:

>
> Add a subcommand that loads the kernel into the right places in memory.
>
> Signed-off-by: Simon Glass <[hidden email]>
> ---
>
> Changes in v3:
> - Move command help into the patch for each command
> - Split the 'load' command into its own patch
>
>  arch/x86/lib/zimage.c | 21 +++++++++++++++------
>  1 file changed, 15 insertions(+), 6 deletions(-)
>

Reviewed-by: Bin Meng <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH v3 07/17] x86: zboot: Set up a sub-command structure

Bin Meng-2
In reply to this post by Simon Glass-3
On Sun, Sep 6, 2020 at 4:51 AM Simon Glass <[hidden email]> wrote:

>
> Add subcommands to zboot. At present there is only one called 'start'
> which does the whole boot. It is the default command so is optional.
>
> Change the 's' string variable to const while we are here.
> Signed-off-by: Simon Glass <[hidden email]>
> Reviewed-by: Wolfgang Wallner <[hidden email]>
> ---
>
> Changes in v3:
> - Add a comment about complete_zboot()
> - Move command help into the patch for each command
> - Reduce maxargs to 6
>
> Changes in v2:
> - Fix comment about argv[0] in do_zboot_parent()
>
>  arch/x86/lib/zimage.c | 66 +++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 61 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c
> index 8651dea93b3..f037bd5dc56 100644
> --- a/arch/x86/lib/zimage.c
> +++ b/arch/x86/lib/zimage.c
> @@ -63,6 +63,12 @@ struct zboot_state {
>         ulong load_address;
>  } state;
>
> +enum {
> +       ZBOOT_STATE_START       = BIT(0),
> +
> +       ZBOOT_STATE_COUNT       = 1,
> +};
> +
>  static void build_command_line(char *command_line, int auto_boot)
>  {
>         char *env_command_line;
> @@ -328,10 +334,11 @@ int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
>         return 0;
>  }
>
> -int do_zboot(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> +static int do_zboot_start(struct cmd_tbl *cmdtp, int flag, int argc,
> +                         char *const argv[])
>  {
>         struct boot_params *base_ptr;
> -       char *s;
> +       const char *s;
>
>         memset(&state, '\0', sizeof(state));
>         if (argc >= 2) {
> @@ -373,9 +380,54 @@ int do_zboot(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>         return boot_linux_kernel((ulong)base_ptr, state.load_address, false);
>  }
>
> -U_BOOT_CMD(
> -       zboot, 5, 0,    do_zboot,
> -       "Boot bzImage",
> +/* Note: This defines the complete_zboot() function */
> +U_BOOT_SUBCMDS(zboot,
> +       U_BOOT_CMD_MKENT(start, 8, 1, do_zboot_start, "", ""),

This should be 6, 1,

> +)
> +
> +int do_zboot_states(struct cmd_tbl *cmdtp, int flag, int argc,
> +                   char *const argv[], int state_mask)
> +{
> +       int i;
> +
> +       for (i = 0; i < ZBOOT_STATE_COUNT; i++) {
> +               struct cmd_tbl *cmd = &zboot_subcmds[i];
> +               int mask = 1 << i;
> +               int ret;
> +
> +               if (mask & state_mask) {
> +                       ret = cmd->cmd(cmd, flag, argc, argv);
> +                       if (ret)
> +                               return ret;
> +               }
> +       }
> +
> +       return 0;
> +}
> +
> +int do_zboot_parent(struct cmd_tbl *cmdtp, int flag, int argc,
> +                   char *const argv[], int *repeatable)
> +{
> +       /* determine if we have a sub command */
> +       if (argc > 1) {
> +               char *endp;
> +
> +               simple_strtoul(argv[1], &endp, 16);
> +               /*
> +                * endp pointing to nul means that argv[1] was just a valid
> +                * number, so pass it along to the normal processing
> +                */
> +               if (*endp)
> +                       return do_zboot(cmdtp, flag, argc, argv, repeatable);
> +       }
> +
> +       do_zboot_states(cmdtp, flag, argc, argv, ZBOOT_STATE_START);
> +
> +       return CMD_RET_FAILURE;
> +}
> +
> +U_BOOT_CMDREP_COMPLETE(
> +       zboot, 6, do_zboot_parent, "Boot bzImage",
>         "[addr] [size] [initrd addr] [initrd size]\n"
>         "      addr -        The optional starting address of the bzimage.\n"
>         "                    If not set it defaults to the environment\n"
> @@ -384,4 +436,8 @@ U_BOOT_CMD(
>         "                    zero.\n"
>         "      initrd addr - The address of the initrd image to use, if any.\n"
>         "      initrd size - The size of the initrd image to use, if any.\n"
> +       "\n"
> +       "Sub-commands to do part of the zboot sequence:\n"
> +       "\tstart [addr [arg ...]] - specify arguments\n",
> +       complete_zboot
>  );
> --

Reviewed-by: Bin Meng <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH v3 00/17] x86: zboot: Enhance the 'zboot' command

Bin Meng-2
In reply to this post by Simon Glass-3
On Sun, Sep 6, 2020 at 4:51 AM Simon Glass <[hidden email]> wrote:

>
> This command is currently monolithic and does not support scripts which
> want to adjust the boot process. This series updates it to be more like
> 'bootm', in that it has sub-commands for each stage of the boot. This
> allows some stages to be adjusted or skipped.
>
> It also adds a way to dump out the setup block.
>
> With these changes it is possible to boot an x86 Chrome OS image from a
> script.
>
> Changes in v3:
> - Add a comment about complete_zboot()
> - Adjust maxargs in this patch
> - Fix 'summary' typo
> - Mention that the environment variables are for x86 only
> - Move command help into the patch for each command
> - Reduce maxargs to 6
> - Split the 'load' command into its own patch
> - Update two local arrays to be static
> - Use 'Commandline' instead of 'Commandline'
>

With some minor nits fixed, the whole series is now applied to
u-boot-x86/next, thanks!
12