Message ID | 20250216175545.35079-2-contact@artur-rojek.eu (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | J2 Turtle Board fixes | expand |
On 2/16/25 11:55, Artur Rojek wrote: > J2 based devices expect to find a devicetree blob at the end of the bss > section. As of a77725a9a3c5, libfdt enforces 8-byte alignment for the > dtb, causing J2 devices to fail early in sh_fdt_init. > > As J2 loader firmware calculates the dtb location based on the kernel > image .bss section size, rather than the __bss_stop symbol offset, the > required alignment can't be enforced with BSS_SECTION(0, PAGE_SIZE, 8). > Instead, inline modified version of the above macro, which grows .bss > by the required size. > > While this change affects all existing SH boards, it should be benign on > platforms which don't need this alignment. > > Signed-off-by: Artur Rojek <contact@artur-rojek.eu> Tested-by: Rob Landley <rob@landley.net> Rob
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index 9644fe187a3f..008c30289eaa 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S @@ -71,7 +71,20 @@ SECTIONS . = ALIGN(PAGE_SIZE); __init_end = .; - BSS_SECTION(0, PAGE_SIZE, 4) + __bss_start = .; + SBSS(0) + . = ALIGN(PAGE_SIZE); + .bss : AT(ADDR(.bss) - LOAD_OFFSET) { + BSS_FIRST_SECTIONS + . = ALIGN(PAGE_SIZE); + *(.bss..page_aligned) + . = ALIGN(PAGE_SIZE); + *(.dynbss) + *(BSS_MAIN) + *(COMMON) + . = ALIGN(8); + } + __bss_stop = .; _end = . ; STABS_DEBUG
J2 based devices expect to find a devicetree blob at the end of the bss section. As of a77725a9a3c5, libfdt enforces 8-byte alignment for the dtb, causing J2 devices to fail early in sh_fdt_init. As J2 loader firmware calculates the dtb location based on the kernel image .bss section size, rather than the __bss_stop symbol offset, the required alignment can't be enforced with BSS_SECTION(0, PAGE_SIZE, 8). Instead, inline modified version of the above macro, which grows .bss by the required size. While this change affects all existing SH boards, it should be benign on platforms which don't need this alignment. Signed-off-by: Artur Rojek <contact@artur-rojek.eu> --- arch/sh/kernel/vmlinux.lds.S | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)