]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ARM: 7780/1: add missing linker section markup to head-common.S
authorStephen Warren <swarren@nvidia.com>
Fri, 5 Jul 2013 21:59:42 +0000 (22:59 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 9 Jul 2013 08:51:35 +0000 (09:51 +0100)
Macro __INIT is used to place various code in head-common.S into the init
section. This should be matched by a closing __FINIT. Also, add an
explicit ".text" to ensure subsequent code is placed into the correct
section; __FINIT is simply a closing marker to match __INIT and doesn't
guarantee to revert to .text.

This historically caused no problem, because macro __CPUINIT was used at
the exact location where __FINIT was missing, which then placed following
code into the cpuinit section. However, with commit 22f0a2736 "init.h:
remove __cpuinit sections from the kernel" applied, __CPUINIT becomes a
no-op, thus leaving all this code in the init section, rather than the
regular text section. This caused issues such as secondary CPU boot
failures or crashes.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/head-common.S

index 5b391a689b47b7c75864937991d03cf5dbc9904a..76ab5ca506100c1883a8cebe57fd02eacd24a6d9 100644 (file)
@@ -133,6 +133,9 @@ ENTRY(lookup_processor_type)
        ldmfd   sp!, {r4 - r6, r9, pc}
 ENDPROC(lookup_processor_type)
 
+       __FINIT
+       .text
+
 /*
  * Read processor ID register (CP#15, CR0), and look up in the linker-built
  * supported processor list.  Note that we can't use the absolute addresses