Tejun Heo 3fc1f1e27a stop_machine: reimplement using cpu_stop
Reimplement stop_machine using cpu_stop.  As cpu stoppers are
guaranteed to be available for all online cpus,
stop_machine_create/destroy() are no longer necessary and removed.

With resource management and synchronization handled by cpu_stop, the
new implementation is much simpler.  Asking the cpu_stop to execute
the stop_cpu() state machine on all online cpus with cpu hotplug
disabled is enough.

stop_machine itself doesn't need to manage any global resources
anymore, so all per-instance information is rolled into struct
stop_machine_data and the mutex and all static data variables are
removed.

The previous implementation created and destroyed RT workqueues as
necessary which made stop_machine() calls highly expensive on very
large machines.  According to Dimitri Sivanich, preventing the dynamic
creation/destruction makes booting faster more than twice on very
large machines.  cpu_stop resources are preallocated for all online
cpus and should have the same effect.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Dimitri Sivanich <sivanich@sgi.com>
2010-05-06 18:49:20 +02:00
..
2009-09-21 14:29:21 +02:00
2010-04-15 09:36:16 +02:00
2009-06-24 00:02:38 -04:00
2010-03-24 16:31:19 -07:00
2010-05-06 18:49:20 +02:00
2010-04-15 09:36:16 +02:00
2009-09-18 09:48:52 -07:00
2010-04-15 09:36:16 +02:00
2009-06-16 19:47:48 -07:00
2009-12-14 23:55:34 +01:00
2009-07-24 10:53:29 +02:00
2010-02-10 17:47:17 -08:00
2010-03-06 11:26:32 -08:00
2010-04-02 20:12:05 +02:00
2010-03-06 11:26:33 -08:00
2010-03-12 15:52:32 -08:00
2010-03-12 15:53:10 -08:00
2010-03-06 11:26:23 -08:00
2009-09-23 18:13:10 -07:00
2010-04-02 20:12:00 +02:00
2009-06-18 13:03:55 -07:00