On 10/19/20 11:50 PM, Reuben Dowle wrote: > The alignment of 8 bytes would also work if code was expecting 4 byte > alignment. So the explanation you give for reverting this does not make sense > to me.
Well, since U-Boot 2020.10-rc5, any STM32MP1 board does no longer boot and if I revert this patch, it works again (per git bisect). But this also applies to any other arm32 boards which load fitImage in SPL, all of those boards are broken in U-Boot 2020.10. It seems that the end of the U-Boot image is at 4-byte aligned offset on arm32, and that is where the DT is also loaded ; but your patch forces the alignment to 8-bytes, so suddenly the DT location is 4-bytes off. > The version I use in production uses 4 byte alignment, but on advice of Tom > Rini I extended to 8 bytes. Maybe we could switch to just forcing 4 bytes, > although I can't see why 8 byte would not work? > > Note also that I was getting SPL data abort crashes on my arm32 target when > image size was not 4 byte aligned. So reverting this patch will break my > platform. Which platform is that ? (also, please do not top-post) [...] > This reverts commit eb39d8ba5f0d1468b01b89a2a464d18612d3ea76. > The commit breaks booting of fitImage by SPL, the system simply hangs. > This is because on arm32, the fitImage and all of its content can be aligned > to 4 bytes and U-Boot expects just that. > > Signed-off-by: Marek Vasut <ma...@denx.de> > Cc: Reuben Dowle <reuben.do...@4rf.com> > Cc: Tom Rini <tr...@konsulko.com> > --- > common/spl/spl_fit.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index > 0e27ad1d6a..a90d821c82 100644 > --- a/common/spl/spl_fit.c > +++ b/common/spl/spl_fit.c > @@ -349,12 +349,9 @@ static int spl_fit_append_fdt(struct spl_image_info > *spl_image, > > /* > * Use the address following the image as target address for the > - * device tree. Load address is aligned to 8 bytes to match the required > - * alignment specified for linux arm [1] and arm 64 [2] booting > - * [1]: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm/booting.rst#n126 > - * [2]: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm64/booting.rst#n45 > + * device tree. > */ > -image_info.load_addr = ALIGN(spl_image->load_addr + spl_image->size, 8); > +image_info.load_addr = spl_image->load_addr + spl_image->size; > > /* Figure out which device tree the board wants to use */ > node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, index++); > -- > 2.28.0 [...]