perf stat: Fix compatibility behavior
Commit-ID: ede70290046043b2638204cab55e26ea1d0c6cd9 Gitweb: http://git.kernel.org/tip/ede70290046043b2638204cab55e26ea1d0c6cd9 Author: Ingo Molnar <[email protected]> AuthorDate: Thu, 28 Apr 2011 08:48:42 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 28 Apr 2011 08:48:42 +0200
perf stat: Fix compatibility behavior
Instead of failing on an unknown event, when new perf stat is run on older kernels:
$ ./perf stat true Error: open_counter returned with 22 (Invalid argument). /bin/dmesg may provide additional information.
Fatal: Not all events could be opened.
Just ignore EINVAL and ENOSYS, we'll print the results as not counted:
Performance counter stats for 'true':
0.239483 task-clock # 0.493 CPUs utilized
0 context-switches # 0.000 M/sec
0 CPU-migrations # 0.000 M/sec
86 page-faults # 0.359 M/sec
704,766 cycles # 2.943 GHz <not counted> stalled-cycles
381,961 instructions # 0.54 insns per cycle
69,626 branches # 290.735 M/sec
4,594 branch-misses # 6.60% of all branches
0.000485883 seconds time elapsed
Cc Peter Zijlstra <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- tools/perf/builtin-stat.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
tools/perf/builtin-stat.c +4 -1
@@ -372,7 +372,10 @@ static int run_perf_stat(int argc __used, const char **argv)list_for_each_entry (counter, &evsel_list->entries, node) {if (create_perf_stat_counter (counter) <0 ) { -if (errno == -EPERM || errno == -EACCES ) { +if (errno ==EINVAL || errno ==ENOSYS ) +continue ; + +if (errno ==EPERM || errno ==EACCES ) { error("You may not have permission to collect %sstats.\n" "\t Consider tweaking" " /proc/sys/kernel/perf_event_paranoid or running as root.",