Commit 4403b406d4369a275d483ece6ddee0088cc0d592

Authored by Linus Torvalds
1 parent e013e13bf6

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>

Showing 2 changed files with 2 additions and 3 deletions Side-by-side Diff

... ... @@ -768,6 +768,7 @@
768 768 static void __init do_basic_setup(void)
769 769 {
770 770 rcu_init_sched(); /* needed by module_init stage. */
  771 + init_workqueues();
771 772 usermodehelper_init();
772 773 driver_init();
773 774 init_irq_proc();
... ... @@ -850,8 +851,6 @@
850 851 init_pid_ns.child_reaper = current;
851 852  
852 853 cad_pid = task_pid(current);
853   -
854   - init_workqueues();
855 854  
856 855 smp_prepare_cpus(setup_max_cpus);
857 856  
kernel/stop_machine.c
... ... @@ -160,5 +160,5 @@
160 160 stop_machine_work = alloc_percpu(struct work_struct);
161 161 return 0;
162 162 }
163   -early_initcall(stop_machine_init);
  163 +core_initcall(stop_machine_init);