ipq40xx: fix broken image generation for EX6150v2
authorDavid Bauer <mail@david-bauer.net>
Fri, 7 Jun 2024 17:23:56 +0000 (19:23 +0200)
committerDavid Bauer <mail@david-bauer.net>
Sat, 8 Jun 2024 00:09:15 +0000 (02:09 +0200)
commitde59fc45402ff03e320264c8204f6928090534ad
tree2769c4014b3cfadfb7f3f943484614033cd8ee81
parent17d8c5825e6f5c5d2e4d2c320c3b4b797f4ca0e9
ipq40xx: fix broken image generation for EX6150v2

All NETGEAR EX6150v2 validate the rootfs for which OpenWrt places a
fakeheader at the position, where the bootloader expects it.

Some EX6150v2 bootloaders do however make a broken assumption about
where the rootfs starts. This is due to them calculating the rootfs
start not based upon the kernel-length but the string-offset of the
FIT-image.

We have to be compatible with both this broken as well as the valid
calculation. So we do relocate the FDT string section to a
block-boundary and enlarge the FIT image to end at this boundary +
BLOCKSIZE / 2. This way, both the broken as well as correct calculations
do expect the rootfs-header at the same position.

It is worth noting, that this is a rare edge-case in which only happens
if the image-length as well as the start of the string-section are not
placed in the same erase-block. This is an edge-case which happens very
rarely (thus it was not spotted prior).

Affected:
 - U-Boot 2012.07 (Jun 16 2016 - 11:59:37)

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 8f9546f7b0a14f3afa813e39ed45c968ece24464)
target/linux/ipq40xx/image/generic.mk
target/linux/ipq40xx/image/netgear-fit-padding.py [new file with mode: 0755]