linux/tools/perf
David Ahern 1342798cc1 perf tool: Precise mode requires exclude_guest
Summary of events per Peter:

  "Intel PEBS in VT-x context uses the DS address as a guest linear address,
  even though its programmed by the host as a host linear address. This
  either results in guest memory corruption and or the hardware faulting and
  'crashing' the virtual machine.  Therefore we have to disable PEBS on VT-x
  enter and re-enable on VT-x exit, enforcing a strict exclude_guest.

  AMB IBS does work but doesn't currently support exclude_* at all,
  setting an exclude_* bit will make it fail."

This patch handles userspace perf command, setting the exclude_guest
attribute if precise mode is requested, but only if a user has not
specified a request for guest or host only profiling (G or H attribute).

Kernel side AMD currently ignores all exclude_* bits, so there is no impact
to existing IBS code paths. Robert Richter has a patch where IBS code will
return EINVAL if an exclude_* bit is set. When this goes in it means use
of :p on AMD with IBS will first fail with EINVAL (because exclude_guest
will be set). Then the existing fallback code within perf will unset
exclude_guest and try again. The second attempt will succeed if the CPU
supports IBS profiling.

Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Robert Richter <robert.richter@amd.com>
Tested-by: Robert Richter <robert.richter@amd.com>
Reviewed-by: Robert Richter <robert.richter@amd.com>
Cc: Avi Kivity <avi@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Richter <robert.richter@amd.com>
Link: http://lkml.kernel.org/r/1347569955-54626-2-git-send-email-dsahern@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-10-16 12:43:31 -03:00
..
arch perf tools: Support for DWARF CFI unwinding on post processing 2012-08-11 15:06:56 -03:00
bench perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
config perf tools: Check libaudit availability for perf-trace builtin 2012-09-27 10:56:40 -03:00
Documentation perf trace: New tool 2012-09-26 20:42:23 -03:00
python perf python: Use attr.watermark in twatch.py 2012-01-30 18:38:23 -02:00
scripts perf scripts: Add event_analyzing_sample-record/report 2012-09-17 13:11:15 -03:00
ui perf hists: Introduce struct he_stat 2012-10-04 13:34:22 -03:00
util perf tool: Precise mode requires exclude_guest 2012-10-16 12:43:31 -03:00
.gitignore perf tools: Ignore compiled python binaries 2012-09-07 12:10:58 -03:00
bash_completion perf tools: Complete tracepoint event names 2012-10-04 12:44:52 -03:00
builtin-annotate.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-bench.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-buildid-cache.c perf buildid-cache: Don't use globals where not needed to 2012-10-02 18:36:35 -03:00
builtin-buildid-list.c perf buildid-list: Don't use globals where not needed to 2012-10-02 18:36:36 -03:00
builtin-diff.c perf tool: Add hpp interface to enable/disable hpp column 2012-10-04 13:30:27 -03:00
builtin-evlist.c perf evlist: Don't use globals where not needed to 2012-10-02 18:36:39 -03:00
builtin-help.c perf help: Don't use globals where not needed to 2012-10-02 18:36:31 -03:00
builtin-inject.c perf inject: Don't use globals where not needed to 2012-10-02 18:36:41 -03:00
builtin-kmem.c perf kmem: Don't use globals where not needed to 2012-10-02 18:36:32 -03:00
builtin-kvm.c perf kvm: Move global variables into a perf_kvm struct 2012-10-03 11:10:17 -03:00
builtin-list.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-lock.c perf lock: Don't use globals where not needed to 2012-10-02 18:36:33 -03:00
builtin-probe.c perf probe: Don't use globals where not needed to 2012-10-02 18:36:37 -03:00
builtin-record.c perf record: Don't use globals where not needed to 2012-10-02 18:36:40 -03:00
builtin-report.c perf tool: Add hpp interface to enable/disable hpp column 2012-10-04 13:30:27 -03:00
builtin-sched.c perf sched: Look up thread using tid instead of pid 2012-10-02 18:36:28 -03:00
builtin-script.c perf script: Don't use globals where not needed to 2012-10-02 18:36:30 -03:00
builtin-stat.c perf stat: Don't use globals where not needed to 2012-10-02 18:36:29 -03:00
builtin-test.c perf test: Add test to check we correctly parse and match syscall open parms 2012-09-26 13:42:01 -03:00
builtin-timechart.c perf timechart: Don't use globals where not needed to 2012-10-02 18:36:34 -03:00
builtin-top.c perf tools: Removing hists pair argument from output path 2012-10-04 13:29:45 -03:00
builtin-trace.c perf evlist: Introduce add_newtp method 2012-10-03 11:41:22 -03:00
builtin.h perf trace: New tool 2012-09-26 20:42:23 -03:00
command-list.txt perf trace: New tool 2012-09-26 20:42:23 -03:00
CREDITS
design.txt perf tools: Update ioctl documentation for PERF_IOC_FLAG_GROUP 2012-05-31 11:38:42 -03:00
Makefile perf tools: Convert to BACKTRACE_SUPPORT 2012-10-02 18:36:45 -03:00
MANIFEST perf kvm: Events analysis tool 2012-09-21 12:51:22 -03:00
perf-archive.sh perf archive: Make 'f' the last parameter for tar 2012-09-17 13:10:42 -03:00
perf.c perf tools: Convert to LIBAUDIT_SUPPORT 2012-10-02 18:36:21 -03:00
perf.h perf tools: Support for DWARF mode callchain 2012-08-11 15:07:18 -03:00