linux-sg2042/arch
Russell King 90140c30a7 ARM: Fix __cpuexit section mismatch warnings
Fix:

WARNING: vmlinux.o(.text+0x247c): Section mismatch in reference from the function cpu_idle() to the function .cpuexit.text:cpu_die()
The function cpu_idle() references a function in an exit section.
Often the function cpu_die() has valid usage outside the exit section
and the fix is to remove the __cpuexit annotation of cpu_die.

WARNING: vmlinux.o(.cpuexit.text+0x3c): Section mismatch in reference from the function cpu_die() to the function .cpuinit.text:secondary_start_kernel()
The function __cpuexit cpu_die() references
a function __cpuinit secondary_start_kernel().
This is often seen when error handling in the exit function
uses functionality in the init path.
The fix is often to remove the __cpuinit annotation of
secondary_start_kernel() so it may be used outside an init section.

Sam says:
> The annotation of cpu_die() is wrong.
> To be annotated __cpuexit the function shall:
> - be used in exit context and only in exit context with HOTPLUG_CPU=n
> - be used outside exit context with HOTPLUG_CPU=y

So, this also means __cpu_disable(), __cpu_die() and twd_timer_stop() are
also wrong.  However, removing __cpuexit from cpu_die() creates:

WARNING: vmlinux.o(.text+0x6834): Section mismatch in reference from the function cpu_die() to the function .cpuinit.text:secondary_start_kernel()
The function cpu_die() references
the function __cpuinit secondary_start_kernel().
This is often because cpu_die lacks a __cpuinit
annotation or the annotation of secondary_start_kernel is wrong.

so fix this using __ref.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
2009-09-28 18:06:21 +01:00
..
alpha Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes 2009-09-26 10:51:54 -07:00
arm ARM: Fix __cpuexit section mismatch warnings 2009-09-28 18:06:21 +01:00
avr32 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2009-09-23 15:37:02 -07:00
blackfin blackfin: Cleanup linker script using new linker script macros. 2009-09-24 17:16:22 -07:00
cris Merge branch 'for-linus' of git://repo.or.cz/cris-mirror 2009-09-24 17:08:56 -07:00
frv FRV: Flash mappings for the MB93090-MB00 motherboard 2009-09-24 17:18:38 -07:00
h8300 h8300: Cleanup linker script using new linker script macros. 2009-09-24 17:16:22 -07:00
ia64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2009-09-23 18:14:11 -07:00
m32r Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev 2009-09-24 17:25:09 -07:00
m68k headers: utsname.h redux 2009-09-23 18:13:10 -07:00
m68knommu headers: utsname.h redux 2009-09-23 18:13:10 -07:00
microblaze Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze 2009-09-24 09:01:44 -07:00
mips mips: fix build of vmlinux.lds 2009-09-25 19:49:27 +02:00
mn10300 mn10300: Clean up linker script using higher-level macros. 2009-09-24 17:16:22 -07:00
parisc parisc: Remove useless altinstructions code copied from x86. 2009-09-24 17:16:21 -07:00
powerpc Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-09-24 17:22:31 -07:00
s390 sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
score Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2009-09-23 15:37:02 -07:00
sh sh: Add support DMA Engine to SH7780 2009-09-25 12:19:33 +09:00
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2009-09-26 10:08:23 -07:00
um um: Clean up linker script using standard macros. 2009-09-24 17:16:22 -07:00
x86 Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-26 10:15:33 -07:00
xtensa xtensa: Cleanup linker script using new linker script macros. 2009-09-24 17:16:21 -07:00
.gitignore
Kconfig oprofile: fix oprofile regression: select RING_BUFFER_ALLOW_SWAP 2009-09-17 15:53:42 -04:00