On 06/04/2018 08:02 PM, Tom Rini wrote: > On Mon, Jun 04, 2018 at 07:59:46PM +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]> >> --- >> V2: Protect the ARM64 booti bit with if IS_ENABLED(CMD_BOOTI) >> --- >> common/bootm.c | 21 +++++++++++++++++++-- >> 1 file changed, 19 insertions(+), 2 deletions(-) >> >> diff --git a/common/bootm.c b/common/bootm.c >> index e789f6818a..e056d7b31f 100644 >> --- a/common/bootm.c >> +++ b/common/bootm.c >> @@ -202,8 +202,25 @@ 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; >> +#if CONFIG_IS_ENABLED(CMD_BOOTI) >> + 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 >> +#endif >> + { >> + images.os.load = images.os.image_start; >> + images.ep += images.os.image_start; >> + } > > Sorry, we don't need #if tests here, we can make use of > CONFIG_IS_ENABLED(..) in the code itself so that we do get coverage but > not bloat (and also avoid style things). Thanks!
Aha -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

