[tip:perf/stat] perf stat: Fix compatibility behavior

From: tip-bot for Ingo Molnar
Date: Thu Apr 28 2011 - 02:56:38 EST


Commit-ID: ede70290046043b2638204cab55e26ea1d0c6cd9
Gitweb: http://git.kernel.org/tip/ede70290046043b2638204cab55e26ea1d0c6cd9
Author: Ingo Molnar <mingo@xxxxxxx>
AuthorDate: Thu, 28 Apr 2011 08:48:42 +0200
Committer: Ingo Molnar <mingo@xxxxxxx>
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 <a.p.zijlstra@xxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx>
Link: http://lkml.kernel.org/n/tip-7y40wib8n1eqio5hjpn3dsrm@xxxxxxxxxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
---
tools/perf/builtin-stat.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 5658a77..da77077 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -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.",
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/