linux/arch/s390/kernel
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
..
vdso32 Use macros for .data.page_aligned section. 2009-09-21 06:27:08 +02:00
vdso64 Use macros for .data.page_aligned section. 2009-09-21 06:27:08 +02:00
asm-offsets.c [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
bitmap.c [S390] move EXPORT_SYMBOLs to definitions 2009-03-26 15:24:11 +01:00
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c
compat_linux.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
compat_linux.h Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 2009-12-09 19:01:47 -08:00
compat_ptrace.h [S390] Expose a constant for the number of words representing the CRs 2009-03-26 15:24:25 +01:00
compat_signal.c [S390] 64-bit register support for 31-bit processes 2009-10-06 10:35:10 +02:00
compat_wrapper.S improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
cpcmd.c [S390] convert cpcmd printks to pr_xxx macros. 2008-12-25 13:39:19 +01:00
crash.c
debug.c tree-wide: convert open calls to remove spaces to skip_spaces() lib function 2009-12-15 08:53:32 -08:00
diag.c
dis.c [S390] add z9-ec/z10 instruction to kernel disassembler 2010-02-26 22:37:32 +01:00
early.c [S390] nss: add missing .previous statement to asm function 2010-04-09 13:43:02 +02:00
ebcdic.c
entry64.S [S390] fix io_return critical section cleanup 2010-04-09 13:43:02 +02:00
entry.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
entry.S [S390] fix io_return critical section cleanup 2010-04-09 13:43:02 +02:00
ftrace.c Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-02-28 10:17:55 -08:00
head31.S [S390] add support for compressed kernels 2010-02-26 22:37:33 +01:00
head64.S [S390] fix boot failures with compressed kernels 2010-03-24 11:49:54 +01:00
head.S [S390] fix boot failures with compressed kernels 2010-03-24 11:49:54 +01:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
ipl.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
irq.c [S390] Fix init irq proc build break. 2009-02-11 10:37:39 +01:00
kprobes.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
machine_kexec.c [S390] smp: always reboot on cpu 0 2010-02-26 22:37:30 +01:00
Makefile [S390] add support for compressed kernels 2010-02-26 22:37:33 +01:00
mcount64.S [S390] improve mcount code 2009-09-11 10:29:43 +02:00
mcount.S [S390] improve mcount code 2009-09-11 10:29:43 +02:00
mem_detect.c [S390] s390: hibernation support for s390 2009-06-16 10:31:22 +02:00
module.c [S390] module: fix memory leak in s390 module loader 2009-10-06 10:35:06 +02:00
nmi.c [S390] merge cpu.h into cputime.h 2009-06-12 10:27:29 +02:00
process.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
processor.c [S390] Add highgprs facility to /proc/cpuinfo 2009-10-14 12:43:53 +02:00
ptrace.c Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core 2010-02-27 10:06:10 +01:00
reipl64.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
reipl.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
relocate_kernel64.S
relocate_kernel.S
s390_ext.c nohz: Introduce arch_needs_cpu 2009-11-05 07:53:53 +01:00
s390_ksyms.c [S390] move EXPORT_SYMBOLs to definitions 2009-03-26 15:24:11 +01:00
sclp.S Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
setup.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
signal.c [S390] use set_current_state in sigsuspend 2010-01-27 10:12:49 +01:00
smp.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
stacktrace.c [S390] Fix stacktrace compile bug. 2008-07-17 17:22:09 +02:00
suspend.c [S390] hibernate: make sure pfn_is_nosave handles lowcore pages 2009-09-22 22:58:45 +02:00
switch_cpu64.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
switch_cpu.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
swsusp_asm64.S [S390] smp: rename and add lowcore defines 2010-02-26 22:37:30 +01:00
sys_s390.c improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
syscalls.S improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
sysinfo.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
time.c stop_machine: reimplement using cpu_stop 2010-05-06 18:49:20 +02:00
topology.c [S390] arch/s390/kernel: Add missing unlock 2010-04-09 13:43:01 +02:00
traps.c [S390] ptrace: dont abuse PT_PTRACED 2009-12-18 17:43:32 +01:00
vdso.c [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
vmlinux.lds.S [S390] Enable kmemleak on s390. 2009-10-06 10:35:06 +02:00
vtime.c nohz: Introduce arch_needs_cpu 2009-11-05 07:53:53 +01:00