Message ID | 1344437248-20560-2-git-send-email-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/08/12 07:47, Arnd Bergmann wrote: > The init_cpu_topology function can be put into the __init section > and discarded after boot, because it is only called from > smp_prepare_cpus, which is also marked __init. This was reported > by gcc after Vincent Guittot added the parse_dt_topology function > in 339ca09d7ada "ARM: 7463/1: topology: Update cpu_power according to DT > information". > > Without this patch, building kzm9g_defconfig results in: > > WARNING: vmlinux.o(.text+0xb5a0): Section mismatch in reference from the function init_cpu_topology() to the function .init.text:parse_dt_topology() > The function init_cpu_topology() references > the function __init parse_dt_topology(). > This is often because init_cpu_topology lacks a __init > annotation or the annotation of parse_dt_topology is wrong. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Vincent Guittot <vincent.guittot@linaro.org> > Cc: Namhyung Kim <namhyung@kernel.org> > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > --- This is already in the patch tracker http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7482/1 I also notice that store_cpu_topology() should be marked __cpuinit and update_siblings_mask, middle_capacity, cpu_capacity, and update_cpu_power should be static. We should probably also rename update_cpu_power() so as to not conflict with the one in kernel/sched/fair.c
On Wednesday 08 August 2012, Stephen Boyd wrote: > > On 08/08/12 07:47, Arnd Bergmann wrote: > > The init_cpu_topology function can be put into the __init section > > and discarded after boot, because it is only called from > > smp_prepare_cpus, which is also marked __init. This was reported > > by gcc after Vincent Guittot added the parse_dt_topology function > > in 339ca09d7ada "ARM: 7463/1: topology: Update cpu_power according to DT > > information". > > > > Without this patch, building kzm9g_defconfig results in: > > > > WARNING: vmlinux.o(.text+0xb5a0): Section mismatch in reference from the function init_cpu_topology() to the function .init.text:parse_dt_topology() > > The function init_cpu_topology() references > > the function __init parse_dt_topology(). > > This is often because init_cpu_topology lacks a __init > > annotation or the annotation of parse_dt_topology is wrong. > > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Cc: Vincent Guittot <vincent.guittot@linaro.org> > > Cc: Namhyung Kim <namhyung@kernel.org> > > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > > --- > > This is already in the patch tracker > > http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7482/1 Ok, dropped here. > I also notice that store_cpu_topology() should be marked __cpuinit and > update_siblings_mask, middle_capacity, cpu_capacity, and > update_cpu_power should be static. We should probably also rename > update_cpu_power() so as to not conflict with the one in kernel/sched/fair.c Yes, all good points. Arnd
diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c index 198b084..26c12c6 100644 --- a/arch/arm/kernel/topology.c +++ b/arch/arm/kernel/topology.c @@ -321,7 +321,7 @@ void store_cpu_topology(unsigned int cpuid) * init_cpu_topology is called at boot when only one cpu is running * which prevent simultaneous write access to cpu_topology array */ -void init_cpu_topology(void) +void __init init_cpu_topology(void) { unsigned int cpu;
The init_cpu_topology function can be put into the __init section and discarded after boot, because it is only called from smp_prepare_cpus, which is also marked __init. This was reported by gcc after Vincent Guittot added the parse_dt_topology function in 339ca09d7ada "ARM: 7463/1: topology: Update cpu_power according to DT information". Without this patch, building kzm9g_defconfig results in: WARNING: vmlinux.o(.text+0xb5a0): Section mismatch in reference from the function init_cpu_topology() to the function .init.text:parse_dt_topology() The function init_cpu_topology() references the function __init parse_dt_topology(). This is often because init_cpu_topology lacks a __init annotation or the annotation of parse_dt_topology is wrong. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Vincent Guittot <vincent.guittot@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/kernel/topology.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)