lkml.org 
[lkml]   [2012]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[RFC PATCH -tip 0/9]ftrace, kprobes: Ftrace-based kprobe optimization
    Date
    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



    \
     
     \ /
      Last update: 2012-05-29 15:21    [W:4.527 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site