Commit 6c81c32f authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds

calibrate_delay() must be __cpuinit

calibrate_delay() must be __cpuinit, not __{dev,}init.

I've verified that this is correct for all users.

While doing the latter, I also did the following cleanups:
- remove pointless additional prototypes in C files
- ensure all users #include <linux/delay.h>

This fixes the following section mismatches with CONFIG_HOTPLUG=n,
CONFIG_HOTPLUG_CPU=y:

WARNING: vmlinux.o(.text+0x1128d): Section mismatch: reference to .init.text.1:calibrate_delay (between 'check_cx686_slop' and 'set_cx86_reorder')
WARNING: vmlinux.o(.text+0x25102): Section mismatch: reference to .init.text.1:calibrate_delay (between 'smp_callin' and 'cpu_coregroup_map')
Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Christian Zankel <chris@zankel.net>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent eb38a996
...@@ -77,10 +77,6 @@ int smp_num_probed; /* Internal processor count */ ...@@ -77,10 +77,6 @@ int smp_num_probed; /* Internal processor count */
int smp_num_cpus = 1; /* Number that came online. */ int smp_num_cpus = 1; /* Number that came online. */
EXPORT_SYMBOL(smp_num_cpus); EXPORT_SYMBOL(smp_num_cpus);
extern void calibrate_delay(void);
/* /*
* Called by both boot and secondaries to move global data into * Called by both boot and secondaries to move global data into
* per-processor storage. * per-processor storage.
......
...@@ -708,7 +708,7 @@ static void __init reserve_dma_coherent(void) ...@@ -708,7 +708,7 @@ static void __init reserve_dma_coherent(void)
/* /*
* calibrate the delay loop * calibrate the delay loop
*/ */
void __init calibrate_delay(void) void __cpuinit calibrate_delay(void)
{ {
loops_per_jiffy = __delay_loops_MHz * (1000000 / HZ); loops_per_jiffy = __delay_loops_MHz * (1000000 / HZ);
......
...@@ -120,7 +120,6 @@ static volatile unsigned long go[SLAVE + 1]; ...@@ -120,7 +120,6 @@ static volatile unsigned long go[SLAVE + 1];
#define DEBUG_ITC_SYNC 0 #define DEBUG_ITC_SYNC 0
extern void __devinit calibrate_delay (void);
extern void start_ap (void); extern void start_ap (void);
extern unsigned long ia64_iobase; extern unsigned long ia64_iobase;
......
...@@ -52,7 +52,6 @@ int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */ ...@@ -52,7 +52,6 @@ int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */
EXPORT_SYMBOL(phys_cpu_present_map); EXPORT_SYMBOL(phys_cpu_present_map);
EXPORT_SYMBOL(cpu_online_map); EXPORT_SYMBOL(cpu_online_map);
extern void __init calibrate_delay(void);
extern void cpu_idle(void); extern void cpu_idle(void);
/* Number of TCs (or siblings in Intel speak) per CPU core */ /* Number of TCs (or siblings in Intel speak) per CPU core */
......
...@@ -113,8 +113,6 @@ static inline void debug_calc_bogomips(void) ...@@ -113,8 +113,6 @@ static inline void debug_calc_bogomips(void)
* result. We backup/restore the value to avoid affecting the * result. We backup/restore the value to avoid affecting the
* core cpufreq framework's own calculation. * core cpufreq framework's own calculation.
*/ */
extern void calibrate_delay(void);
unsigned long save_lpj = loops_per_jiffy; unsigned long save_lpj = loops_per_jiffy;
calibrate_delay(); calibrate_delay();
loops_per_jiffy = save_lpj; loops_per_jiffy = save_lpj;
......
...@@ -19,12 +19,12 @@ ...@@ -19,12 +19,12 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/swap.h> #include <linux/swap.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/delay.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
#include <asm/delay.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
...@@ -41,8 +41,6 @@ ...@@ -41,8 +41,6 @@
extern ctxd_t *srmmu_ctx_table_phys; extern ctxd_t *srmmu_ctx_table_phys;
extern void calibrate_delay(void);
static volatile int smp_processors_ready = 0; static volatile int smp_processors_ready = 0;
static int smp_highest_cpu; static int smp_highest_cpu;
extern volatile unsigned long cpu_callin_map[NR_CPUS]; extern volatile unsigned long cpu_callin_map[NR_CPUS];
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/swap.h> #include <linux/swap.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/delay.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
...@@ -23,7 +25,6 @@ ...@@ -23,7 +25,6 @@
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/delay.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
...@@ -39,8 +40,6 @@ ...@@ -39,8 +40,6 @@
extern ctxd_t *srmmu_ctx_table_phys; extern ctxd_t *srmmu_ctx_table_phys;
extern void calibrate_delay(void);
extern volatile unsigned long cpu_callin_map[NR_CPUS]; extern volatile unsigned long cpu_callin_map[NR_CPUS];
extern unsigned char boot_cpu_id; extern unsigned char boot_cpu_id;
......
...@@ -46,8 +46,6 @@ ...@@ -46,8 +46,6 @@
#include <asm/ldc.h> #include <asm/ldc.h>
#include <asm/hypervisor.h> #include <asm/hypervisor.h>
extern void calibrate_delay(void);
int sparc64_multi_core __read_mostly; int sparc64_multi_core __read_mostly;
cpumask_t cpu_possible_map __read_mostly = CPU_MASK_NONE; cpumask_t cpu_possible_map __read_mostly = CPU_MASK_NONE;
......
...@@ -83,8 +83,6 @@ static char cyrix_model_mult2[] __cpuinitdata = "12233445"; ...@@ -83,8 +83,6 @@ static char cyrix_model_mult2[] __cpuinitdata = "12233445";
* FIXME: our newer udelay uses the tsc. We don't need to frob with SLOP * FIXME: our newer udelay uses the tsc. We don't need to frob with SLOP
*/ */
extern void calibrate_delay(void) __init;
static void __cpuinit check_cx686_slop(struct cpuinfo_x86 *c) static void __cpuinit check_cx686_slop(struct cpuinfo_x86 *c)
{ {
unsigned long flags; unsigned long flags;
......
...@@ -202,8 +202,6 @@ void __cpuinit smp_store_cpu_info(int id) ...@@ -202,8 +202,6 @@ void __cpuinit smp_store_cpu_info(int id)
; ;
} }
extern void calibrate_delay(void);
static atomic_t init_deasserted; static atomic_t init_deasserted;
static void __cpuinit smp_callin(void) static void __cpuinit smp_callin(void)
......
...@@ -444,8 +444,6 @@ static __u32 __init setup_trampoline(void) ...@@ -444,8 +444,6 @@ static __u32 __init setup_trampoline(void)
static void __init start_secondary(void *unused) static void __init start_secondary(void *unused)
{ {
__u8 cpuid = hard_smp_processor_id(); __u8 cpuid = hard_smp_processor_id();
/* external functions not defined in the headers */
extern void calibrate_delay(void);
cpu_init(); cpu_init();
......
...@@ -204,7 +204,7 @@ irqreturn_t timer_interrupt (int irq, void *dev_id) ...@@ -204,7 +204,7 @@ irqreturn_t timer_interrupt (int irq, void *dev_id)
} }
#ifndef CONFIG_GENERIC_CALIBRATE_DELAY #ifndef CONFIG_GENERIC_CALIBRATE_DELAY
void __devinit calibrate_delay(void) void __cpuinit calibrate_delay(void)
{ {
loops_per_jiffy = CCOUNT_PER_JIFFY; loops_per_jiffy = CCOUNT_PER_JIFFY;
printk("Calibrating delay loop (skipped)... " printk("Calibrating delay loop (skipped)... "
......
...@@ -422,7 +422,7 @@ void s390_adjust_jiffies(void) ...@@ -422,7 +422,7 @@ void s390_adjust_jiffies(void)
/* /*
* calibrate the delay loop * calibrate the delay loop
*/ */
void __init calibrate_delay(void) void __cpuinit calibrate_delay(void)
{ {
s390_adjust_jiffies(); s390_adjust_jiffies();
/* Print the good old Bogomips line .. */ /* Print the good old Bogomips line .. */
......
...@@ -28,7 +28,7 @@ __setup("lpj=", lpj_setup); ...@@ -28,7 +28,7 @@ __setup("lpj=", lpj_setup);
#define DELAY_CALIBRATION_TICKS ((HZ < 100) ? 1 : (HZ/100)) #define DELAY_CALIBRATION_TICKS ((HZ < 100) ? 1 : (HZ/100))
#define MAX_DIRECT_CALIBRATION_RETRIES 5 #define MAX_DIRECT_CALIBRATION_RETRIES 5
static unsigned long __devinit calibrate_delay_direct(void) static unsigned long __cpuinit calibrate_delay_direct(void)
{ {
unsigned long pre_start, start, post_start; unsigned long pre_start, start, post_start;
unsigned long pre_end, end, post_end; unsigned long pre_end, end, post_end;
...@@ -101,7 +101,7 @@ static unsigned long __devinit calibrate_delay_direct(void) ...@@ -101,7 +101,7 @@ static unsigned long __devinit calibrate_delay_direct(void)
return 0; return 0;
} }
#else #else
static unsigned long __devinit calibrate_delay_direct(void) {return 0;} static unsigned long __cpuinit calibrate_delay_direct(void) {return 0;}
#endif #endif
/* /*
...@@ -111,7 +111,7 @@ static unsigned long __devinit calibrate_delay_direct(void) {return 0;} ...@@ -111,7 +111,7 @@ static unsigned long __devinit calibrate_delay_direct(void) {return 0;}
*/ */
#define LPS_PREC 8 #define LPS_PREC 8
void __devinit calibrate_delay(void) void __cpuinit calibrate_delay(void)
{ {
unsigned long ticks, loopbit; unsigned long ticks, loopbit;
int lps_precision = LPS_PREC; int lps_precision = LPS_PREC;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment