mirror of https://gitee.com/openkylin/linux.git
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: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Cc: Tom Zanussi <tzanussi@gmail.com> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c2147a5092
commit
7babe8db99
|
@ -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)
|
||||||
}
|
}
|
||||||
#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);
|
||||||
#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
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
23
init/main.c
23
init/main.c
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
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 = {
|
||||||
.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)
|
||||||
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 {
|
||||||
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)
|
||||||
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 = {
|
||||||
.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)
|
||||||
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 = {
|
||||||
.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);
|
||||||
|
|
Loading…
Reference in New Issue