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

Tom Rini trini at konsulko.com
Mon Jun 4 00:59:53 UTC 2018


On Sat, Jun 02, 2018 at 11:36:00PM +0200, Marek Vasut 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>
> ---
>  arch/arm/lib/image.c | 5 +++--
>  cmd/booti.c          | 2 +-
>  include/image.h      | 4 +++-
>  3 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/lib/image.c b/arch/arm/lib/image.c
> index 1a04e2b875..08c7b8a54f 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,
> +		int ignore_ep)

This should be 'bool' not 'int'.

>  {
>  	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 (!ignore_ep && (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..6d449b1995 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, 0);
>  	if (ret != 0)
>  		return 1;
>  
> diff --git a/include/image.h b/include/image.h
> index 95d5934344..0f70f2a9d2 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -881,9 +881,11 @@ int bootz_setup(ulong image, ulong *start, ulong *end);
>   * @image: Address of image
>   * @start: Returns start address of image
>   * @size : Returns size image
> + * @ignore_ep: Ignore image->ep field, always place image to RAM start

First, to quote the kernel doc here:
" Bit 3:        Kernel physical placement
                        0 - 2MB aligned base should be as close as possible
                            to the base of DRAM, since memory below it is not
                            accessible via the linear mapping
                        1 - 2MB aligned base may be anywhere in physical
                            memory"

maybe call it "force_reloc_to_base" ?  Or at least something about
"force"

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180603/9d225ec2/attachment.sig>


More information about the U-Boot mailing list