public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH -tip  0/9]ftrace, kprobes: Ftrace-based kprobe optimization
@ 2012-05-29 12:48 Masami Hiramatsu
  2012-05-29 12:48 ` [RFC PATCH -tip 1/9] ftrace: Add pt_regs acceptable trace callback Masami Hiramatsu
                   ` (9 more replies)
  0 siblings, 10 replies; 31+ messages in thread
From: Masami Hiramatsu @ 2012-05-29 12:48 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: linux-kernel, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	Ananth N Mavinakayanahalli, Frank Ch. Eigler, Andrew Morton,
	Frederic Weisbecker, yrl.pp-manager.tt

Hi Steven,

Here, the series of patches which allows kprobes to use ftrace
for optimizing probing path if the probe on ftrace (mcount call).
The optimization is transparently done by kprobes.

Only if kprobe.break_handler is set, that probe can not be
optimized with ftrace (nor put on ftrace). The reason why this
limitation comes is that this break_handler may be used only
from jprobes which changes ip address (for fetching the function
arguments).
In this series, ftrace doesn't allow to change regs->ip,
since I don't want to make any non-essential trouble ;)

After deep consideration, I've decided to remove "real_addr"
method at this time, since it is hard to achieve complete
transparency with the combination of jprobe and aggregated
kprobes.
And also, at least on x86, ftrace-based kprobes is available.

Anyway, I can say jprobes is an out-dated probe because we 
already has kprobe-tracer and perf-probe which allows us to
get function arguments directly from kprobes. :)

For using ftrace from kprobes, this series introduces two
new interface for ftrace;

 - ftrace_ops.regs_func, which is a callback handler
   invoked with pt_regs as third argument. For enable
   this feature, ftrace_ops.flags must set
   FTRACE_OPS_FL_SAVE_REGS bit.
 - ftrace_set_filter_ip(), which allows to set new
   address-based filter instead of glob pattern.

In this series, FTRACE_OPS_FL_SAVE_REGS feature is supported
only on x86 (x86-64 and i386). It may be possible to port
it on other architectures too.

Also, this makes all __kprobes functions "notrace", because
some of those functions are considered as to be called from
kprobes handler which is called from function tracer.
I think that is another discussion point. Perhaps, we need
to introduce another tag which means "don't put kprobe on
this function" instead of __kprobes and apply that.

Thank you,

---

Masami Hiramatsu (8):
      kprobes/x86: ftrace based optiomization for x86
      kprobes: introduce ftrace based optiomization
      kprobes: Move locks into appropriate functions
      kprobes: cleanup to separate probe-able check
      ftrace: add ftrace_set_filter_ip() for address based filter
      ftrace/x86: Support SAVE_REGS feature on i386
      ftrace/x86-64: support SAVE_REGS feature on x86-64
      ftrace: Add pt_regs acceptable trace callback

Steven Rostedt (1):
      kprobes: Inverse taking of module_mutex with kprobe_mutex


 arch/x86/include/asm/ftrace.h  |    4 +
 arch/x86/include/asm/kprobes.h |    1 
 arch/x86/kernel/entry_32.S     |   64 +++++++++-
 arch/x86/kernel/entry_64.S     |   38 +++++-
 arch/x86/kernel/kprobes.c      |   48 ++++++++
 include/linux/ftrace.h         |   24 ++++
 include/linux/kprobes.h        |   35 +++++
 kernel/kprobes.c               |  256 +++++++++++++++++++++++++++++-----------
 kernel/trace/ftrace.c          |  103 ++++++++++++++--
 9 files changed, 471 insertions(+), 102 deletions(-)

-- 
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2012-06-04 15:11 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-29 12:48 [RFC PATCH -tip 0/9]ftrace, kprobes: Ftrace-based kprobe optimization Masami Hiramatsu
2012-05-29 12:48 ` [RFC PATCH -tip 1/9] ftrace: Add pt_regs acceptable trace callback Masami Hiramatsu
2012-06-02  2:07   ` Steven Rostedt
2012-06-04 13:58     ` Masami Hiramatsu
2012-06-04 14:25       ` Steven Rostedt
2012-06-04 14:57         ` Masami Hiramatsu
2012-06-04 15:11           ` Steven Rostedt
2012-05-29 12:49 ` [RFC PATCH -tip 2/9] ftrace/x86-64: support SAVE_REGS feature on x86-64 Masami Hiramatsu
2012-05-29 23:05   ` Steven Rostedt
2012-05-30  6:39     ` Masami Hiramatsu
2012-05-30 11:34       ` Steven Rostedt
2012-05-29 12:49 ` [RFC PATCH -tip 3/9] ftrace/x86: Support SAVE_REGS feature on i386 Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 4/9] ftrace: add ftrace_set_filter_ip() for address based filter Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 5/9] kprobes: Inverse taking of module_mutex with kprobe_mutex Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 6/9] kprobes: cleanup to separate probe-able check Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 7/9] kprobes: Move locks into appropriate functions Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 8/9] kprobes: introduce ftrace based optiomization Masami Hiramatsu
2012-05-30  7:22   ` Ananth N Mavinakayanahalli
2012-05-30  7:56     ` Masami Hiramatsu
2012-05-29 12:49 ` [RFC PATCH -tip 9/9] kprobes/x86: ftrace based optiomization for x86 Masami Hiramatsu
2012-05-29 22:45 ` [RFC PATCH -tip 0/9]ftrace, kprobes: Ftrace-based kprobe optimization Steven Rostedt
2012-05-30  6:59   ` Masami Hiramatsu
2012-05-30 11:39     ` Steven Rostedt
2012-05-31 15:01       ` Masami Hiramatsu
2012-05-31 15:15         ` Steven Rostedt
2012-05-31 15:28           ` Masami Hiramatsu
2012-06-01 13:36           ` Masami Hiramatsu
2012-06-01 14:20             ` Steven Rostedt
2012-06-04 11:45               ` Masami Hiramatsu
2012-06-04 12:07                 ` Steven Rostedt
2012-06-04 12:24                   ` Masami Hiramatsu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox