linux/tools/perf/util
Adrian Hunter f6edb53c49 perf tools: Prefer to use a cpu-wide event for probing CLOEXEC
When doing a system-wide trace with Intel PT, the jump label set up as a
result of probing CLOEXEC gets reset while the trace is running.  That
causes an Intel PT decoding error because the object code (obtained from
/proc/kcore) does not match the running code at that point.  While we
can't expect there never to be jump label changes, we can avoid cases
that the perf tool itself creates.

The problem is avoided by first trying a cpu-wide event (pid = -1) for
probing the PERF_FLAG_FD_CLOEXEC flag and falling back to an event for
the current process (pid = 0).

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1407855871-15024-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-08-13 16:24:13 -03:00
..
include perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
scripting-engines perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
abspath.c
alias.c perf tools: Introduce zfree 2013-12-27 15:17:00 -03:00
annotate.c perf symbols: Make sure --symfs usage includes the path separator 2014-07-31 09:58:21 -03:00
annotate.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
bitmap.c
build-id.c perf tools: Use tid for finding thread 2014-05-12 11:09:50 +02:00
build-id.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
cache.h perf tools: Add perf_config_u64 function 2014-08-12 12:03:00 -03:00
callchain.c perf callchain: Fix appending a callchain from a previous sample 2014-07-16 17:57:35 -03:00
callchain.h perf tools powerpc: Adjust callchain based on DWARF debug info 2014-06-27 11:14:51 +02:00
cgroup.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
cgroup.h
cloexec.c perf tools: Prefer to use a cpu-wide event for probing CLOEXEC 2014-08-13 16:24:13 -03:00
cloexec.h perf tools: Enable close-on-exec flag on perf file descriptor 2014-07-18 09:09:34 +02:00
color.c perf tools: Make __hpp__fmt() receive an additional len argument 2014-08-12 12:03:05 -03:00
color.h perf tools: Make __hpp__fmt() receive an additional len argument 2014-08-12 12:03:05 -03:00
comm.c perf tools: Do proper comm override error handling 2014-01-16 16:44:39 -03:00
comm.h perf tools: Do proper comm override error handling 2014-01-16 16:44:39 -03:00
config.c perf tools: Add perf_config_u64 function 2014-08-12 12:03:00 -03:00
cpumap.c perf tools: Use cpu/possible instead of cpu/kernel_max 2014-04-22 17:39:16 +02:00
cpumap.h perf tools: Allow ability to map cpus to nodes easily 2014-04-22 17:39:12 +02:00
ctype.c
data.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
data.h perf tools: Add perf_data_file__write interface 2013-12-02 09:22:46 -03:00
debug.c perf tools: Add debug prints for ordered events queue 2014-08-12 12:03:01 -03:00
debug.h perf tools: Add debug prints for ordered events queue 2014-08-12 12:03:01 -03:00
dso.c perf symbols: Make sure --symfs usage includes the path separator 2014-07-31 09:58:21 -03:00
dso.h perf tools: Add dso__type() 2014-07-23 17:36:36 -03:00
dwarf-aux.c perf probe: Fix perf probe to find correct variable DIE 2014-06-04 14:49:20 +02:00
dwarf-aux.h perf probe: Fix to find line information for probe list 2013-10-04 15:16:05 -03:00
environment.c
event.c perf tools: Expose 'addr' functions so they can be reused 2014-07-25 12:08:34 -03:00
event.h perf tools: Expose 'addr' functions so they can be reused 2014-07-25 12:08:34 -03:00
evlist.c perf evlist: Don't run workload if not told to 2014-07-31 09:57:20 -03:00
evlist.h perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
evsel.c perf tools: Show better error message in case we fail to open counters due to EBUSY error 2014-08-12 12:03:02 -03:00
evsel.h perf evsel: Add 'immediate' option 2014-07-16 17:57:37 -03:00
exec_cmd.c
exec_cmd.h
generate-cmdlist.sh tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT 2013-10-09 08:48:28 +02:00
header.c perf tools: Separate the VDSO map name from the VDSO dso name 2014-07-23 17:36:32 -03:00
header.h perf tools: Add dsos__hit_all() 2014-07-23 11:25:40 -03:00
help.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
help.h
hist.c perf tools: Add dcacheline sort 2014-06-09 13:34:49 +02:00
hist.h perf tools: Add name field into perf_hpp_fmt 2014-08-12 12:03:07 -03:00
hweight.c
intlist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
intlist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
kvm-stat.h perf kvm: Add stat support on s390 2014-07-16 17:57:33 -03:00
levenshtein.c
levenshtein.h
machine.c perf tools: Add thread parameter to vdso__dso_findnew() 2014-07-23 17:37:26 -03:00
machine.h perf machine: Fix the lifetime of the VDSO temporary file 2014-07-23 17:14:39 -03:00
map.c perf tools: Add thread parameter to vdso__dso_findnew() 2014-07-23 17:37:26 -03:00
map.h perf tools: Add thread parameter to vdso__dso_findnew() 2014-07-23 17:37:26 -03:00
ordered-events.c perf tools: Allow out of order messages in forced flush 2014-08-12 12:03:02 -03:00
ordered-events.h perf tools: Allow out of order messages in forced flush 2014-08-12 12:03:02 -03:00
pager.c perf tools: Add cat as fallback pager 2014-05-21 11:48:33 +02:00
parse-events.c perf list: Fix checking for supported events on older kernels 2014-02-10 11:34:31 -03:00
parse-events.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
parse-events.l perf tools: Move start conditions to start of the flex file 2013-10-11 12:17:31 -03:00
parse-events.y tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
parse-options.c perf kvm: introduce --list-cmds for use by scripts 2014-03-14 18:08:41 -03:00
parse-options.h perf tools: Add option macro OPT_CALLBACK_OPTARG 2014-07-16 17:57:36 -03:00
path.c tools/perf: Turn strlcpy() into a __weak function 2013-10-09 08:48:49 +02:00
perf_regs.c perf tools: Cache register accesses for unwind processing 2014-06-12 16:53:19 +02:00
perf_regs.h perf tools: Cache register accesses for unwind processing 2014-06-12 16:53:19 +02:00
PERF-VERSION-GEN perf tools: Fix version when building out of tree 2013-11-07 10:40:47 -03:00
pmu.c perf tools: Fix pmu object compilation error 2014-04-22 17:39:09 +02:00
pmu.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
pmu.l
pmu.y perf tools: Fix build with bison 2.3 and older. 2013-02-14 16:12:34 -03:00
probe-event.c perf probe: Fix --del option to delete events only with uprobe events 2014-08-13 15:54:11 -03:00
probe-event.h perf probe: Replace line_list with intlist 2014-02-18 09:34:50 -03:00
probe-finder.c perf tools: Remove needless getopt.h includes 2014-07-17 12:59:00 -03:00
probe-finder.h perf probe: Support distro-style debuginfo for uprobe 2014-02-18 09:38:44 -03:00
pstack.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
pstack.h perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
python-ext-sources perf tools: Move fs.* to lib/api/fs/ 2014-02-18 09:34:49 -03:00
python.c perf tools: Factor eprintf to allow different debug variables 2014-07-17 12:58:59 -03:00
quote.c
quote.h
rblist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
rblist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
record.c perf tools: Fix probing the kernel API with cpu-wide events 2014-08-13 16:22:06 -03:00
run-command.c
run-command.h
session.c perf tools: Allow out of order messages in forced flush 2014-08-12 12:03:02 -03:00
session.h perf tools: Create ordered-events object 2014-08-12 12:02:58 -03:00
setup.py tools/: Convert to new topic libraries 2013-12-16 16:03:27 -03:00
sigchain.c
sigchain.h
sort.c perf tools: Add name field into perf_hpp_fmt 2014-08-12 12:03:07 -03:00
sort.h perf tools: Add dcacheline sort 2014-06-09 13:34:49 +02:00
srcline.c perf tools: Fix build error due to zfree() cast 2014-01-15 15:10:04 -03:00
stat.c perf stats: Add max and min stats 2013-08-07 17:35:26 -03:00
stat.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
strbuf.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
strbuf.h
strfilter.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
strfilter.h perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
string.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
strlist.c perf tools: Fix build error due to zfree() cast 2014-01-15 15:10:04 -03:00
strlist.h perf tools: Stop using 'self' in strlist 2013-01-25 12:49:28 -03:00
svghelper.c perf timechart: Implement IO mode 2014-07-10 00:22:54 +02:00
svghelper.h perf timechart: Implement IO mode 2014-07-10 00:22:54 +02:00
symbol-elf.c perf tools: Add dso__type() 2014-07-23 17:36:36 -03:00
symbol-minimal.c perf tools: Add dso__type() 2014-07-23 17:36:36 -03:00
symbol.c perf tools: Add cpu_startup_entry to the list of kernel idle symbols 2014-08-13 11:14:21 -03:00
symbol.h perf symbols: Make sure --symfs usage includes the path separator 2014-07-31 09:58:21 -03:00
target.c perf record: Make per-cpu mmaps the default. 2013-11-27 14:58:36 -03:00
target.h perf target: Move the checking of which map function to call into function. 2013-12-04 13:46:37 -03:00
thread_map.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
thread_map.h perf evlist: Add thread_map__nr() helper 2013-03-15 13:06:02 -03:00
thread.c perf tools: Add cpu to struct thread 2014-07-23 11:27:50 -03:00
thread.h perf tools: Add cpu to struct thread 2014-07-23 11:27:50 -03:00
tool.h perf tools: Rename ordered_samples bool to ordered_events 2014-08-12 12:02:54 -03:00
top.c perf tools: Rename 'perf_record_opts' to 'record_opts 2013-12-19 14:43:45 -03:00
top.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
trace-event-info.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
trace-event-parse.c perf tools: Fix memory leak in event_format__print function 2014-02-18 09:34:47 -03:00
trace-event-read.c perf tools: Remove needless getopt.h includes 2014-07-17 12:59:00 -03:00
trace-event-scripting.c perf symbols: Add 'machine' member to struct addr_location 2013-12-19 17:38:27 -03:00
trace-event.c tools lib traceevent: Make plugin unload function receive pevent 2014-01-15 15:10:40 -03:00
trace-event.h perf symbols: Add 'machine' member to struct addr_location 2013-12-19 17:38:27 -03:00
tsc.c perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
tsc.h perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
unwind-libdw.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
unwind-libdw.h perf tools: Add libdw DWARF post unwind support 2014-02-24 09:29:36 -03:00
unwind-libunwind.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
unwind.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
usage.c
util.c perf tools: Introduce set_term_quiet_input helper function 2014-08-13 11:14:22 -03:00
util.h perf tools: Introduce set_term_quiet_input helper function 2014-08-13 11:14:22 -03:00
values.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
values.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
vdso.c perf tools: Add thread parameter to vdso__dso_findnew() 2014-07-23 17:37:26 -03:00
vdso.h perf tools: Add thread parameter to vdso__dso_findnew() 2014-07-23 17:37:26 -03:00
wrapper.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
xyarray.c
xyarray.h