[PATCH] Revert "Fix data abort caused by mis-aligning FIT data"

Reuben Dowle reuben.dowle at 4rf.com
Mon Oct 19 23:50:51 CEST 2020


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.

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.

-----Original Message-----
From: Marek Vasut <marex at denx.de> 
Sent: Tuesday, 20 October 2020 10:40 am
To: u-boot at lists.denx.de
Cc: Marek Vasut <marex at denx.de>; Reuben Dowle <reuben.dowle at 4rf.com>; Tom Rini <trini at konsulko.com>
Subject: [PATCH] Revert "Fix data abort caused by mis-aligning FIT data"

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 <marex at denx.de>
Cc: Reuben Dowle <reuben.dowle at 4rf.com>
Cc: Tom Rini <trini at 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



More information about the U-Boot mailing list