linux/arch/powerpc/kernel
Masami Hiramatsu b4c6c34a53 [PATCH] kprobes: enable booster on the preemptible kernel
When we are unregistering a kprobe-booster, we can't release its
instruction buffer immediately on the preemptive kernel, because some
processes might be preempted on the buffer.  The freeze_processes() and
thaw_processes() functions can clean most of processes up from the buffer.
There are still some non-frozen threads who have the PF_NOFREEZE flag.  If
those threads are sleeping (not preempted) at the known place outside the
buffer, we can ensure safety of freeing.

However, the processing of this check routine takes a long time.  So, this
patch introduces the garbage collection mechanism of insn_slot.  It also
introduces the "dirty" flag to free_insn_slot because of efficiency.

The "clean" instruction slots (dirty flag is cleared) are released
immediately.  But the "dirty" slots which are used by boosted kprobes, are
marked as garbages.  collect_garbage_slots() will be invoked to release
"dirty" slots if there are more than INSNS_PER_PAGE garbage slots or if
there are no unused slots.

Cc: "Keshavamurthy, Anil S" <anil.s.keshavamurthy@intel.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: "bibo,mao" <bibo.mao@intel.com>
Cc: Prasanna S Panchamukhi <prasanna@in.ibm.com>
Cc: Yumiko Sugita <yumiko.sugita.yf@hitachi.com>
Cc: Satoshi Oshima <soshima@redhat.com>
Cc: Hideo Aoki <haoki@redhat.com>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07 08:39:38 -08:00
..
vdso32
vdso64
Makefile [POWERPC] iSeries: don't build head_64.o unnecessarily 2006-12-04 20:42:03 +11:00
align.c
asm-offsets.c
audit.c
binfmt_elf32.c
btext.c
compat_audit.c
cpu_setup_6xx.S
cpu_setup_ppc970.S
cputable.c [POWERPC] Add the e300c3 core to the CPU table. 2006-12-04 20:42:06 +11:00
crash.c
crash_dump.c
dma_64.c [POWERPC] Make direct DMA use node local allocations 2006-12-04 20:38:59 +11:00
entry_32.S
entry_64.S [POWERPC] iSeries: Eliminate "exceeds stub group size" warnings 2006-12-04 20:41:31 +11:00
firmware.c
fpu.S
head_4xx.S
head_8xx.S
head_32.S
head_44x.S
head_64.S [POWERPC] iSeries: Eliminate "exceeds stub group size" warnings 2006-12-04 20:41:31 +11:00
head_booke.h
head_fsl_booke.S
ibmebus.c [POWERPC] Replace kmalloc+memset with kzalloc 2006-12-04 20:42:09 +11:00
idle.c
idle_6xx.S
idle_power4.S
init_task.c
io.c [POWERPC] Merge 32 and 64 bits asm-powerpc/io.h 2006-12-04 20:39:05 +11:00
iomap.c [POWERPC] Merge 32 and 64 bits asm-powerpc/io.h 2006-12-04 20:39:05 +11:00
iommu.c [POWERPC] Refactor 64 bits DMA operations 2006-12-04 20:38:40 +11:00
irq.c [POWERPC] Make soft_enabled irqs preempt safe 2006-12-04 20:39:20 +11:00
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
l2cr_6xx.S
legacy_serial.c
lparcfg.c
lparmap.c
machine_kexec.c
machine_kexec_32.c
machine_kexec_64.c
misc.S
misc_32.S
misc_64.S
module_32.c
module_64.c
nvram_64.c
of_device.c [POWERPC] Add missing EXPORTS for mpc52xx support 2006-12-05 11:34:37 +11:00
of_platform.c [POWERPC] powerpc: Workaround for of_platform without "reg" nor "dcr-reg" 2006-12-04 20:40:17 +11:00
paca.c
pci_32.c [POWERPC] Fix debug printks for 32-bit resources in the PCI code 2006-12-04 20:42:11 +11:00
pci_64.c [POWERPC] Replace kmalloc+memset with kzalloc 2006-12-04 20:42:09 +11:00
pci_dn.c
pmc.c
ppc32.h
ppc_ksyms.c
proc_ppc64.c
process.c
prom.c [POWERPC] Distinguish POWER6 partition modes and tell userspace 2006-12-04 20:40:16 +11:00
prom_init.c [POWERPC] Tell firmware we can handle POWER6 compatible mode 2006-12-04 20:41:53 +11:00
prom_parse.c [POWERPC] Fix OF pci flags parsing 2006-12-04 20:41:49 +11:00
ptrace-common.h
ptrace.c
ptrace32.c
rtas-proc.c
rtas-rtc.c
rtas.c [POWERPC] Wrap cpu_die() with CONFIG_HOTPLUG_CPU 2006-12-04 20:39:29 +11:00
rtas_flash.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
rtas_pci.c [POWERPC] Merge 32 and 64 bits asm-powerpc/io.h 2006-12-04 20:39:05 +11:00
semaphore.c
setup-common.c
setup.h
setup_32.c [POWERPC] Distinguish POWER6 partition modes and tell userspace 2006-12-04 20:40:16 +11:00
setup_64.c [POWERPC] Distinguish POWER6 partition modes and tell userspace 2006-12-04 20:40:16 +11:00
signal_32.c [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
signal_64.c
smp-tbsync.c [POWERPC] Replace kmalloc+memset with kzalloc 2006-12-04 20:42:09 +11:00
smp.c
swsusp_32.S
sys_ppc32.c [POWERPC] fix missing #include in sys_ppc32.c 2006-12-04 20:41:19 +11:00
syscalls.c
sysfs.c [POWERPC] iSeries: fix sysfs.c for combined build 2006-12-04 20:39:14 +11:00
systbl.S
tau_6xx.c
time.c [POWERPC] iSeries: fix time.c for combined build 2006-12-04 20:39:15 +11:00
traps.c [POWERPC] Merge 32 and 64 bits asm-powerpc/io.h 2006-12-04 20:39:05 +11:00
udbg.c
udbg_16550.c
vdso.c [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
vecemu.c
vector.S
vio.c [POWERPC] Refactor 64 bits DMA operations 2006-12-04 20:38:40 +11:00
vmlinux.lds.S