All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: Philippe Reynes <philippe.reynes@softathome.com>
Cc: mr.nuke.me@gmail.com, joel.peshkin@broadcom.com, u-boot@lists.denx.de
Subject: Re: [RFC PATCH v3 5/8] cmd: bootm: add a stage pre-load
Date: Wed, 24 Nov 2021 17:12:56 -0700	[thread overview]
Message-ID: <CAPnjgZ0Z_rCKwN=pPRY5AhVtpf4kci+mBeTidfgMhzy6asfEFQ@mail.gmail.com> (raw)
In-Reply-To: <20211117175215.24262-6-philippe.reynes@softathome.com>

Hi Philippe,

On Wed, 17 Nov 2021 at 10:52, Philippe Reynes
<philippe.reynes@softathome.com> wrote:
>
> This commit adds a stage pre-load to the command

Add a stage...

> bootm. Right now, this stage may be used to read
> a header and check the signature of the full
> image.
>
> Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
> ---
>  boot/bootm.c    | 33 +++++++++++++++++++++++++++++++++
>  cmd/Kconfig     | 10 ++++++++++
>  cmd/bootm.c     |  2 +-
>  include/image.h |  1 +
>  4 files changed, 45 insertions(+), 1 deletion(-)
>

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

> diff --git a/boot/bootm.c b/boot/bootm.c
> index 4482f84b40..4803c577cc 100644
> --- a/boot/bootm.c
> +++ b/boot/bootm.c
> @@ -87,6 +87,33 @@ static int bootm_start(struct cmd_tbl *cmdtp, int flag, int argc,
>         return 0;
>  }
>
> +static ulong bootm_data_addr(int argc, char *const argv[])
> +{
> +       ulong addr;
> +
> +       if (argc > 0)
> +               addr = simple_strtoul(argv[0], NULL, 16);
> +       else
> +               addr = image_load_addr;
> +
> +       return addr;
> +}
> +
> +static int bootm_pre_load(struct cmd_tbl *cmdtp, int flag, int argc,
> +                         char *const argv[])
> +{
> +       ulong data_addr = bootm_data_addr(argc, argv);
> +       int ret = 0;
> +
> +       if (CONFIG_IS_ENABLED(CMD_BOOTM_PRE_LOAD))
> +               ret = image_pre_load(data_addr);
> +
> +       if (ret)
> +               ret = CMD_RET_FAILURE;
> +
> +       return ret;
> +}
> +
>  static int bootm_find_os(struct cmd_tbl *cmdtp, int flag, int argc,
>                          char *const argv[])
>  {
> @@ -677,6 +704,9 @@ int do_bootm_states(struct cmd_tbl *cmdtp, int flag, int argc,
>         if (states & BOOTM_STATE_START)
>                 ret = bootm_start(cmdtp, flag, argc, argv);
>
> +       if (!ret && (states & BOOTM_STATE_PRE_LOAD))
> +               ret = bootm_pre_load(cmdtp, flag, argc, argv);
> +
>         if (!ret && (states & BOOTM_STATE_FINDOS))
>                 ret = bootm_find_os(cmdtp, flag, argc, argv);
>
> @@ -866,6 +896,9 @@ static const void *boot_get_kernel(struct cmd_tbl *cmdtp, int flag, int argc,
>                                               &fit_uname_config,
>                                               &fit_uname_kernel);
>
> +       if (CONFIG_IS_ENABLED(CMD_BOOTM_PRE_LOAD))
> +               img_addr += image_load_offset;
> +
>         bootstage_mark(BOOTSTAGE_ID_CHECK_MAGIC);
>
>         /* check image type, for FIT images get FIT kernel node */
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index 5b30b13e43..cad2cda0bf 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -194,6 +194,16 @@ config CMD_BOOTM
>         help
>           Boot an application image from the memory.
>
> +config CMD_BOOTM_PRE_LOAD
> +       bool "enable pre-load on bootm"
> +       depends on CMD_BOOTM
> +       depends on IMAGE_PRE_LOAD
> +       default n
> +       help
> +         Enable support of stage pre-load for the bootm command.
> +        This stage allow to check of modifty the image provided
> +        to the bootm command.

modify

> +
>  config BOOTM_EFI
>         bool "Support booting UEFI FIT images"
>         depends on CMD_BOOTEFI && CMD_BOOTM && FIT
> diff --git a/cmd/bootm.c b/cmd/bootm.c
> index 92468d09a1..acfb8eedde 100644
> --- a/cmd/bootm.c
> +++ b/cmd/bootm.c
> @@ -126,7 +126,7 @@ int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>         }
>
>         return do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START |
> -               BOOTM_STATE_FINDOS | BOOTM_STATE_FINDOTHER |
> +               BOOTM_STATE_FINDOS | BOOTM_STATE_PRE_LOAD | BOOTM_STATE_FINDOTHER |
>                 BOOTM_STATE_LOADOS |
>  #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
>                 BOOTM_STATE_RAMDISK |
> diff --git a/include/image.h b/include/image.h
> index 5f83e4c747..42fb01ab07 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -351,6 +351,7 @@ typedef struct bootm_headers {
>  #define        BOOTM_STATE_OS_PREP     (0x00000100)
>  #define        BOOTM_STATE_OS_FAKE_GO  (0x00000200)    /* 'Almost' run the OS */
>  #define        BOOTM_STATE_OS_GO       (0x00000400)
> +#define        BOOTM_STATE_PRE_LOAD    (0x00000800)

Drop ()

>         int             state;
>
>  #if defined(CONFIG_LMB) && !defined(USE_HOSTCC)
> --
> 2.17.1
>

Regards,
Simon

  reply	other threads:[~2021-11-25  0:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-17 17:52 [RFC PATCH v3 0/8] image: add a stage pre-load Philippe Reynes
2021-11-17 17:52 ` [RFC PATCH v3 1/8] lib: allow to build asn1 decoder and oid registry in SPL Philippe Reynes
2021-11-25  0:12   ` Simon Glass
2021-11-17 17:52 ` [RFC PATCH v3 2/8] lib: crypto: allow to build crypyo " Philippe Reynes
2021-11-25  0:12   ` Simon Glass
2021-11-17 17:52 ` [RFC PATCH v3 3/8] lib: rsa: allow rsa verify with pkey " Philippe Reynes
2021-11-25  0:12   ` Simon Glass
2021-11-17 17:52 ` [RFC PATCH v3 4/8] boot: image: add a stage pre-load Philippe Reynes
2021-11-25  0:12   ` Simon Glass
2021-11-17 17:52 ` [RFC PATCH v3 5/8] cmd: bootm: " Philippe Reynes
2021-11-25  0:12   ` Simon Glass [this message]
2021-11-17 17:52 ` [RFC PATCH v3 6/8] common: spl: fit_ram: allow to use image pre load Philippe Reynes
2021-11-25  0:12   ` Simon Glass
2021-11-17 17:52 ` [RFC PATCH v3 7/8] mkimage: add public key for image pre-load stage Philippe Reynes
2021-11-25  0:13   ` Simon Glass
2021-12-03 10:29     ` Philippe REYNES
2021-11-17 17:52 ` [RFC PATCH v3 8/8] tools: gen_pre_load_header.sh: initial import Philippe Reynes
2021-11-25  0:13   ` Simon Glass
2021-12-06  8:23   ` Rasmus Villemoes
2021-12-08 18:10     ` Philippe REYNES
2021-12-09  1:04       ` Rasmus Villemoes
2021-12-10  0:14       ` Simon Glass
2021-12-10  7:41         ` Rasmus Villemoes
2021-12-11 11:37           ` Simon Glass
2021-11-25  0:13 ` [RFC PATCH v3 0/8] image: add a stage pre-load 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='CAPnjgZ0Z_rCKwN=pPRY5AhVtpf4kci+mBeTidfgMhzy6asfEFQ@mail.gmail.com' \
    --to=sjg@chromium.org \
    --cc=joel.peshkin@broadcom.com \
    --cc=mr.nuke.me@gmail.com \
    --cc=philippe.reynes@softathome.com \
    --cc=u-boot@lists.denx.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 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.