All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Jason Baron <jbaron@redhat.com>,
	yrl.pp-manager.tt@hitachi.com
Subject: Re: [PATCH 0/5][RFC] kprobes/ftrace: Have kprobes use ftrace on ftrace nops
Date: Thu, 11 Aug 2011 15:28:44 +0900	[thread overview]
Message-ID: <4E43769C.9000901@hitachi.com> (raw)
In-Reply-To: <1313022842.18583.282.camel@gandalf.stny.rr.com>

(2011/08/11 9:34), Steven Rostedt wrote:
> On Thu, 2011-08-11 at 09:21 +0900, Masami Hiramatsu wrote:
>> Hi Steven,
>>
>> Thanks for this nice feature!
>>
>> (2011/08/11 1:22), Steven Rostedt wrote:
>>> 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.
>>
>> I agreed this idea, this looks good to me too :)
>> With -fentry, this can improve dynamic trace events very much.
>>
>> BTW (OT), it seems that current kprobe data structure becomes a bit
>> fat. Maybe what we need is just a "holder of hooking handler" as
>> what ftrace provides, not a full storage data structure of copied
>> instrucutions. Perhaps, we'd better diet the kprobe structure for
>> transparency of hooking infrastructure.
>
> Sure, I can make the ftrace_ops field in kprobes dynamically allocated
> instead. That shouldn't be an issue.

By the way (again), perhaps, much simpler solution is using ftrace
not in kprobe, but in the trace_kprobe. Of course, there are several
pros and cons...

The pros:
- Arch independent solution (anyway, ftrace still needs passing pt_regs
 to their handler)
- Don't need to introduce more complexity into kprobes itself.
- Maybe systemtap also can catch up with this as using same method.

The cons:
- Native kprobes users will be disappointed... anyway, they just need to
  move their probes to the next instruction (usually addr+=5 is OK).

... are there any other cons? :)

Thank you,


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

  reply	other threads:[~2011-08-11  6:28 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-10 16:22 [PATCH 0/5][RFC] kprobes/ftrace: Have kprobes use ftrace on ftrace nops Steven Rostedt
2011-08-10 16:22 ` [PATCH 1/5][RFC] tracing: Clean up tb_fmt to not give faulty compile warning Steven Rostedt
2011-08-10 16:22 ` [PATCH 2/5][RFC] ftrace: Pass ftrace_ops as third parameter to function trace Steven Rostedt
2011-08-10 16:22 ` [PATCH 3/5][RFC] ftrace: Return pt_regs to function trace callback (x86_64 only so Steven Rostedt
2011-08-11  5:55   ` Masami Hiramatsu
2011-08-11 12:59     ` Steven Rostedt
2011-08-12  0:55       ` Masami Hiramatsu
2011-08-12 13:05         ` Steven Rostedt
2011-08-10 16:22 ` [PATCH 4/5][RFC] kprobes: Inverse taking of module_mutex with kprobe_mutex Steven Rostedt
2011-08-10 16:22 ` [PATCH 5/5][RFC] kprobes: Use ftrace hooks when probing ftrace nops Steven Rostedt
2011-08-11  7:41   ` Masami Hiramatsu
2011-08-11 13:22     ` Steven Rostedt
2011-08-12  2:41       ` Masami Hiramatsu
2011-08-12  5:46       ` Ananth N Mavinakayanahalli
2011-08-12 13:14         ` Steven Rostedt
2011-08-11  0:21 ` [PATCH 0/5][RFC] kprobes/ftrace: Have kprobes use ftrace on " Masami Hiramatsu
2011-08-11  0:34   ` Steven Rostedt
2011-08-11  6:28     ` Masami Hiramatsu [this message]
2011-08-11 13:01       ` Steven Rostedt
2011-08-12  2:57         ` Masami Hiramatsu
2011-08-12 13:08           ` Steven Rostedt
2011-08-13 10:09             ` Masami Hiramatsu
2011-08-14  2:58               ` Steven Rostedt
2011-08-14 10:28                 ` Masami Hiramatsu
2011-08-15 13:06                   ` Steven Rostedt
2011-08-17 12:12                     ` Masami Hiramatsu
2011-08-18 20:06                       ` Steven Rostedt
2011-08-19  2:41                         ` Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E43769C.9000901@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --cc=acme@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=fweisbec@gmail.com \
    --cc=jbaron@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=yrl.pp-manager.tt@hitachi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.