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:08:35 +0000 (02:08 +0200)
commit8f9546f7b0a14f3afa813e39ed45c968ece24464
treed49c80d00d8d0374cb5034e186c648c5c69b2bab
parenteea666d5835f484c061a6682d832bfb945e9ba2c
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>
target/linux/ipq40xx/image/generic.mk
target/linux/ipq40xx/image/netgear-fit-padding.py [new file with mode: 0755]