android_kernel_xiaomi_sm8350/arch/i386/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
..
acpi [PATCH] Allow NULL pointers in percpu_free 2006-12-07 08:39:22 -08:00
cpu Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 17:01:28 +00:00
.gitignore
alternative.c [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
apic.c [PATCH] i386: irqs build fix 2006-10-06 08:53:39 -07:00
apm.c [PATCH] APM: URL of APM 1.2 specs has changed 2006-10-30 12:08:42 -08:00
asm-offsets.c
bootflag.c
cpuid.c Driver core: convert cpuid code to use struct device 2006-12-01 14:52:00 -08:00
crash_dump.c
crash.c
doublefault.c
early_printk.c
efi_stub.S
efi.c
entry.S
head.S [PATCH] i386: Fix fake return address 2006-10-21 18:37:02 +02:00
hpet.c
i386_ksyms.c
i387.c
i8237.c
i8253.c [PATCH] i386 Time: Avoid PIT SMP lockups 2006-10-17 08:18:42 -07:00
i8259.c [PATCH] genirq: clean up irq-flow-type naming 2006-10-17 08:18:45 -07:00
init_task.c
io_apic.c [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
ioport.c
irq.c [PATCH] genirq: clean up irq-flow-type naming 2006-10-17 08:18:45 -07:00
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
ldt.c
machine_kexec.c
Makefile
mca.c
microcode.c [PATCH] Regression in 2.6.19-rc microcode driver 2006-11-08 18:29:22 -08:00
module.c
mpparse.c
msr.c Driver core: convert msr code to use struct device 2006-12-01 14:52:00 -08:00
nmi.c [PATCH] i386: Disable nmi watchdog on all ThinkPads 2006-10-21 18:37:02 +02:00
numaq.c
pci-dma.c PCI: arch/i386/kernel/pci-dma.c: ioremap balanced with iounmap 2006-12-01 14:36:59 -08:00
process.c [PATCH] i386/x86_64: ACPI cpu_idle_wait() fix 2006-11-17 08:20:09 -08:00
ptrace.c
quirks.c
reboot_fixups.c
reboot.c
relocate_kernel.S
scx200.c
setup.c [PATCH] initrd: remove unused false condition for initrd_start 2006-12-07 08:39:38 -08:00
sigframe.h
signal.c
smp.c
smpboot.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
srat.c
summit.c
sys_i386.c
syscall_table.S [PATCH] epoll_pwait() 2006-10-11 11:14:21 -07:00
sysenter.c [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
time_hpet.c
time.c arch/i386/kernel/time: don't shadow 'irq' function arg 2006-10-06 13:32:44 -04:00
topology.c
trampoline.S
traps.c [PATCH] lockdep: name some old style locks 2006-12-07 08:39:36 -08:00
tsc.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
vm86.c
vmlinux.lds.S [PATCH] i386: Force data segment to be 4K aligned 2006-11-08 18:29:23 -08:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S
vsyscall-sysenter.S
vsyscall.lds.S
vsyscall.S