Message ID | 12d0909b1612fb6d2caa42b4fda5e5ae63d623a3.1724159867.git.andrea.porta@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for RaspberryPi RP1 PCI device using a DT overlay | expand |
Hi Stephen, On 12:46 Fri 30 Aug , Stephen Boyd wrote: > Quoting Andrea della Porta (2024-08-20 07:36:07) > > The special section .dtb.init.rodata contains dtb and dtbo compiled > > as objects inside the kernel and ends up in .init.data sectiion that > > will be discarded early after the init phase. This is a problem for > > builtin drivers that apply dtb overlay at runtime since this happens > > later (e.g. during bus enumeration) and also for modules that should > > be able to do it dynamically during runtime. > > Move the dtb section to .data. > > > > Signed-off-by: Andrea della Porta <andrea.porta@suse.com> > > --- > > include/asm-generic/vmlinux.lds.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > > index ad6afc5c4918..3ae9097774b0 100644 > > --- a/include/asm-generic/vmlinux.lds.h > > +++ b/include/asm-generic/vmlinux.lds.h > > @@ -365,6 +365,7 @@ > > TRACE_PRINTKS() \ > > BPF_RAW_TP() \ > > TRACEPOINT_STR() \ > > + KERNEL_DTB() \ > > The KERNEL_DTB() macro shows the section name is dtb.init.rodata. Can > you remove the ".init." part if this isn't initdata anymore? And > shouldn't it be in the RO_DATA() macro? Ack. > > It would be nice to keep the initdata properties when this isn't used > after init as well. Perhaps we need another macro and/or filename to > indicate that the DTB{O} can be thrown away after init/module init. We can certainly add some more filename extension that would place the relevant data in a droppable section. Throwing away the dtb/o after init is like the actual KERNEL_DTB macro that is adding teh data to section .init.data, but this would mean t would be useful only at very early init stage, just like for CONFIG_OF_UNITTEST. Throwing after module init could be more difficult though, I think, for example we're not sure when to discard the section in case of deferred modules probe. Many thanks, Andrea
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index ad6afc5c4918..3ae9097774b0 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -365,6 +365,7 @@ TRACE_PRINTKS() \ BPF_RAW_TP() \ TRACEPOINT_STR() \ + KERNEL_DTB() \ KUNIT_TABLE() /* @@ -683,7 +684,6 @@ TIMER_OF_TABLES() \ CPU_METHOD_OF_TABLES() \ CPUIDLE_METHOD_OF_TABLES() \ - KERNEL_DTB() \ IRQCHIP_OF_MATCH_TABLE() \ ACPI_PROBE_TABLE(irqchip) \ ACPI_PROBE_TABLE(timer) \
The special section .dtb.init.rodata contains dtb and dtbo compiled as objects inside the kernel and ends up in .init.data sectiion that will be discarded early after the init phase. This is a problem for builtin drivers that apply dtb overlay at runtime since this happens later (e.g. during bus enumeration) and also for modules that should be able to do it dynamically during runtime. Move the dtb section to .data. Signed-off-by: Andrea della Porta <andrea.porta@suse.com> --- include/asm-generic/vmlinux.lds.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)