1
0
Fork 0
alistair23-linux/Documentation/trace
Andi Kleen 7f47d8cc03 x86, tracing, perf: Add trace point for MSR accesses
For debugging low level code interacting with the CPU it is often
useful to trace the MSR read/writes. This gives a concise summary of
PMU and other operations.

perf has an ad-hoc way to do this using trace_printk, but it's
somewhat limited (and also now spews ugly boot messages when enabled)

Instead define real trace points for all MSR accesses.

This adds three new trace points: read_msr and write_msr and rdpmc.

They also report if the access faulted (if *_safe is used)

This allows filtering and triggering on specific MSR values, which
allows various more advanced debugging techniques.

All the values are well defined in the CPU documentation.

The trace can be post processed with
Documentation/trace/postprocess/decode_msr.py to add symbolic MSR
names to the trace.

I only added it to native MSR accesses in C, not paravirtualized or in
entry*.S (which is not too interesting)

Originally the patch kit moved the MSRs out of line.  This uses an
alternative approach recommended by Steven Rostedt of only moving the
trace calls out of line, but open coding the access to the jump label.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Link: http://lkml.kernel.org/r/1449018060-1742-3-git-send-email-andi@firstfloor.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-12-06 12:56:10 +01:00
..
postprocess x86, tracing, perf: Add trace point for MSR accesses 2015-12-06 12:56:10 +01:00
coresight.txt Doc: trace: Fix typo in coresight.txt 2015-08-05 13:30:16 -07:00
events-kmem.txt mm-tracepoint: rename page-free events 2012-01-10 16:30:41 -08:00
events-msr.txt x86, tracing, perf: Add trace point for MSR accesses 2015-12-06 12:56:10 +01:00
events-nmi.txt x86: Add NMI duration tracepoints 2013-06-23 11:52:58 +02:00
events-power.txt PM / QoS: Rename device resume latency QoS items 2014-02-11 00:35:23 +01:00
events.txt tracing: Add some documentation about set_event_pid 2015-11-03 16:37:15 -05:00
ftrace-design.txt ftrace: Remove check for HAVE_FUNCTION_TRACE_MCOUNT_TEST 2014-07-18 13:57:01 -04:00
ftrace.txt tracing: Add some documentation about set_event_pid 2015-11-03 16:37:15 -05:00
function-graph-fold.vim tracing: Add vim script to enable folding for function_graph traces 2009-08-26 00:32:04 -04:00
intel_th.txt intel_th: Add driver infrastructure for Intel(R) Trace Hub devices 2015-10-04 20:28:58 +01:00
kprobetrace.txt doc: fix old config name of kprobetrace 2012-09-27 12:11:29 +02:00
mmiotrace.txt Documentation: Update mmiotrace.txt 2009-12-20 06:18:23 +01:00
ring-buffer-design.txt doc: fix double words 2014-03-21 13:16:58 +01:00
stm.txt stm class: Introduce an abstraction for System Trace Module devices 2015-10-04 20:28:58 +01:00
tracepoint-analysis.txt mm-tracepoint: fix documentation and examples 2012-01-10 16:30:41 -08:00
tracepoints.txt tracing: Add trace_<tracepoint>_enabled() function 2014-05-07 12:10:51 -04:00
uprobetracer.txt tracing/uprobes: Add @+file_offset fetch method 2014-01-02 20:57:05 -05:00