kernel_optimize_test/arch/sparc64/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
..
asm-offsets.c kbuild: frv,m32r,sparc64 introduce fake asm-offsets.h file 2005-09-09 22:47:53 +02:00
auxio.c [SPARC64]: Get rid of fast IRQ feature. 2005-06-27 17:04:45 -07:00
binfmt_aout32.c [PATCH] mm: mm_init set_mm_counters 2005-10-29 21:40:38 -07:00
binfmt_elf32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
central.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
chmc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpu.c [SPARC64]: Add missing IDs for newer cpus. 2005-09-27 22:50:06 -07:00
devices.c [SPARC64]: Probe D/I/E-cache config and use. 2005-09-26 00:32:17 -07:00
dtlb_backend.S [SPARC64]: Kill SZ_BITS define from dtlb_backend.S 2005-09-21 19:23:48 -07:00
dtlb_base.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
dtlb_prot.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
ebus.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [SPARC64]: Fix userland FPU state corruption. 2005-10-07 13:30:49 -07:00
etrap.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
head.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
idprom.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl32.c [PATCH] TIOC* compat ioctl handling 2005-10-30 17:37:17 -08:00
iommu_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [SPARC64]: Fix compile error in irq.c 2005-10-08 21:12:04 -07:00
isa.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
itlb_base.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
kprobes.c [PATCH] Kprobes: rearrange preempt_disable/enable() calls 2005-11-07 07:53:45 -08:00
ktlb.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
Makefile [SPARC64]: Move kernel unaligned trap handlers into assembler file. 2005-08-19 15:55:33 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_iommu.c [SPARC64]: Eliminate PCI IOMMU dma mapping size limit. 2005-10-13 22:15:24 -07:00
pci_psycho.c [SPARC64]: Consolidate common PCI IOMMU init code. 2005-10-13 21:10:08 -07:00
pci_sabre.c [SPARC64]: Consolidate common PCI IOMMU init code. 2005-10-13 21:10:08 -07:00
pci_schizo.c [SPARC64]: Consolidate common PCI IOMMU init code. 2005-10-13 21:10:08 -07:00
pci.c [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
power.c [SPARC64]: Probe for power device on ISA bus too. 2005-10-06 20:43:54 -07:00
process.c [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
ptrace.c [SPARC64]: Fix several bugs in flush_ptrace_access(). 2005-09-29 18:50:34 -07:00
rtrap.S [SPARC64]: Fix userland FPU state corruption. 2005-10-07 13:30:49 -07:00
sbus.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
semaphore.c [SPARC64]: Avoid membar instructions in delay slots. 2005-06-27 15:42:04 -07:00
setup.c [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
signal32.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
signal.c [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
smp.c [SPARC64]: Fix powering off on SMP. 2005-10-14 15:26:08 -07:00
sparc64_ksyms.c [LIB]: Consolidate _atomic_dec_and_lock() 2005-09-14 21:47:01 -07:00
starfire.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunos_ioctl32.c [SPARC64]: Fix set/get MTU cases in sunos_ioctl() 2005-09-06 20:12:15 -07:00
sys32.S [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
sys_sparc32.c [PATCH] remove duplicated sys_open32() code from 64bit archs 2005-09-07 16:57:43 -07:00
sys_sparc.c [PATCH] Avoiding mmap fragmentation 2005-06-21 18:46:16 -07:00
sys_sunos32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
systbls.S [SPARC]: Add inotify syscall entries. 2005-07-27 14:14:39 -07:00
time.c [PATCH] jiffies_64 cleanup 2005-10-30 17:37:25 -08:00
trampoline.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
traps.c [SPARC64]: Rewrite convoluted physical memory probing. 2005-09-29 17:58:26 -07:00
ttable.S [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00
una_asm.S [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
unaligned.c [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
us2e_cpufreq.c [SPARC64]: Fix 2 bugs in cpufreq drivers. 2005-08-18 14:35:38 -07:00
us3_cpufreq.c [SPARC64]: Add missing IDs for newer cpus. 2005-09-27 22:50:06 -07:00
vmlinux.lds.S [SPARC64]: Add CONFIG_DEBUG_PAGEALLOC support. 2005-09-25 16:46:57 -07:00
winfixup.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00