Message ID | 1228278723-1153-1-git-send-email-galak@kernel.crashing.org (mailing list archive) |
---|---|
State | Changes Requested, archived |
Delegated to: | Paul Mackerras |
Headers | show |
Kumar Gala wrote: > WARNING: vmlinux.o(.text+0x2aa): Section mismatch in reference from the variable __secondary_start to the function .devinit.text:start_secondary() > The function __secondary_start() references > the function __devinit start_secondary(). > > start_secondary gets called by __secondary_start which is in asm code so its > not marked as __devinit. Its easier to just remove the __devinit from > start_secondary than try and deal with __secondary_start. Which just gets another mismatch warning here: WARNING: arch/powerpc/kernel/built-in.o(.text+0x23cc4): Section mismatch in reference from the function .start_secondary() to the function .devinit.text:.smp_store_cpu_info() The function .start_secondary() references the function __devinit .smp_store_cpu_info(). This is often because .start_secondary lacks a __devinit annotation or the annotation of .smp_store_cpu_info is wrong. Isn't there a better way to address this? It doesn't seem right to increase the kernel's memory usage to get rid of a modpost warning.
On Dec 2, 2008, at 11:31 PM, Nathan Lynch wrote: > Kumar Gala wrote: >> WARNING: vmlinux.o(.text+0x2aa): Section mismatch in reference from >> the variable __secondary_start to the >> function .devinit.text:start_secondary() >> The function __secondary_start() references >> the function __devinit start_secondary(). >> >> start_secondary gets called by __secondary_start which is in asm >> code so its >> not marked as __devinit. Its easier to just remove the __devinit >> from >> start_secondary than try and deal with __secondary_start. > > Which just gets another mismatch warning here: > > WARNING: arch/powerpc/kernel/built-in.o(.text+0x23cc4): Section > mismatch in reference from the function .start_secondary() to the > function .devinit.text:.smp_store_cpu_info() > The function .start_secondary() references > the function __devinit .smp_store_cpu_info(). > This is often because .start_secondary lacks a __devinit > annotation or the annotation of .smp_store_cpu_info is wrong. > > Isn't there a better way to address this? It doesn't seem right to > increase the kernel's memory usage to get rid of a modpost warning. Fair.. what defconfig did you build? - k
Kumar Gala wrote: > > On Dec 2, 2008, at 11:31 PM, Nathan Lynch wrote: > >> Kumar Gala wrote: >>> WARNING: vmlinux.o(.text+0x2aa): Section mismatch in reference from >>> the variable __secondary_start to the function >>> .devinit.text:start_secondary() >>> The function __secondary_start() references >>> the function __devinit start_secondary(). >>> >>> start_secondary gets called by __secondary_start which is in asm >>> code so its >>> not marked as __devinit. Its easier to just remove the __devinit >>> from >>> start_secondary than try and deal with __secondary_start. >> >> Which just gets another mismatch warning here: >> >> WARNING: arch/powerpc/kernel/built-in.o(.text+0x23cc4): Section >> mismatch in reference from the function .start_secondary() to the >> function .devinit.text:.smp_store_cpu_info() >> The function .start_secondary() references >> the function __devinit .smp_store_cpu_info(). >> This is often because .start_secondary lacks a __devinit >> annotation or the annotation of .smp_store_cpu_info is wrong. >> >> Isn't there a better way to address this? It doesn't seem right to >> increase the kernel's memory usage to get rid of a modpost warning. > > Fair.. what defconfig did you build? Try ppc64_defconfig with HOTPLUG_CPU=n.
[oops forgot to cc the list] Nathan Lynch wrote at 2008-12-03 17:43:40: > Kumar Gala wrote: >> On Dec 2, 2008, at 11:31 PM, Nathan Lynch wrote: >>> Kumar Gala wrote: >>>> WARNING: vmlinux.o(.text+0x2aa): Section mismatch in reference from >>>> the variable __secondary_start to the function >>>> .devinit.text:start_secondary() >>>> The function __secondary_start() references >>>> the function __devinit start_secondary(). >>>> >>>> start_secondary gets called by __secondary_start which is in asm >>>> code so its >>>> not marked as __devinit. Its easier to just remove the __devinit >>>> from >>>> start_secondary than try and deal with __secondary_start. >>> >>> Which just gets another mismatch warning here: >>> >>> WARNING: arch/powerpc/kernel/built-in.o(.text+0x23cc4): Section >>> mismatch in reference from the function .start_secondary() to the >>> function .devinit.text:.smp_store_cpu_info() >>> The function .start_secondary() references >>> the function __devinit .smp_store_cpu_info(). >>> This is often because .start_secondary lacks a __devinit >>> annotation or the annotation of .smp_store_cpu_info is wrong. And other architectures want this to be cpuinit, the patch is held up because of powerpc: http://ozlabs.org/pipermail/linuxppc-dev/2008-November/064897.html >>> Isn't there a better way to address this? It doesn't seem right to >>> increase the kernel's memory usage to get rid of a modpost warning. I agree. And its easy: move the asm code to the right section with the nifty macros in linux/init.h. We can use the whitelist of .text.head and also use use cpuinit. I had a patch last July that went in this direction, but it was tangled with the relocatable kernel patches and badly timed. http://ozlabs.org/pipermail/linuxppc-dev/2008-July/059717.html hmm, I don't see 1/3 that cleaned up the function entry macro repition. I'll try to revive them and bring them up to the current tree. >> >> Fair.. what defconfig did you build? > > Try ppc64_defconfig with HOTPLUG_CPU=n. milton
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index a59d8d7..11c835e 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -487,7 +487,7 @@ static struct device_node *cpu_to_l2cache(int cpu) } /* Activate a secondary processor. */ -int __devinit start_secondary(void *unused) +int start_secondary(void *unused) { unsigned int cpu = smp_processor_id(); struct device_node *l2_cache;
WARNING: vmlinux.o(.text+0x2aa): Section mismatch in reference from the variable __secondary_start to the function .devinit.text:start_secondary() The function __secondary_start() references the function __devinit start_secondary(). start_secondary gets called by __secondary_start which is in asm code so its not marked as __devinit. Its easier to just remove the __devinit from start_secondary than try and deal with __secondary_start. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- arch/powerpc/kernel/smp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)