Peter Zijlstra
4ed7c92d68
perf_events: Undo some recursion damage
...
Make perf_swevent_get_recursion_context return a context number
and disable preemption.
This could be used to remove the IRQ disable from the trace bit
and index the per-cpu buffer with.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Paul Mackerras <paulus@samba.org >
LKML-Reference: <20091123103819.993226816@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-11-23 11:49:57 +01:00
Frederic Weisbecker
ce71b9df88
tracing: Use the perf recursion protection from trace event
...
When we commit a trace to perf, we first check if we are
recursing in the same buffer so that we don't mess-up the buffer
with a recursing trace. But later on, we do the same check from
perf to avoid commit recursion. The recursion check is desired
early before we touch the buffer but we want to do this check
only once.
Then export the recursion protection from perf and use it from
the trace events before submitting a trace.
v2: Put appropriate Reported-by tag
Reported-by: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jason Baron <jbaron@redhat.com >
LKML-Reference: <1258864015-10579-1-git-send-email-fweisbec@gmail.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-11-22 09:03:42 +01:00
Frederic Weisbecker
444a2a3bcd
tracing, perf_events: Protect the buffer from recursion in perf
...
While tracing using events with perf, if one enables the
lockdep:lock_acquire event, it will infect every other perf
trace events.
Basically, you can enable whatever set of trace events through
perf but if this event is part of the set, the only result we
can get is a long list of lock_acquire events of rcu read lock,
and only that.
This is because of a recursion inside perf.
1) When a trace event is triggered, it will fill a per cpu
buffer and submit it to perf.
2) Perf will commit this event but will also protect some data
using rcu_read_lock
3) A recursion appears: rcu_read_lock triggers a lock_acquire
event that will fill the per cpu event and then submit the
buffer to perf.
4) Perf detects a recursion and ignores it
5) Perf continues its work on the previous event, but its buffer
has been overwritten by the lock_acquire event, it has then
been turned into a lock_acquire event of rcu read lock
Such scenario also happens with lock_release with
rcu_read_unlock().
We could turn the rcu_read_lock() into __rcu_read_lock() to drop
the lock debugging from perf fast path, but that would make us
lose the rcu debugging and that doesn't prevent from other
possible kind of recursion from perf in the future.
This patch adds a recursion protection based on a counter on the
perf trace per cpu buffers to solve the problem.
-v2: Fixed lost whitespace, added reviewed-by tag
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
Reviewed-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Jason Baron <jbaron@redhat.com >
LKML-Reference: <1257477185-7838-1-git-send-email-fweisbec@gmail.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-11-08 10:31:42 +01:00
Masami Hiramatsu
77b44d1b7c
tracing/kprobes: Rename Kprobe-tracer to kprobe-event
...
Rename Kprobes-based event tracer to kprobes-based tracing event
(kprobe-event), since it is not a tracer but an extensible
tracing event interface.
This also changes CONFIG_KPROBE_TRACER to CONFIG_KPROBE_EVENT
and sets it y by default.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
LKML-Reference: <20091104001247.3454.14131.stgit@harusame>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-11-04 13:02:48 +01:00
Masami Hiramatsu
dd004c475c
kprobe-tracer: Compare both of event-name and event-group to find probe
...
Fix find_probe_event() to compare both of event-name and
event-group. Without this fix, kprobe-tracer overwrites existing
same event-name probe even if its group-name is different.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
LKML-Reference: <20091027204244.30545.27516.stgit@harusame>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-10-29 08:47:47 +01:00
Masami Hiramatsu
e63cc2397e
tracing/kprobes: Add failure messages for debugging
...
Add verbose failure messages to kprobe-tracer for debugging.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20091017000728.16556.16713.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-10-17 09:53:58 +02:00
Masami Hiramatsu
f397af06e4
tracing/kprobes: Update kprobe-tracer selftest against new syntax
...
Update kprobe-tracer selftest since command syntax has been
changed.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20091017000720.16556.26343.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-10-17 09:53:57 +02:00
Masami Hiramatsu
e93f4d8539
tracing/kprobes: Robustify fixed field names against variable field names conflicts
...
Rename probe-common fixed field names to harder conflictable names,
because current 'ip', 'func', and other probe field names are easily in
conflict with user-specified variable names.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Frank Ch. Eigler <fche@redhat.com >
LKML-Reference: <20091007222814.1684.407.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-12 23:31:51 +02:00
Masami Hiramatsu
a703d946e8
tracing/kprobes: Avoid field name confliction
...
Check whether the argument name is in conflict with other field names
while creating a kprobe through the debugfs interface.
Changes in v3:
- Check strcmp() == 0 instead of !strcmp().
Changes in v2:
- Add common_lock_depth to reserved name list.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Frank Ch. Eigler <fche@redhat.com >
LKML-Reference: <20091007222807.1684.26880.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-12 23:31:49 +02:00
Masami Hiramatsu
2e06ff6389
tracing/kprobes: Make special variable names more self-explainable
...
Rename special variables to more self-explainable names as below:
- $rv to $retval
- $sa to $stack
- $aN to $argN
- $sN to $stackN
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Frank Ch. Eigler <fche@redhat.com >
LKML-Reference: <20091007222759.1684.3319.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-12 23:30:29 +02:00
Masami Hiramatsu
99329c44f2
tracing/kprobes: Remove '$ra' special variable
...
Remove '$ra' (return address) because it is already shown at the head of
each entry.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Frank Ch. Eigler <fche@redhat.com >
LKML-Reference: <20091007222748.1684.12711.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-12 19:24:05 +02:00
Masami Hiramatsu
405b2651e4
tracing/kprobes: Add $ prefix to special variables
...
Add $ prefix to the special variables(e.g. sa, rv) of kprobe-tracer.
This resolves consistency issues between kprobe_events and perf-kprobe.
The main goal is to avoid conflicts between local variable names of
probed functions, used by perf probe, and special variables used
in the kprobe event creation interface (stack values, etc...) and
also available from perf probe.
ie: we don't want rv (return value) to conflict with a local variable
named rv in a probed function.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Frank Ch. Eigler <fche@redhat.com >
LKML-Reference: <20091007222740.1684.91170.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-12 19:21:35 +02:00
Masami Hiramatsu
a1a138d05f
tracing/kprobes: Use global event perf buffers in kprobe tracer
...
Use new percpu global event buffer instead of stack in kprobe
tracer while tracing through perf.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Steven Rostedt <rostedt@goodmis.org >
Acked-by: Ingo Molnar <mingo@elte.hu >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090925182011.10157.60140.stgit@omoto>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-10-03 02:21:39 +02:00
Frederic Weisbecker
d7a4b414ee
Merge commit 'linus/master' into tracing/kprobes
...
Conflicts:
kernel/trace/Makefile
kernel/trace/trace.h
kernel/trace/trace_event_types.h
kernel/trace/trace_export.c
Merge reason:
Sync with latest significant tracing core changes.
2009-09-23 23:08:43 +02:00
Masami Hiramatsu
5a0d9050db
tracing/kprobes: Disable kprobe events by default after creation
...
Disable newly created kprobe events by default, not to disturb
another user using ftrace. "Disturb" means when someone is using
ftrace and another user tries to use perf-tools, (in near
future) if he defines new kprobe event via perf-tools, then new
events will mess up the frace buffer. Fix this to allow proper
and transparent kprobes events concurrent usage between ftrace
users and perf users.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090914204937.18779.59422.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-17 04:04:01 +02:00
Masami Hiramatsu
74ebb63e7c
tracing/kprobes: Fix profiling alignment for perf_counter buffer
...
Fix *probe_profile_func() to align buffer size, since perf_counter
requires its buffer entries to be 8 bytes aligned.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090914204928.18779.60029.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-17 04:03:57 +02:00
Masami Hiramatsu
50d7805607
tracing/kprobes: Add probe handler dispatcher to support perf and ftrace concurrent use
...
Add kprobe_dispatcher and kretprobe_dispatcher to dispatch event
in both profile and tracing handlers.
This allows simultaneous kprobe uses by ftrace and perf.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090914204920.18779.57555.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-17 04:03:54 +02:00
Masami Hiramatsu
2d5e067edc
tracing/kprobes: Fix trace_probe registration order
...
Fix trace_probe registration order. ftrace_event_call and ftrace_event
must be registered before kprobe/kretprobe, because tracing/profiling
handlers dereference the event-id.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Acked-by: Steven Rostedt <rostedt@goodmis.org >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090914204856.18779.52961.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-17 04:03:40 +02:00
Masami Hiramatsu
f52487e9c0
tracing/kprobes: Support custom subsystem for each kprobe event
...
Support specifying a custom subsystem(group) for each kprobe event.
This allows users to create new group to control several probes
at once, or add events to existing groups as additional tracepoints.
New synopsis:
p[:[subsys/]event-name] KADDR|KSYM[+offs] [ARGS]
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235353.22412.15149.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-17 04:03:24 +02:00
Masami Hiramatsu
6e9f23d161
tracing/kprobes: Show event name in trace output
...
Show event name in tracing/trace output. This also fixes kprobes events
format to comply with other tracepoint events formats.
Before patching:
<...>-1447 [001] 1038282.286875: do_sys_open+0x0/0xd6: ...
<...>-1447 [001] 1038282.286878: sys_openat+0xc/0xe <- do_sys_open: ...
After patching:
<...>-1447 [001] 1038282.286875: myprobe: (do_sys_open+0x0/0xd6) ...
<...>-1447 [001] 1038282.286878: myretprobe: (sys_openat+0xc/0xe <- do_sys_open) ...
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235345.22412.76527.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 06:09:47 +02:00
Masami Hiramatsu
eca0d916f6
tracing/kprobes: Add argument name support
...
Add argument name assignment support and remove "alias" lines from format.
This allows user to assign unique name to each argument. For example,
$ echo p do_sys_open dfd=a0 filename=a1 flags=a2 mode=a3 > kprobe_events
This assigns dfd, filename, flags, and mode to 1st - 4th arguments
respectively. Trace buffer shows those names too.
<...>-1439 [000] 1200885.933147: do_sys_open+0x0/0xdf: dfd=ffffff9c filename=bfa898ac flags=8000 mode=0
This helps users to know what each value means.
Users can filter each events by these names too. Note that you can not
filter by argN anymore.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235337.22412.77383.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 06:08:00 +02:00
Masami Hiramatsu
e08d1c657f
tracing/kprobes: Add event profiling support
...
Add *probe_profile_enable/disable to support kprobes raw events
sampling from perf counters, like other ftrace events, when
CONFIG_PROFILE_EVENT=y.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235329.22412.94731.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 05:33:03 +02:00
Masami Hiramatsu
4a846b443b
tracing/kprobes: Cleanup kprobe tracer code.
...
Simplify trace_probe to remove a union, and remove some redundant
wrappers.
And also, cleanup create_trace_probe() function.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235322.22412.52525.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 05:31:21 +02:00
Masami Hiramatsu
2fba0c8867
tracing/kprobes: Fix probe offset to be unsigned
...
Prohibit user to specify negative offset from symbols.
Since kprobe.offset is unsigned int, the offset must be always positive
value.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <20090910235314.22412.64631.stgit@dhcp-100-2-132.bos.redhat.com >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 04:18:58 +02:00
Frederic Weisbecker
8f8ffe2485
Merge commit 'tracing/core' into tracing/kprobes
...
Conflicts:
kernel/trace/trace_export.c
kernel/trace/trace_kprobe.c
Merge reason: This topic branch lacks an important
build fix in tracing/core:
0dd7b74787
:
tracing: Fix double CPP substitution in TRACE_EVENT_FN
that prevents from multiple tracepoint headers inclusion crashes.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-09-11 01:09:23 +02:00
Masami Hiramatsu
30a7e073b5
tracing/kprobes: Change trace_arg to probe_arg
...
Change trace_arg_string() and parse_trace_arg() to probe_arg_string()
and parse_probe_arg(), since those are kprobe-tracer local functions.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090821194351.12478.15247.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:59 +02:00
Masami Hiramatsu
38a47497d9
tracing/kprobes: Fix format typo in trace_kprobes
...
Fix a format typo in kprobe-tracer.
Currently, it shows 'tsize' in format;
$ cat /debug/tracing/events/kprobes/event/format
...
field: unsigned long ip; offset:16;tsize:8;
field: int nargs; offset:24;tsize:4;
...
This should be '\tsize';
$ cat /debug/tracing/events/kprobes/event/format
...
field: unsigned long ip; offset:16; size:8;
field: int nargs; offset:24; size:4;
...
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090821194343.12478.37618.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:54 +02:00
Masami Hiramatsu
cd7e7bd5e4
tracing: Add kprobes event profiling interface
...
Add profiling interfaces for each kprobes event. This interface provides
how many times each probe hit or missed.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090813203541.31965.8452.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:39 +02:00
Masami Hiramatsu
ff50d99136
tracing: Kprobe tracer assigns new event ids for each event
...
Assign new event ids for each kprobes event. This doesn't clear
ring_buffer when unregistering each kprobe event. Thus, if you mind
'Unknown event' messages, clear the buffer manually after changing
kprobe events.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090813203534.31965.49105.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:33 +02:00
Masami Hiramatsu
4263565d49
tracing: Generate names for each kprobe event automatically
...
Generate names for each kprobe event based on the probe point.
(SYMBOL+offs or MEMADDR).
Also remove generic k*probe event types because there is no user
of those types.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090813203526.31965.56672.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:28 +02:00
Masami Hiramatsu
a82378d880
tracing: Kprobe-tracer supports more than 6 arguments
...
Support up to 128 arguments to fetch for each kprobes event.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Avi Kivity <avi@redhat.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: Frank Ch. Eigler <fche@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jason Baron <jbaron@redhat.com >
Cc: Jim Keniston <jkenisto@us.ibm.com >
Cc: K.Prasad <prasad@linux.vnet.ibm.com >
Cc: Lai Jiangshan <laijs@cn.fujitsu.com >
Cc: Li Zefan <lizf@cn.fujitsu.com >
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it >
Cc: Roland McGrath <roland@redhat.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tom Zanussi <tzanussi@gmail.com >
Cc: Vegard Nossum <vegard.nossum@gmail.com >
LKML-Reference: <20090813203518.31965.96979.stgit@localhost.localdomain >
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
2009-08-27 02:32:23 +02:00
Masami Hiramatsu
413d37d1eb
tracing: Add kprobe-based event tracer
...
Add kprobes-based event tracer on ftrace.
This tracer is similar to the events tracer which is based on Tracepoint
infrastructure. Instead of Tracepoint, this tracer is based on kprobes
(kprobe and kretprobe). It probes anywhere where kprobes can probe(this
means, all functions body except for __kprobes functions).
Similar to the events tracer, this tracer doesn't need to be activated
via current_tracer, instead of that, just set probe points via
/sys/kernel/debug/tracing/kprobe_events. And you can set filters on each
probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter.
This tracer supports following probe arguments for each probe.
%REG : Fetch register REG
sN : Fetch Nth entry of stack (N >= 0)
sa : Fetch stack address.
@ADDR : Fetch memory at ADDR (ADDR should be in kernel)
@SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol)
aN : Fetch function argument. (N >= 0)
rv : Fetch return value.
ra : Fetch return address.
+|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.
See Documentation/trace/kprobetrace.txt in the next patch for details.
Changes from v13:
- Support 'sa' for stack address.
- Use call->data instead of container_of() macro.
[fweisbec@gmail.com: Fixed conflict against latest tracing/core]
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Avi Kivity <avi@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: K.Prasad <prasad@linux.vnet.ibm.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it>
Cc: Roland McGrath <roland@redhat.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Vegard Nossum <vegard.nossum@gmail.com>
LKML-Reference: <20090813203510.31965.29123.stgit@localhost.localdomain>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
2009-08-27 02:31:54 +02:00