1
linux/arch/ia64/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
..
cpufreq Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
acpi-ext.c Pull acpi_os_free into release branch 2006-07-01 17:19:08 -04:00
acpi-processor.c fix file specification in comments 2006-10-03 23:01:26 +02:00
acpi.c [IA64] remove unused acpi_kbd_controller_present, acpi_legacy_devices 2006-10-17 14:57:33 -07: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
brl_emu.c
cyclone.c [IA64] don't report !sn2 or !summit hardware as an error 2006-03-07 15:26:49 -08:00
efi_stub.S [IA64] make efi_stub.S fit in 80 cols 2006-06-21 14:35:28 -07:00
efi.c [IA64] sparse cleanups 2006-08-02 16:03:44 -07:00
entry.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
entry.S fix file specification in comments 2006-10-03 23:01:26 +02:00
esi_stub.S [IA64] esi-support 2006-06-21 11:19:22 -07:00
esi.c [IA64] esi-support 2006-06-21 11:19:22 -07:00
fsys.S
gate-data.S
gate.lds.S [PATCH] vDSO hash-style fix 2006-07-31 13:28:43 -07:00
gate.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head.S [IA64] Save register stack contents on cpu start 2006-09-08 11:05:13 -07:00
ia64_ksyms.c Pull esi-support into release branch 2006-09-26 09:47:30 -07:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
iosapic.c [IA64] typename -> name conversion 2006-11-16 09:38:02 -08:00
irq_ia64.c [IA64] use generic_handle_irq() 2006-11-16 09:38:35 -08:00
irq_lsapic.c [IA64] typename -> name conversion 2006-11-16 09:38:02 -08:00
irq.c [IA64] use generic_handle_irq() 2006-11-16 09:38:35 -08:00
ivt.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
jprobes.S
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
machvec.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
Makefile [PATCH] msi: move the ia64 code into arch/ia64 2006-10-04 07:55:29 -07:00
mca_asm.S [IA64] ar.fpsr not set on MCA/INIT kernel entry 2006-09-26 15:20:35 -07:00
mca_drv_asm.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mca_drv.c [IA64] MCA recovery: Montecito support 2006-10-31 14:30:34 -08:00
mca_drv.h [IA64] printing support for MCA/INIT 2006-09-26 14:44:37 -07:00
mca.c WorkQueue: Fix up arch-specific work items where possible 2006-12-05 19:36:26 +00:00
minstate.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
module.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
msi_ia64.c [PATCH] msi: move the ia64 code into arch/ia64 2006-10-04 07:55:29 -07:00
numa.c [PATCH] cpumask: export node_to_cpu_mask consistently 2006-10-02 07:57:17 -07:00
pal.S [IA64] reformat pal.S to fit in 80 columns, fix typos 2006-10-17 14:54:19 -07:00
palinfo.c Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-08-03 12:50:20 -07:00
patch.c [IA64] add init declaration - gate page functions 2006-03-22 16:54:38 -08:00
perfmon_default_smpl.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
perfmon.c [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
process.c [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
ptrace.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sal.c [IA64] move SAL_CACHE_FLUSH check later in boot 2006-10-31 14:32:10 -08:00
salinfo.c [IA64] printing support for MCA/INIT 2006-09-26 14:44:37 -07:00
semaphore.c
setup.c [IA64] move SAL_CACHE_FLUSH check later in boot 2006-10-31 14:32:10 -08:00
sigframe.h
signal.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
smp.c [IA64] Correct definition of handle_IPI 2006-10-31 14:38:15 -08:00
smpboot.c WorkQueue: Fix up arch-specific work items where possible 2006-12-05 19:36:26 +00:00
sys_ia64.c [PATCH] IA64,sparc: local DoS with corrupted ELFs 2006-09-08 08:40:46 -07:00
time.c [IA64] - Allow IPIs in timer loop 2006-10-17 14:51:49 -07:00
topology.c [PATCH] fix "cpu to node relationship fixup: map cpu to node" 2006-09-27 08:26:08 -07:00
traps.c [PATCH] Change panic_on_oops message to "Fatal exception" 2006-08-14 12:54:29 -07:00
unaligned.c
uncached.c [PATCH] Define easier to handle GFP_THISNODE 2006-09-26 08:48:50 -07:00
unwind_decoder.c
unwind_i.h
unwind.c
vmlinux.lds.S [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00