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: Adrian 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
eb38a996eb
Коммит
6c81c32f96
|
@ -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)
|
||||||
/*
|
/*
|
||||||
* 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];
|
||||||
|
|
||||||
#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 */
|
||||||
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)
|
||||||
* 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 @@
|
||||||
#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 @@
|
||||||
|
|
||||||
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 @@
|
||||||
#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 @@
|
||||||
#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 @@
|
||||||
|
|
||||||
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 @@
|
||||||
#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";
|
||||||
* 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 @@ valid_k7:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
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 @@ again:
|
||||||
}
|
}
|
||||||
|
|
||||||
#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)
|
||||||
/*
|
/*
|
||||||
* 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);
|
||||||
#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)
|
||||||
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;}
|
||||||
*/
|
*/
|
||||||
#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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче