On Sat, Jun 02, 2018 at 11:36:01PM +0200, Marek Vasut wrote: > The ARM64 has 2 MiB alignment requirement for the kernel. When using > fitImage, this requirement may by violated, the kernel will thus be > executed from unaligned address and fail to boot. Do what booti does > and run booti_setup() for kernel_noload images on arm64 to obtain a > suitable aligned address to which the image shall be relocated. > > Signed-off-by: Marek Vasut <[email protected]> > Cc: Bin Chen <[email protected]> > Cc: Masahiro Yamada <[email protected]> > Cc: Tom Rini <[email protected]> > --- > common/bootm.c | 18 ++++++++++++++++-- > 1 file changed, 16 insertions(+), 2 deletions(-) > > diff --git a/common/bootm.c b/common/bootm.c > index a0ffc1cd67..5b0e755ded 100644 > --- a/common/bootm.c > +++ b/common/bootm.c > @@ -198,8 +198,22 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int > argc, > } > > if (images.os.type == IH_TYPE_KERNEL_NOLOAD) { > - images.os.load = images.os.image_start; > - images.ep += images.os.load; > + ulong image_addr; > + ulong image_size; > + > + if (images.os.arch == IH_ARCH_ARM64) { > + ret = booti_setup(images.os.image_start, &image_addr, > + &image_size, 1); > + if (ret != 0) > + return 1; > + > + images.os.type = IH_TYPE_KERNEL; > + images.os.load = image_addr; > + images.ep = image_addr; > + } else { > + images.os.load = images.os.image_start; > + images.ep += images.os.image_start; > + }
We need to (and using if (IS_ENABLED(...)) would be good for readability) make sure this change doesn't cause size growth on all targets, only when CONFIG_CMD_BOOTI is setup, as it also won't link otherwise. Thanks! -- Tom
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

