X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=kernel%2Fsmp.c;h=96fc7c0edc59d1f09ca56a500d90b0a8a212c7d7;hb=1c355a6e80fd08e623416138631e240f431385f2;hp=4f582b257eba7f3927251d38f8e420119f138fdb;hpb=ce0d1b6f73870878aae622b72e85fe8f7a16b51c;p=linux-2.6 diff --git a/kernel/smp.c b/kernel/smp.c index 4f582b257e..96fc7c0edc 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -8,6 +8,7 @@ #include #include #include +#include #include static DEFINE_PER_CPU(struct call_single_queue, call_single_queue); @@ -32,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; @@ -42,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) { @@ -311,6 +314,7 @@ int smp_call_function_mask(cpumask_t mask, void (*func)(void *), void *info, if (!data) { data = &d; data->csd.flags = CSD_FLAG_WAIT; + wait = 1; } spin_lock_init(&data->lock);