mirror of https://gitee.com/openkylin/linux.git
kprobes: Hide CONFIG_OPTPROBES and set if arch supports optimized kprobes
Hide CONFIG_OPTPROBES and set if the arch supports optimized kprobes (IOW, HAVE_OPTPROBES=y), since this option doesn't change the major behavior of kprobes, and workarounds for minor changes are documented. Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: systemtap <systemtap@sources.redhat.com> Cc: DLE <dle-develop@lists.sourceforge.net> Cc: Dieter Ries <mail@dieterries.net> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <20100315170054.31593.3153.stgit@localhost6.localdomain6> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
8ea7f54410
commit
5cc718b9da
|
@ -165,8 +165,8 @@ the user entry_handler invocation is also skipped.
|
||||||
|
|
||||||
1.4 How Does Jump Optimization Work?
|
1.4 How Does Jump Optimization Work?
|
||||||
|
|
||||||
If you configured your kernel with CONFIG_OPTPROBES=y (currently
|
If your kernel is built with CONFIG_OPTPROBES=y (currently this flag
|
||||||
this option is supported on x86/x86-64, non-preemptive kernel) and
|
is automatically set 'y' on x86/x86-64, non-preemptive kernel) and
|
||||||
the "debug.kprobes_optimization" kernel parameter is set to 1 (see
|
the "debug.kprobes_optimization" kernel parameter is set to 1 (see
|
||||||
sysctl(8)), Kprobes tries to reduce probe-hit overhead by using a jump
|
sysctl(8)), Kprobes tries to reduce probe-hit overhead by using a jump
|
||||||
instruction instead of a breakpoint instruction at each probepoint.
|
instruction instead of a breakpoint instruction at each probepoint.
|
||||||
|
@ -271,8 +271,6 @@ tweak the kernel's execution path, you need to suppress optimization,
|
||||||
using one of the following techniques:
|
using one of the following techniques:
|
||||||
- Specify an empty function for the kprobe's post_handler or break_handler.
|
- Specify an empty function for the kprobe's post_handler or break_handler.
|
||||||
or
|
or
|
||||||
- Config CONFIG_OPTPROBES=n.
|
|
||||||
or
|
|
||||||
- Execute 'sysctl -w debug.kprobes_optimization=n'
|
- Execute 'sysctl -w debug.kprobes_optimization=n'
|
||||||
|
|
||||||
2. Architectures Supported
|
2. Architectures Supported
|
||||||
|
@ -307,10 +305,6 @@ it useful to "Compile the kernel with debug info" (CONFIG_DEBUG_INFO),
|
||||||
so you can use "objdump -d -l vmlinux" to see the source-to-object
|
so you can use "objdump -d -l vmlinux" to see the source-to-object
|
||||||
code mapping.
|
code mapping.
|
||||||
|
|
||||||
If you want to reduce probing overhead, set "Kprobes jump optimization
|
|
||||||
support" (CONFIG_OPTPROBES) to "y". You can find this option under the
|
|
||||||
"Kprobes" line.
|
|
||||||
|
|
||||||
4. API Reference
|
4. API Reference
|
||||||
|
|
||||||
The Kprobes API includes a "register" function and an "unregister"
|
The Kprobes API includes a "register" function and an "unregister"
|
||||||
|
|
|
@ -42,15 +42,10 @@ config KPROBES
|
||||||
If in doubt, say "N".
|
If in doubt, say "N".
|
||||||
|
|
||||||
config OPTPROBES
|
config OPTPROBES
|
||||||
bool "Kprobes jump optimization support (EXPERIMENTAL)"
|
def_bool y
|
||||||
default y
|
depends on KPROBES && HAVE_OPTPROBES
|
||||||
depends on KPROBES
|
|
||||||
depends on !PREEMPT
|
depends on !PREEMPT
|
||||||
depends on HAVE_OPTPROBES
|
|
||||||
select KALLSYMS_ALL
|
select KALLSYMS_ALL
|
||||||
help
|
|
||||||
This option will allow kprobes to optimize breakpoint to
|
|
||||||
a jump for reducing its overhead.
|
|
||||||
|
|
||||||
config HAVE_EFFICIENT_UNALIGNED_ACCESS
|
config HAVE_EFFICIENT_UNALIGNED_ACCESS
|
||||||
bool
|
bool
|
||||||
|
|
Loading…
Reference in New Issue