path: root/tools/perf/builtin-trace.c
diff options
authorArnaldo Carvalho de Melo <>2015-04-22 10:04:23 -0300
committerArnaldo Carvalho de Melo <>2015-04-23 17:07:59 -0300
commitcb24d01d217497fb32467de22d773655f47d3896 (patch)
tree0513656136b73a177d1e00662a1d7a6bfaab952b /tools/perf/builtin-trace.c
parent0140e6141e4f1d4b15fb469e6912b0e71b7d1cc2 (diff)
perf trace: Enable events when doing system wide tracing and starting a workload
commit f7aa222ff397 Author: Arnaldo Carvalho de Melo <> Date: Tue Feb 3 13:25:39 2015 -0300 perf trace: No need to enable evsels for workload started from perf The assumption was that whenever a workload is specified, the attr.enable_on_exec evsel flag would be set, but that is not happening when perf_record_opts.system_wide is set, for instance That resulted in both perf_evlist__enable() and attr.enable_on_exec being not called/set, which made the events to remain disabled while the workload runs, producing no output. Fix it, by calling perf_evlist__enable() in the 'trace' tool when forking and not targetting a workload started from trace v2: Test against !target__none(), as suggested by Namhyung Kim, that is what is used in perf_evsel__config() when deciding if the attr.enable_on_exec flag to be set. More work is needed to cover other cases such as opts->initial_delay. Acked-by: Jiri Olsa <> Cc: Adrian Hunter <> Cc: Borislav Petkov <> Cc: David Ahern <> Cc: Don Zickus <> Cc: Frederic Weisbecker <> Cc: Namhyung Kim <> Cc: Stephane Eranian <> Link: Signed-off-by: Arnaldo Carvalho de Melo <>
Diffstat (limited to 'tools/perf/builtin-trace.c')
1 files changed, 3 insertions, 2 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index e124741be187..8842218e1856 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -2241,10 +2241,11 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
if (err < 0)
goto out_error_mmap;
+ if (!target__none(&trace->
+ perf_evlist__enable(evlist);
if (forks)
- else
- perf_evlist__enable(evlist);
trace->multiple_threads = evlist->threads->map[0] == -1 ||
evlist->threads->nr > 1 ||