Commit 87db537d authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Ralf Baechle

MIPS: vmlinux: create a section for appended DTB

For bootloaders that support booting only ELF kernels and load only ELF
segments to memory there is no easy way to supply DTB without kernel
recompilation. For that purpose, create a section called .appended_dtb
that can be later updated with board-specific DTB using binutils e.g. at
kernel installation time.
Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@nokia.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/11114/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent d00d9203
...@@ -2736,6 +2736,20 @@ choice ...@@ -2736,6 +2736,20 @@ choice
help help
Do not enable appended dtb support. Do not enable appended dtb support.
config MIPS_ELF_APPENDED_DTB
bool "vmlinux"
help
With this option, the boot code will look for a device tree binary
DTB) included in the vmlinux ELF section .appended_dtb. By default
it is empty and the DTB can be appended using binutils command
objcopy:
objcopy --update-section .appended_dtb=<filename>.dtb vmlinux
This is meant as a backward compatiblity convenience for those
systems with a bootloader that can't be upgraded to accommodate
the documented boot protocol using a device tree.
config MIPS_RAW_APPENDED_DTB config MIPS_RAW_APPENDED_DTB
bool "vmlinux.bin" bool "vmlinux.bin"
help help
......
...@@ -39,6 +39,10 @@ ...@@ -39,6 +39,10 @@
#include <asm/smp-ops.h> #include <asm/smp-ops.h>
#include <asm/prom.h> #include <asm/prom.h>
#ifdef CONFIG_MIPS_ELF_APPENDED_DTB
const char __section(.appended_dtb) __appended_dtb[0x100000];
#endif /* CONFIG_MIPS_ELF_APPENDED_DTB */
struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly;
EXPORT_SYMBOL(cpu_data); EXPORT_SYMBOL(cpu_data);
......
...@@ -132,6 +132,11 @@ SECTIONS ...@@ -132,6 +132,11 @@ SECTIONS
__appended_dtb = .; __appended_dtb = .;
/* leave space for appended DTB */ /* leave space for appended DTB */
. += 0x100000; . += 0x100000;
#elif defined(CONFIG_MIPS_ELF_APPENDED_DTB)
.appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
*(.appended_dtb)
KEEP(*(.appended_dtb))
}
#endif #endif
/* /*
* Align to 64K in attempt to eliminate holes before the * Align to 64K in attempt to eliminate holes before the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment