[U-Boot] [PATCH V4 1/2] ARM: image: Add option for ignoring ep bit 3

Bin Chen bin.chen at linaro.org
Wed Jun 13 07:24:35 UTC 2018


On 13 June 2018 at 14:13, Marek Vasut <marek.vasut at gmail.com> wrote:

> Add option to the booti_setup() which indicates to it that the caller
> requires the image to be relocated to the beginning of the RAM and
> that the information whether the image can be located anywhere in RAM
> at 2 MiB aligned boundary or not is to be ignored. This is useful ie.
> in case the Image is wrapped in another envelope, ie. fitImage and not
> relocating it but moving it would corrupt the envelope.
>
> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
> Cc: Bin Chen <bin.chen at linaro.org>
> Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
> Cc: Tom Rini <trini at konsulko.com>
> ---
> V2: Rename ignore_ep to force_reloc
> V3: No change
> V4: - Add stdbool.h include
>     - Switch force_reloc to bool
> ---
>  arch/arm/lib/image.c | 5 +++--
>  cmd/booti.c          | 2 +-
>  include/image.h      | 5 ++++-
>  3 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/lib/image.c b/arch/arm/lib/image.c
> index 1a04e2b875..699bf44e70 100644
> --- a/arch/arm/lib/image.c
> +++ b/arch/arm/lib/image.c
> @@ -26,7 +26,8 @@ struct Image_header {
>         uint32_t        res5;
>  };
>
> -int booti_setup(ulong image, ulong *relocated_addr, ulong *size)
> +int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
> +               bool force_reloc)
>  {
>         struct Image_header *ih;
>         uint64_t dst;
> @@ -63,7 +64,7 @@ int booti_setup(ulong image, ulong *relocated_addr,
> ulong *size)
>          * images->ep.  Otherwise, relocate the image to the base of RAM
>          * since memory below it is not accessible via the linear mapping.
>          */
> -       if (le64_to_cpu(ih->flags) & BIT(3))
> +       if (!force_reloc && (le64_to_cpu(ih->flags) & BIT(3)))
>                 dst = image - text_offset;
>         else
>                 dst = gd->bd->bi_dram[0].start;
> diff --git a/cmd/booti.c b/cmd/booti.c
> index 45fbb99b68..04353b68ec 100644
> --- a/cmd/booti.c
> +++ b/cmd/booti.c
> @@ -37,7 +37,7 @@ static int booti_start(cmd_tbl_t *cmdtp, int flag, int
> argc,
>                 debug("*  kernel: cmdline image address = 0x%08lx\n", ld);
>         }
>
> -       ret = booti_setup(ld, &relocated_addr, &image_size);
> +       ret = booti_setup(ld, &relocated_addr, &image_size, false);
>         if (ret != 0)
>                 return 1;
>
> diff --git a/include/image.h b/include/image.h
> index 95d5934344..420b8ff576 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -17,6 +17,7 @@
>
>  #include "compiler.h"
>  #include <asm/byteorder.h>
> +#include <stdbool.h>
>
>  /* Define this to avoid #ifdefs later on */
>  struct lmb;
> @@ -881,9 +882,11 @@ int bootz_setup(ulong image, ulong *start, ulong
> *end);
>   * @image: Address of image
>   * @start: Returns start address of image
>   * @size : Returns size image
> + * @force_reloc: Ignore image->ep field, always place image to RAM start
>   * @return 0 if OK, 1 if the image was not recognised
>   */
> -int booti_setup(ulong image, ulong *relocated_addr, ulong *size);
> +int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
> +               bool force_reloc);
>
>  /*******************************************************************/
>  /* New uImage format specific code (prefixed with fit_) */
>

Reviewed-By: Bin Chen <bin.chen at linaro.org>


> --
> 2.17.1
>
>


-- 
Regards,
Bin


More information about the U-Boot mailing list