An error occurred while fetching folder content.
smpboot: Provide infrastructure for percpu hotplug threads
Thomas Gleixner authored
Provide a generic interface for setting up and tearing down percpu
threads.

On registration the threads for already online cpus are created and
started. On deregistration (modules) the threads are stoppped.

During hotplug operations the threads are created, started, parked and
unparked. The datastructure for registration provides a pointer to
percpu storage space and optional setup, cleanup, park, unpark
functions. These functions are called when the thread state changes.

Each implementation has to provide a function which is queried and
returns whether the thread should run and the thread function itself.

The core code handles all state transitions and avoids duplicated code
in the call sites.

[ paulmck: Preemption leak fix ]
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Reviewed-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20120716103948.352501068@linutronix.de

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
f97f8f06
Name Last commit Last update
..
debug kernel/debug: Make use of KGDB_REASON_NMI
events perf/trace: Add ability to set a target task for events
gcov gcov: disable CONSTRUCTORS for UML
irq Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
power Revert "NMI watchdog: fix for lockup detector breakage on resume"
sched Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
time time: Fix adjustment cleanup bug in timekeeping_adjust()
trace Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
.gitignore Update kernel/.gitignore with new auto-generated files
Kconfig.freezer container freezer: implement freezer cgroup subsystem
Kconfig.hz sched: fix SCHED_HRTICK dependency
Kconfig.locks locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage
Kconfig.preempt locking/kconfig: Simplify INLINE_SPIN_UNLOCK usage
Makefile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
acct.c Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
async.c [SCSI] async: make async_synchronize_full() flush all work regardless of domain
audit.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
audit.h audit: remove AUDIT_SETUP_CONTEXT as it isn't used
audit_tree.c VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors
audit_watch.c get rid of kern_path_parent()
auditfilter.c audit: allow interfield comparison in audit rules
auditsc.c seccomp: remove duplicated failure logging
backtracetest.c backtrace: replace timer with tasklet + completions
bounds.c memcg: remove direct page_cgroup-to-page pointer
capability.c userns: Teach inode_capable to understand inodes whose uids map to other namespaces.
cgroup.c Merge branch 'for-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
cgroup_freezer.c cgroup: convert all non-memcg controllers to the new cftype interface
compat.c new helper: sigsuspend()
configs.c kernel/configs.c: include MODULE_*() when CONFIG_IKCONFIG_PROC=n
cpu.c smpboot: Provide infrastructure for percpu hotplug threads
cpu_pm.c kernel/cpu_pm.c: fix various typos
cpuset.c cpusets: Remove/update outdated comments
crash_dump.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
cred.c keys: kill task_struct->replacement_session_keyring
delayacct.c KVM: Steal time implementation
dma.c Remove all #inclusions of asm/system.h
elfcore.c elf coredump: add extended numbering support
exec_domain.c sys_personality: remove the bogus checks in sys_personality()->__set_personality() path
exit.c posix_types.h: Cleanup stale __NFDBITS and related definitions
extable.c extable: Skip sorting if sorted at build time.
fork.c memcg: rename config variables
freezer.c PM / Freezer: Remove references to TIF_FREEZE in comments
futex.c futex: Forbid uaddr == uaddr2 in futex_wait_requeue_pi()
futex_compat.c futex: Mark get_robust_list as deprecated
groups.c userns: Convert in_group_p and in_egroup_p to use kgid_t
hrtimer.c hrtimer: Update hrtimer base offsets each hrtimer_interrupt
hung_task.c hung task debugging: Inject NMI when hung and going to panic
irq_work.c irq_work: fix compile failure on tile from missing include
itimer.c itimer: Use printk_once instead of WARN_ONCE
jump_label.c static keys: Inline the static_key_enabled() function
kallsyms.c
kcmp.c
kexec.c
kfifo.c
kmod.c
kprobes.c
ksysfs.c
kthread.c
latencytop.c
lglock.c
lockdep.c
lockdep_internals.h
lockdep_proc.c
lockdep_states.h
module.c
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c
nsproxy.c
padata.c
panic.c
params.c
pid.c
pid_namespace.c
posix-cpu-timers.c
posix-timers.c
printk.c
profile.c
ptrace.c
range.c
rcu.h
rcupdate.c
rcutiny.c
rcutiny_plugin.h
rcutorture.c
rcutree.c
rcutree.h
rcutree_plugin.h
rcutree_trace.c
relay.c
res_counter.c
resource.c
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h