lkml.org 
[lkml]   [2011]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[PATCH 0/5][RFC] kprobes/ftrace: Have kprobes use ftrace on ftrace nops
    Hi All,

    I started working on adding the -mfentry switch to ftrace, which
    allows us to remove the frame pointers requirement from function tracing
    as well as makes mcount (fentry) work just better.

    But when I did this in another branch, I noticed that I broke kprobes
    in its most common usage. The attaching a probe at the beginning of
    a function to use get to its parameters.

    So I started this branch. This branch is to have kprobes use ftrace
    directly when a probe is attached to a ftrace nop. Currently, kprobes
    will just error when that happens. With this patch set, it will hook
    into the ftrace infrastructure and use ftrace instead. This is more
    like an optimized probe as no breakpoints need to be set. A call to
    the function is done directly via the mcount trampoline. If ftrace
    pt_regs is implemented for an arch, kprobes gets this feature for free.

    The first patch is just a clean up that I need to push out to get rid
    of the annoying compile warning about initialized variables that
    gcc can't tell have been initialized.

    The next two patches have ftrace pass both the ftrace_ops structure
    and the pt_regs to the callback function that is registered with ftrace.

    The last two patches have kprobes interact with ftrace and use the
    ftrace infrastructure instead.

    I only did this for x86_64, and will do it for x86_32 and PPC64 if everyone
    agrees with this approach. Then I could find people to do it for other
    archs :)

    Thanks!

    -- Steve

    This patch set can be found at:

    git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
    rfc/kprobes/ftrace

    Head SHA1: e704df971bc958c789e9dcf0b453e4c02e27887b


    Steven Rostedt (5):
    tracing: Clean up tb_fmt to not give faulty compile warning
    ftrace: Pass ftrace_ops as third parameter to function trace callback
    ftrace: Return pt_regs to function trace callback (x86_64 only so far)
    kprobes: Inverse taking of module_mutex with kprobe_mutex
    kprobes: Use ftrace hooks when probing ftrace nops

    ----
    arch/x86/include/asm/ftrace.h | 42 ++++++----
    arch/x86/kernel/entry_64.S | 24 +++++-
    include/linux/ftrace.h | 27 ++++++-
    include/linux/kprobes.h | 6 ++
    kernel/kprobes.c | 167 ++++++++++++++++++++++++++++++++++---
    kernel/trace/ftrace.c | 74 +++++++++++------
    kernel/trace/trace_events.c | 3 +-
    kernel/trace/trace_functions.c | 10 ++-
    kernel/trace/trace_irqsoff.c | 3 +-
    kernel/trace/trace_printk.c | 19 ++--
    kernel/trace/trace_sched_wakeup.c | 3 +-
    kernel/trace/trace_selftest.c | 20 ++++-
    kernel/trace/trace_stack.c | 3 +-
    13 files changed, 323 insertions(+), 78 deletions(-)

    \
     
     \ /
      Last update: 2011-08-10 18:33    [from the cache]
    ©2003-2011 Jasper Spaans