On Wed, Jan 28, 2026 at 04:56:07PM +0000, ChiaWei Wang wrote: > > > From: Tom Rini <[email protected]> > > Sent: Wednesday, January 28, 2026 10:31 PM > > > > On Wed, Jan 28, 2026 at 12:13:12AM +0000, ChiaWei Wang wrote: > > > > From: Tom Rini <[email protected]> > > > > Sent: Wednesday, January 28, 2026 5:32 AM > > > > > > > > As of v2026.01, no platforms contain any rel.dyn sections in their > > > > xPL phase images. Their inclusion in linker scripts initially was an > > > > oversight as part of taking the full U-Boot linker scripts and > > > > modifying them down. Then in commit > > > > 8b0ebe054bb3 ("arm: Update linker scripts to ensure appended device > > > > tree is > > > > aligned") these sections were used to force correct alignment for > > > > the device tree. This however, lead to a different problem. > > > > > > > > That problem is that when we do not have a separate BSS section in > > > > SPL we instead would overlay the BSS with the rel.dyn section, in > > > > the common linker script case. This in turn lead to creating an > > > > incorrectly sized BSS "pad" file sometimes (depending on arbitrary > > > > changes > > within the rest of the binary itself). > > > > This in turn lead to the dtb being in the wrong location in the > > > > binary and not found at run time. > > > > > > > > This commit fixes a few things: > > > > - Remove the rel.dyn section from all ARM SPL linker scripts. > > > > - In turn, this moves the dtb alignment statement in to another section. > > > > - For ast2600 which uses CONFIG_POSITION_INDEPENDENT we need to > > keep > > > > the > > > > symbols however. > > > > > > > > Tested-by: Fabio Estevam <[email protected]> > > > > Reported-by: Fabio Estevam <[email protected]> > > > > Co-developed-by: Ilias Apalodimas <[email protected]> > > > > Signed-off-by: Tom Rini <[email protected]> > > > > --- > > > > I sent this off-list to Fabio first to confirm it finally fixed things. > > > > > > > > Cc: "Chia-Wei, Wang" <[email protected]> > > > > Cc: Adam Ford <[email protected]> > > > > --- > > > > arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 8 -------- > > > > arch/arm/cpu/u-boot-spl.lds | 13 ++----------- > > > > arch/arm/mach-aspeed/ast2600/u-boot-spl.lds | 16 +++++++--------- > > > > board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 9 ++------- > > > > 4 files changed, 11 insertions(+), 35 deletions(-) > > > > > > > > diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds > > > > b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds > > > > index b4adae272eba..ac166d1d8526 100644 > > > > --- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds > > > > +++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds > > > > @@ -33,14 +33,6 @@ SECTIONS > > > > *(.data*) > > > > } > > > > > > > > - . = ALIGN(4); > > > > - > > > > - .rel.dyn : { > > > > - __rel_dyn_start = .; > > > > - *(.rel*) > > > > - __rel_dyn_end = .; > > > > - } > > > > - > > > > .bss : { > > > > . = ALIGN(4); > > > > __bss_start = .; > > > > diff --git a/arch/arm/cpu/u-boot-spl.lds > > > > b/arch/arm/cpu/u-boot-spl.lds index > > > > d780a5060774..c578c3ebf821 100644 > > > > --- a/arch/arm/cpu/u-boot-spl.lds > > > > +++ b/arch/arm/cpu/u-boot-spl.lds > > > > @@ -41,23 +41,14 @@ SECTIONS > > > > __binman_sym_start = .; > > > > KEEP(*(SORT(.binman_sym*))); > > > > __binman_sym_end = .; > > > > - } > > > > - > > > > - . = ALIGN(4); > > > > - > > > > - __image_copy_end = .; > > > > - > > > > - .rel.dyn : { > > > > - __rel_dyn_start = .; > > > > - *(.rel*) > > > > - __rel_dyn_end = .; > > > > . = ALIGN(8); > > > > } > > > > > > > > + __image_copy_end = .; > > > > _image_binary_end = .; > > > > _end = .; > > > > > > > > - .bss __rel_dyn_start (OVERLAY) : { > > > > + .bss : { > > > > __bss_start = .; > > > > *(.bss*) > > > > . = ALIGN(8); > > > > diff --git a/arch/arm/mach-aspeed/ast2600/u-boot-spl.lds > > > > b/arch/arm/mach-aspeed/ast2600/u-boot-spl.lds > > > > index c9664a6ce566..303ace2f61ca 100644 > > > > --- a/arch/arm/mach-aspeed/ast2600/u-boot-spl.lds > > > > +++ b/arch/arm/mach-aspeed/ast2600/u-boot-spl.lds > > > > @@ -49,19 +49,17 @@ SECTIONS > > > > __binman_sym_start = .; > > > > KEEP(*(SORT(.binman_sym*))); > > > > __binman_sym_end = .; > > > > + . = ALIGN(8); > > > > } > .nor > > > > > > > > - . = ALIGN(4); > > > > + /* > > > > + * These platforms enable CONFIG_POSITION_INDEPENDENT and so > > need > > > > + * these names. The always however hold the same value. > > > > + */ > > > > + __rel_dyn_start = .; > > > > + __rel_dyn_end = .; > > > > > > > > __image_copy_end = .; > > > > - > > > > - .rel.dyn : { > > > > - __rel_dyn_start = .; > > > > - *(.rel*) > > > > - __rel_dyn_end = .; > > > > - . = ALIGN(8); > > > > - } > .nor > > > > - > > > > _end = .; > > > > _image_binary_end = .; > > > > > > > > > > Thanks for the fix. > > > Aspeed enables PIE mainly for the U-Boot execution. > > > For SPL, the symbols should be fine to be the same. > > > > > > Reviewed-by: "Chia-Wei, Wang" <[email protected]> > > > > Thanks. Does SPL really execute from address 0x0 on this platform? What > > confused me for a moment when looking in to this is that we have a non-zero > > CONFIG_TEXT_BASE but CONFIG_SPL_TEXT_BASE=0x0 > > Yes, SPL executes from address 0x0. > This is backed by the configurable bus address decoding. > Depending on the boot media, ROM will configure the bus setting so > that 0x0 will be decoded to either SRAM or SPI NOR Flash for XIP.
Ah, neat! It would be nice to have that in the board docs someday ;) -- Tom
signature.asc
Description: PGP signature

