kernel-ark/include
Oleg Nesterov 3da1c84c00 workqueues: make get_online_cpus() useable for work->func()
workqueue_cpu_callback(CPU_DEAD) flushes cwq->thread under
cpu_maps_update_begin().  This means that the multithreaded workqueues
can't use get_online_cpus() due to the possible deadlock, very bad and
very old problem.

Introduce the new state, CPU_POST_DEAD, which is called after
cpu_hotplug_done() but before cpu_maps_update_done().

Change workqueue_cpu_callback() to use CPU_POST_DEAD instead of CPU_DEAD.
This means that create/destroy functions can't rely on get_online_cpus()
any longer and should take cpu_add_remove_lock instead.

[akpm@linux-foundation.org: fix CONFIG_SMP=n]
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: Gautham R Shenoy <ego@in.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Max Krasnyansky <maxk@qualcomm.com>
Cc: Paul Jackson <pj@sgi.com>
Cc: Paul Menage <menage@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vegard Nossum <vegard.nossum@gmail.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-25 10:53:40 -07:00
..
acpi
asm-alpha clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-arm include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-avr32 clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-blackfin include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-cris include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-frv include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-generic gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00
asm-h8300 clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-ia64 clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-m32r clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-m68k clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-m68knommu include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-mips gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00
asm-mn10300 include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-parisc include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-powerpc include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-s390 clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-sh include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-sparc clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-sparc64 Remove asm/semaphore.h 2008-07-24 08:31:12 -04:00
asm-um clean up duplicated alloc/free_thread_info 2008-07-25 10:53:28 -07:00
asm-v850 remove the v850 port 2008-07-24 10:47:24 -07:00
asm-x86 include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
asm-xtensa include/asm/ptrace.h userspace headers cleanup 2008-07-25 10:53:39 -07:00
crypto
drm
keys
linux workqueues: make get_online_cpus() useable for work->func() 2008-07-25 10:53:40 -07:00
math-emu
media
mtd
net include: use get/put_unaligned_* helpers 2008-07-25 10:53:26 -07:00
pcmcia
rdma
rxrpc
scsi
sound
video neofb: drop the xtimings structure 2008-07-24 10:47:41 -07:00
xen
Kbuild