MIPS: vmlinux.lds.S: align raw appended dtb to 8 bytes
authorBjørn Mork <bjorn@mork.no>
Sun, 7 Mar 2021 18:23:01 +0000 (19:23 +0100)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Mon, 8 Mar 2021 17:36:08 +0000 (18:36 +0100)
The devicetree specification requires 8-byte alignment in
memory. This is now enforced by libfdt since commit 79edff12060f
("scripts/dtc: Update to upstream version v1.6.0-51-g183df9e9c2b9")
which included the upstream commit 5e735860c478 ("libfdt: Check for
8-byte address alignment in fdt_ro_probe_()").

This broke the MIPS raw appended DTBs which would be appended to
the image immediately following the initramfs section.  This ends
with a 32bit size, resulting in a 4-byte alignment of the DTB.

Fix by padding with zeroes to 8-bytes when MIPS_RAW_APPENDED_DTB
is defined.

Fixes: 79edff12060f ("scripts/dtc: Update to upstream version v1.6.0-51-g183df9e9c2b9")
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Frank Rowand <frowand.list@gmail.com>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/kernel/vmlinux.lds.S

index 4b4e39b..1234834 100644 (file)
@@ -173,7 +173,11 @@ SECTIONS
 #endif
 
 #ifdef CONFIG_MIPS_RAW_APPENDED_DTB
-       STRUCT_ALIGN();
+       .fill : {
+               FILL(0);
+               BYTE(0);
+               . = ALIGN(8);
+       }
        __appended_dtb = .;
        /* leave space for appended DTB */
        . += 0x100000;