linux/arch/s390/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
..
Makefile [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
asm-offsets.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
audit.c [PATCH] audit: AUDIT_PERM support 2006-09-11 13:32:30 -04:00
binfmt_elf32.c [PATCH] elf: Always define elf_addr_t in linux/elf.h 2006-12-07 08:39:38 -08:00
bitmap.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_audit.c [PATCH] audit: AUDIT_PERM support 2006-09-11 13:32:30 -04:00
compat_exec_domain.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_linux.c [S390] uaccess error handling. 2006-10-27 12:39:22 +02:00
compat_linux.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
compat_ptrace.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_signal.c [S390] uaccess error handling. 2006-10-27 12:39:22 +02:00
compat_wrapper.S [S390] sys_getcpu compat wrapper. 2006-10-27 12:39:10 +02:00
cpcmd.c [S390] cpcmd <-> __cpcmd calling issues 2006-12-04 15:40:30 +01:00
crash.c [PATCH] kdump: dynamic per cpu allocation of memory for saving cpu registers 2006-01-10 08:01:26 -08:00
debug.c [PATCH] inode_diet: Replace inode.u.generic_ip with inode.i_private 2006-09-27 08:26:17 -07:00
ebcdic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [S390] Whitespace cleanup. 2006-09-28 16:56:37 +02:00
entry64.S [S390] Whitespace cleanup. 2006-09-28 16:56:37 +02:00
head.S [S390] remove salipl memory detection. 2006-12-04 15:39:47 +01:00
head31.S [S390] Memory detection fixes. 2006-12-04 15:40:56 +01:00
head64.S [S390] Memory detection fixes. 2006-12-04 15:40:56 +01:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
ipl.c [S390] cpu shutdown rework 2006-12-04 15:40:33 +01:00
irq.c [PATCH] lockdep: irqtrace subsystem, move account_system_vtime() calls into kernel/softirq.c 2006-07-03 15:27:10 -07:00
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
machine_kexec.c [S390] pfault code cleanup. 2006-12-04 15:40:40 +01:00
module.c [S390] Fix sparse warnings. 2006-07-12 16:41:55 +02:00
process.c [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
profile.c [S390] Fix sparse warnings. 2006-07-12 16:41:55 +02:00
ptrace.c [PATCH] drop task argument of audit_syscall_{entry,exit} 2006-05-01 06:06:18 -04:00
reipl.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
reipl64.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
relocate_kernel.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
relocate_kernel64.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
reset.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
s390_ext.c [S390] irq change improvements. 2006-10-11 15:31:26 +02:00
s390_ksyms.c [PATCH] remove bogus arch-specific syscall exports 2006-10-11 11:17:07 -07:00
semaphore.c [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
setup.c [S390] Memory detection fixes. 2006-12-04 15:40:56 +01:00
signal.c [S390] uaccess error handling. 2006-10-27 12:39:22 +02:00
smp.c [S390] pfault code cleanup. 2006-12-04 15:40:40 +01:00
stacktrace.c [S390] stacktrace bug. 2006-10-11 15:31:52 +02:00
sys_s390.c [PATCH] provide kernel_execve on all architectures 2006-10-02 07:57:23 -07:00
syscalls.S [S390] Wire up epoll_pwait syscall. 2006-10-18 18:30:45 +02:00
time.c [S390] Use CONFIG_GENERIC_TIME and define TOD clock source. 2006-10-06 16:38:48 +02:00
traps.c [S390] lockdep: show held locks when showing a stackdump 2006-12-04 15:40:47 +01:00
vmlinux.lds.S [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
vtime.c [S390] irq change improvements. 2006-10-11 15:31:26 +02:00