Skip to content

Commit

Permalink
Full conversion to early_initcall() interface, remove old interface
Browse files Browse the repository at this point in the history
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.

[[email protected]: cleanups]
[[email protected]: build fix]
[[email protected]: warning fix]
[[email protected]: warning fix]
Signed-off-by: Eduard - Gabriel Munteanu <[email protected]>
Cc: Tom Zanussi <[email protected]>
Signed-off-by: KOSAKI Motohiro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
edgmnt authored and torvalds committed Jul 26, 2008
1 parent c2147a5 commit 7babe8d
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 42 deletions.
9 changes: 0 additions & 9 deletions include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,6 @@ extern void sched_show_task(struct task_struct *p);

#ifdef CONFIG_DETECT_SOFTLOCKUP
extern void softlockup_tick(void);
extern void spawn_softlockup_task(void);
extern void touch_softlockup_watchdog(void);
extern void touch_all_softlockup_watchdogs(void);
extern unsigned int softlockup_panic;
Expand Down Expand Up @@ -2222,14 +2221,6 @@ static inline void inc_syscw(struct task_struct *tsk)
}
#endif

#ifdef CONFIG_SMP
void migration_init(void);
#else
static inline void migration_init(void)
{
}
#endif

#ifndef TASK_SIZE_OF
#define TASK_SIZE_OF(tsk) TASK_SIZE
#endif
Expand Down
5 changes: 0 additions & 5 deletions include/linux/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,10 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data);
#ifdef CONFIG_USE_GENERIC_SMP_HELPERS
void generic_smp_call_function_single_interrupt(void);
void generic_smp_call_function_interrupt(void);
void init_call_single_data(void);
void ipi_call_lock(void);
void ipi_call_unlock(void);
void ipi_call_lock_irq(void);
void ipi_call_unlock_irq(void);
#else
static inline void init_call_single_data(void)
{
}
#endif

/*
Expand Down
23 changes: 1 addition & 22 deletions init/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -774,34 +774,14 @@ static void __init do_basic_setup(void)
do_initcalls();
}

static int __initdata nosoftlockup;

static int __init nosoftlockup_setup(char *str)
{
nosoftlockup = 1;
return 1;
}
__setup("nosoftlockup", nosoftlockup_setup);

static void __init __do_pre_smp_initcalls(void)
static void __init do_pre_smp_initcalls(void)
{
initcall_t *call;

for (call = __initcall_start; call < __early_initcall_end; 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)
{
argv_init[0] = init_filename;
Expand Down Expand Up @@ -873,7 +853,6 @@ static int __init kernel_init(void * unused)

smp_prepare_cpus(setup_max_cpus);

__do_pre_smp_initcalls();
do_pre_smp_initcalls();

smp_init();
Expand Down
5 changes: 4 additions & 1 deletion kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -6389,7 +6389,7 @@ static struct notifier_block __cpuinitdata migration_notifier = {
.priority = 10
};

void __init migration_init(void)
static int __init migration_init(void)
{
void *cpu = (void *)(long)smp_processor_id();
int err;
Expand All @@ -6399,7 +6399,10 @@ void __init migration_init(void)
BUG_ON(err == NOTIFY_BAD);
migration_call(&migration_notifier, CPU_ONLINE, cpu);
register_cpu_notifier(&migration_notifier);

return err;
}
early_initcall(migration_init);
#endif

#ifdef CONFIG_SMP
Expand Down
4 changes: 3 additions & 1 deletion kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ struct call_single_queue {
spinlock_t lock;
};

void __cpuinit init_call_single_data(void)
static int __cpuinit init_call_single_data(void)
{
int i;

Expand All @@ -43,7 +43,9 @@ void __cpuinit init_call_single_data(void)
spin_lock_init(&q->lock);
INIT_LIST_HEAD(&q->list);
}
return 0;
}
early_initcall(init_call_single_data);

static void csd_flag_wait(struct call_single_data *data)
{
Expand Down
3 changes: 2 additions & 1 deletion kernel/softirq.c
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ static struct notifier_block __cpuinitdata cpu_nfb = {
.notifier_call = cpu_callback
};

__init int spawn_ksoftirqd(void)
static __init int spawn_ksoftirqd(void)
{
void *cpu = (void *)(long)smp_processor_id();
int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);
Expand All @@ -640,6 +640,7 @@ __init int spawn_ksoftirqd(void)
register_cpu_notifier(&cpu_nfb);
return 0;
}
early_initcall(spawn_ksoftirqd);

#ifdef CONFIG_SMP
/*
Expand Down
25 changes: 22 additions & 3 deletions kernel/softlockup.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,14 +338,33 @@ static struct notifier_block __cpuinitdata cpu_nfb = {
.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();
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);
register_cpu_notifier(&cpu_nfb);

atomic_notifier_chain_register(&panic_notifier_list, &panic_block);

return 0;
}
early_initcall(spawn_softlockup_task);

0 comments on commit 7babe8d

Please sign in to comment.