Commit 7babe8db authored by Eduard - Gabriel Munteanu's avatar Eduard - Gabriel Munteanu Committed by Linus Torvalds

Full conversion to early_initcall() interface, remove old interface

A previous patch added the early_initcall(), to allow a cleaner hooking of
pre-SMP initcalls.  Now we remove the older interface, converting all
existing users to the new one.

[akpm@linux-foundation.org: cleanups]
[akpm@linux-foundation.org: build fix]
[kosaki.motohiro@jp.fujitsu.com: warning fix]
[kosaki.motohiro@jp.fujitsu.com: warning fix]
Signed-off-by: default avatarEduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Cc: Tom Zanussi <tzanussi@gmail.com>
Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c2147a50
...@@ -292,7 +292,6 @@ extern void sched_show_task(struct task_struct *p); ...@@ -292,7 +292,6 @@ extern void sched_show_task(struct task_struct *p);
#ifdef CONFIG_DETECT_SOFTLOCKUP #ifdef CONFIG_DETECT_SOFTLOCKUP
extern void softlockup_tick(void); extern void softlockup_tick(void);
extern void spawn_softlockup_task(void);
extern void touch_softlockup_watchdog(void); extern void touch_softlockup_watchdog(void);
extern void touch_all_softlockup_watchdogs(void); extern void touch_all_softlockup_watchdogs(void);
extern unsigned int softlockup_panic; extern unsigned int softlockup_panic;
...@@ -2222,14 +2221,6 @@ static inline void inc_syscw(struct task_struct *tsk) ...@@ -2222,14 +2221,6 @@ static inline void inc_syscw(struct task_struct *tsk)
} }
#endif #endif
#ifdef CONFIG_SMP
void migration_init(void);
#else
static inline void migration_init(void)
{
}
#endif
#ifndef TASK_SIZE_OF #ifndef TASK_SIZE_OF
#define TASK_SIZE_OF(tsk) TASK_SIZE #define TASK_SIZE_OF(tsk) TASK_SIZE
#endif #endif
......
...@@ -74,15 +74,10 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data); ...@@ -74,15 +74,10 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data);
#ifdef CONFIG_USE_GENERIC_SMP_HELPERS #ifdef CONFIG_USE_GENERIC_SMP_HELPERS
void generic_smp_call_function_single_interrupt(void); void generic_smp_call_function_single_interrupt(void);
void generic_smp_call_function_interrupt(void); void generic_smp_call_function_interrupt(void);
void init_call_single_data(void);
void ipi_call_lock(void); void ipi_call_lock(void);
void ipi_call_unlock(void); void ipi_call_unlock(void);
void ipi_call_lock_irq(void); void ipi_call_lock_irq(void);
void ipi_call_unlock_irq(void); void ipi_call_unlock_irq(void);
#else
static inline void init_call_single_data(void)
{
}
#endif #endif
/* /*
......
...@@ -774,16 +774,7 @@ static void __init do_basic_setup(void) ...@@ -774,16 +774,7 @@ static void __init do_basic_setup(void)
do_initcalls(); do_initcalls();
} }
static int __initdata nosoftlockup; static void __init do_pre_smp_initcalls(void)
static int __init nosoftlockup_setup(char *str)
{
nosoftlockup = 1;
return 1;
}
__setup("nosoftlockup", nosoftlockup_setup);
static void __init __do_pre_smp_initcalls(void)
{ {
initcall_t *call; initcall_t *call;
...@@ -791,17 +782,6 @@ static void __init __do_pre_smp_initcalls(void) ...@@ -791,17 +782,6 @@ static void __init __do_pre_smp_initcalls(void)
do_one_initcall(*call); do_one_initcall(*call);
} }
static void __init do_pre_smp_initcalls(void)
{
extern int spawn_ksoftirqd(void);
init_call_single_data();
migration_init();
spawn_ksoftirqd();
if (!nosoftlockup)
spawn_softlockup_task();
}
static void run_init_process(char *init_filename) static void run_init_process(char *init_filename)
{ {
argv_init[0] = init_filename; argv_init[0] = init_filename;
...@@ -873,7 +853,6 @@ static int __init kernel_init(void * unused) ...@@ -873,7 +853,6 @@ static int __init kernel_init(void * unused)
smp_prepare_cpus(setup_max_cpus); smp_prepare_cpus(setup_max_cpus);
__do_pre_smp_initcalls();
do_pre_smp_initcalls(); do_pre_smp_initcalls();
smp_init(); smp_init();
......
...@@ -6389,7 +6389,7 @@ static struct notifier_block __cpuinitdata migration_notifier = { ...@@ -6389,7 +6389,7 @@ static struct notifier_block __cpuinitdata migration_notifier = {
.priority = 10 .priority = 10
}; };
void __init migration_init(void) static int __init migration_init(void)
{ {
void *cpu = (void *)(long)smp_processor_id(); void *cpu = (void *)(long)smp_processor_id();
int err; int err;
...@@ -6399,7 +6399,10 @@ void __init migration_init(void) ...@@ -6399,7 +6399,10 @@ void __init migration_init(void)
BUG_ON(err == NOTIFY_BAD); BUG_ON(err == NOTIFY_BAD);
migration_call(&migration_notifier, CPU_ONLINE, cpu); migration_call(&migration_notifier, CPU_ONLINE, cpu);
register_cpu_notifier(&migration_notifier); register_cpu_notifier(&migration_notifier);
return err;
} }
early_initcall(migration_init);
#endif #endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
......
...@@ -33,7 +33,7 @@ struct call_single_queue { ...@@ -33,7 +33,7 @@ struct call_single_queue {
spinlock_t lock; spinlock_t lock;
}; };
void __cpuinit init_call_single_data(void) static int __cpuinit init_call_single_data(void)
{ {
int i; int i;
...@@ -43,7 +43,9 @@ void __cpuinit init_call_single_data(void) ...@@ -43,7 +43,9 @@ void __cpuinit init_call_single_data(void)
spin_lock_init(&q->lock); spin_lock_init(&q->lock);
INIT_LIST_HEAD(&q->list); INIT_LIST_HEAD(&q->list);
} }
return 0;
} }
early_initcall(init_call_single_data);
static void csd_flag_wait(struct call_single_data *data) static void csd_flag_wait(struct call_single_data *data)
{ {
......
...@@ -630,7 +630,7 @@ static struct notifier_block __cpuinitdata cpu_nfb = { ...@@ -630,7 +630,7 @@ static struct notifier_block __cpuinitdata cpu_nfb = {
.notifier_call = cpu_callback .notifier_call = cpu_callback
}; };
__init int spawn_ksoftirqd(void) static __init int spawn_ksoftirqd(void)
{ {
void *cpu = (void *)(long)smp_processor_id(); void *cpu = (void *)(long)smp_processor_id();
int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu); int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);
...@@ -640,6 +640,7 @@ __init int spawn_ksoftirqd(void) ...@@ -640,6 +640,7 @@ __init int spawn_ksoftirqd(void)
register_cpu_notifier(&cpu_nfb); register_cpu_notifier(&cpu_nfb);
return 0; return 0;
} }
early_initcall(spawn_ksoftirqd);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* /*
......
...@@ -338,14 +338,33 @@ static struct notifier_block __cpuinitdata cpu_nfb = { ...@@ -338,14 +338,33 @@ static struct notifier_block __cpuinitdata cpu_nfb = {
.notifier_call = cpu_callback .notifier_call = cpu_callback
}; };
__init void spawn_softlockup_task(void) static int __initdata nosoftlockup;
static int __init nosoftlockup_setup(char *str)
{
nosoftlockup = 1;
return 1;
}
__setup("nosoftlockup", nosoftlockup_setup);
static int __init spawn_softlockup_task(void)
{ {
void *cpu = (void *)(long)smp_processor_id(); void *cpu = (void *)(long)smp_processor_id();
int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu); int err;
BUG_ON(err == NOTIFY_BAD); if (nosoftlockup)
return 0;
err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);
if (err == NOTIFY_BAD) {
BUG();
return 1;
}
cpu_callback(&cpu_nfb, CPU_ONLINE, cpu); cpu_callback(&cpu_nfb, CPU_ONLINE, cpu);
register_cpu_notifier(&cpu_nfb); register_cpu_notifier(&cpu_nfb);
atomic_notifier_chain_register(&panic_notifier_list, &panic_block); atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
return 0;
} }
early_initcall(spawn_softlockup_task);
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