aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-25 22:53:38 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-25 22:53:38 -0400
commit4403b406d4369a275d483ece6ddee0088cc0d592 (patch)
treecaefd6b7aabc1c517942be1abf25d841b181f323
parente013e13bf605b9e6b702adffbe2853cfc60e7806 (diff)
Revert "Call init_workqueues before pre smp initcalls."
This reverts commit a802dd0eb5fc97a50cf1abb1f788a8f6cc5db635 by moving the call to init_workqueues() back where it belongs - after SMP has been initialized. It also moves stop_machine_init() - which needs workqueues - to a later phase using a core_initcall() instead of early_initcall(). That should satisfy all ordering requirements, and was apparently the reason why init_workqueues() was moved to be too early. Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--init/main.c3
-rw-r--r--kernel/stop_machine.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/init/main.c b/init/main.c
index 130d1a0eef11..7e117a231af1 100644
--- a/init/main.c
+++ b/init/main.c
@@ -768,6 +768,7 @@ static void __init do_initcalls(void)
768static void __init do_basic_setup(void) 768static void __init do_basic_setup(void)
769{ 769{
770 rcu_init_sched(); /* needed by module_init stage. */ 770 rcu_init_sched(); /* needed by module_init stage. */
771 init_workqueues();
771 usermodehelper_init(); 772 usermodehelper_init();
772 driver_init(); 773 driver_init();
773 init_irq_proc(); 774 init_irq_proc();
@@ -851,8 +852,6 @@ static int __init kernel_init(void * unused)
851 852
852 cad_pid = task_pid(current); 853 cad_pid = task_pid(current);
853 854
854 init_workqueues();
855
856 smp_prepare_cpus(setup_max_cpus); 855 smp_prepare_cpus(setup_max_cpus);
857 856
858 do_pre_smp_initcalls(); 857 do_pre_smp_initcalls();
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
index 8aff79d90ddc..9bc4c00872c9 100644
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -160,4 +160,4 @@ static int __init stop_machine_init(void)
160 stop_machine_work = alloc_percpu(struct work_struct); 160 stop_machine_work = alloc_percpu(struct work_struct);
161 return 0; 161 return 0;
162} 162}
163early_initcall(stop_machine_init); 163core_initcall(stop_machine_init);