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 <[email protected]> > Cc: Bin Chen <[email protected]> > Cc: Masahiro Yamada <[email protected]> > Cc: Tom Rini <[email protected]> > --- > 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
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

