linux/arch/ppc64/kernel
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
..
vdso32 [PATCH] ppc64: Fix error in vDSO 32 bits date 2005-10-19 23:04:30 -07:00
vdso64 powerpc: Make some #includes explicit. 2005-10-10 14:14:55 +10:00
align.c [PATCH] powerpc: Fix handling of fpscr on 64-bit 2005-10-27 20:48:50 +10:00
asm-offsets.c [PATCH] ppc64: support 64k pages 2005-11-06 16:56:47 -08:00
btext.c ppc64: Rearrange btext initialization for consistency with ppc32 2005-10-22 15:36:52 +10:00
cpu_setup_power4.S [PATCH] merge some from Rusty's trivial patches 2005-09-10 10:06:30 -07:00
dma.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
eeh.c powerpc: Move iSeries_pci.c to powerpc/platform/iseries 2005-09-28 02:50:25 +10:00
firmware.c [PATCH] ppc64: make firmware_has_feature() stronger 2005-08-29 10:53:35 +10:00
head.S [PATCH] ppc64: support 64k pages 2005-11-06 16:56:47 -08:00
hvconsole.c [PATCH] hvc_console: Separate the NUL character filtering from get_hvc_chars 2005-07-07 18:23:40 -07:00
hvcserver.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
idle.c powerpc: Merge machdep.h 2005-10-19 23:11:21 +10:00
ioctl32.c [PATCH] TIOC* compat ioctl handling 2005-10-30 17:37:17 -08:00
iomap.c Merge master.kernel.org:/pub/scm/linux/kernel/git/paulus/ppc64-2.6 2005-09-09 10:38:02 -07:00
iommu.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
irq.c Merge iSeries include file move 2005-11-02 16:06:03 +11:00
kprobes.c [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
lparcfg.c merge filename and modify references to iseries/it_exp_vpd_panel.h 2005-11-02 13:48:25 +11:00
machine_kexec.c powerpc: Implement smp_release_cpus() in C not asm 2005-11-04 12:09:42 +11:00
Makefile powerpc: Merge smp.c and smp.h 2005-11-05 10:33:55 +11:00
misc.S ppc64: use the merged syscall table 2005-10-28 12:51:45 +10:00
module.c [PATCH] ppc64: Add R_PPC64_TOC16 module reloc 2005-10-11 09:46:54 -07:00
nvram.c [PATCH] ppc64: simplify nvram partition scanning code 2005-06-28 20:33:49 +10:00
pacaData.c [PATCH] ppc64: support 64k pages 2005-11-06 16:56:47 -08:00
pci_direct_iommu.c Merge from Linus' tree 2005-10-12 14:43:32 +10:00
pci_dn.c [PATCH] ppc64: Fix add notifier crashes 2005-11-03 16:53:49 +11:00
pci_iommu.c powerpc: move iSeries/iSeries_pci.h to platforms/iseries 2005-10-14 14:51:42 +10:00
pci.c [PATCH] ppc: make phys_mem_access_prot() work with pfns instead of addresses 2005-10-29 14:25:49 +10:00
ppc_ksyms.c powerpc: move more iSeries code 2005-09-28 13:28:01 +10:00
proc_ppc64.c [PATCH] powerpc: Rename BPA to Cell 2005-11-01 21:02:44 +11:00
prom_init.c [PATCH] powerpc: Rename BPA to Cell 2005-11-01 21:02:44 +11:00
prom.c [PATCH] ppc64: support 64k pages 2005-11-06 16:56:47 -08:00
rtas_pci.c ppc64: Add a `primary' argument to pci_process_bridge_OF_ranges 2005-10-22 15:03:21 +10:00
rtc.c powerpc: Merge machdep.h 2005-10-19 23:11:21 +10:00
scanlog.c [PATCH] ppc64: replace schedule_timeout() with msleep_interruptible() 2005-09-05 00:06:01 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysfs.c [PATCH] POWERPC/PPC64: Fix CONFIG_SMP=n build for ppc64 2005-11-07 07:53:23 -08:00
udbg_16550.c [PATCH] ppc64: Remove old includes 2005-09-06 16:07:37 +10:00
udbg_scc.c [PATCH] powerpc: Move naca.h to platforms/iseries 2005-11-02 16:05:53 +11:00
udbg.c [PATCH] ppc64: iSeries early printk breakage 2005-09-09 22:11:34 +10:00
vdso.c [PATCH] core remove PageReserved 2005-10-29 21:40:39 -07:00
vmlinux.lds.S powerpc: Reduce the 32/64-bit diffs in vmlinux.lds.S 2005-10-10 22:38:46 +10:00