diff options
author | Tejun Heo <tj@kernel.org> | 2010-08-09 05:50:34 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-08-09 05:50:34 -0400 |
commit | f6500947a9cbb81cfa07ff344f16955d9c6ebe61 (patch) | |
tree | 6544ae45f39370fd35cb44076dc4628bd852bc19 /kernel/workqueue.c | |
parent | 38f51568005873a241a8ae6bf28c9ddd3f6a11ed (diff) |
workqueue: workqueue_cpu_callback() should be cpu_notifier instead of hotcpu_notifier
Commit 6ee0578b (workqueue: mark init_workqueues as early_initcall)
made workqueue SMP initialization depend on workqueue_cpu_callback(),
which however was registered as hotcpu_notifier() and didn't get
called if CONFIG_HOTPLUG_CPU is not set. This made gcwqs on non-boot
CPUs not create their initial workers leading to boot failures. Fix
it by making it a cpu_notifier.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-and-bisected-by: walt <w41ter@gmail.com>
Tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r-- | kernel/workqueue.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index da6c482944d7..2994a0e3a61c 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -3527,7 +3527,7 @@ static int __init init_workqueues(void) | |||
3527 | unsigned int cpu; | 3527 | unsigned int cpu; |
3528 | int i; | 3528 | int i; |
3529 | 3529 | ||
3530 | hotcpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE); | 3530 | cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE); |
3531 | 3531 | ||
3532 | /* initialize gcwqs */ | 3532 | /* initialize gcwqs */ |
3533 | for_each_gcwq_cpu(cpu) { | 3533 | for_each_gcwq_cpu(cpu) { |