linux/arch
Ananth N Mavinakayanahalli 66ff2d0691 [PATCH] Kprobes: rearrange preempt_disable/enable() calls
The following set of patches are aimed at improving kprobes scalability.  We
currently serialize kprobe registration, unregistration and handler execution
using a single spinlock - kprobe_lock.

With these changes, kprobe handlers can run without any locks held.  It also
allows for simultaneous kprobe handler executions on different processors as
we now track kprobe execution on a per processor basis.  It is now necessary
that the handlers be re-entrant since handlers can run concurrently on
multiple processors.

All changes have been tested on i386, ia64, ppc64 and x86_64, while sparc64
has been compile tested only.

The patches can be viewed as 3 logical chunks:

patch 1: 	Reorder preempt_(dis/en)able calls
patches 2-7: 	Introduce per_cpu data areas to track kprobe execution
patches 8-9: 	Use RCU to synchronize kprobe (un)registration and handler
		execution.

Thanks to Maneesh Soni, James Keniston and Anil Keshavamurthy for their
review and suggestions. Thanks again to Anil, Hien Nguyen and Kevin Stafford
for testing the patches.

This patch:

Reorder preempt_disable/enable() calls in arch kprobes files in preparation to
introduce locking changes.  No functional changes introduced by this patch.

Signed-off-by: Ananth N Mavinakayahanalli <ananth@in.ibm.com>
Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-07 07:53:45 -08:00
..
alpha [PATCH] jiffies_64 cleanup 2005-10-30 17:37:25 -08:00
arm [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
arm26 [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
cris [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
frv [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
h8300 [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
i386 [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
ia64 [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
m32r Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-10-31 07:32:56 -08:00
m68k [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
m68knommu [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
mips [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
parisc [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
powerpc [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
ppc [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
ppc64 [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
s390 [PATCH] s390: merge common parts of head.S and head64.S 2005-11-07 07:53:34 -08:00
sh [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
sh64 [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
sparc [PATCH] jiffies_64 cleanup 2005-10-30 17:37:25 -08:00
sparc64 [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
um [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
v850 [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
x86_64 [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
xtensa [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00