aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuzuki K. Poulose <suzuki.poulose@arm.com>2015-02-13 13:40:58 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-03-02 09:51:17 -0500
commit3b4331d9a4f2d99603c38bfcac79943b7c6c5439 (patch)
tree26fbfb1c187379aeb43da02d6218a70ec617340d
parentc65568c5456e5216e5467e81d1e04c1f5bdd453f (diff)
perf stat: Report unsupported events properly
Commit 1971f59 (perf stat: Use read_counter in read_counter_aggr ) broke the perf stat output for unsupported counters. $ perf stat -v -a -C 0 -e CCI_400/config=24/ sleep 1 Warning: CCI_400/config=24/ event is not supported by the kernel. Performance counter stats for 'system wide': 0 CCI_400/config=24/ 1.080265400 seconds time elapsed Where it used to be : $ perf stat -v -a -C 0 -e CCI_400/config=24/ sleep 1 Warning: CCI_400/config=24/ event is not supported by the kernel. Performance counter stats for 'system wide': <not supported> CCI_400/config=24/ 1.083840675 seconds time elapsed This patch fixes the issues by checking if the counter is supported, before reading and logging the counter value. Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com> Acked-by: David Ahern <dsahern@gmail.com> Tested-by: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Link: http://lkml.kernel.org/r/1423852858-8455-1-git-send-email-suzuki.poulose@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/builtin-stat.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index e598e4e98170..d28949d210cc 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -510,6 +510,9 @@ static int read_counter(struct perf_evsel *counter)
510 int ncpus = perf_evsel__nr_cpus(counter); 510 int ncpus = perf_evsel__nr_cpus(counter);
511 int cpu, thread; 511 int cpu, thread;
512 512
513 if (!counter->supported)
514 return -ENOENT;
515
513 if (counter->system_wide) 516 if (counter->system_wide)
514 nthreads = 1; 517 nthreads = 1;
515 518
@@ -1285,7 +1288,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
1285 if (prefix) 1288 if (prefix)
1286 fprintf(output, "%s", prefix); 1289 fprintf(output, "%s", prefix);
1287 1290
1288 if (scaled == -1) { 1291 if (scaled == -1 || !counter->supported) {
1289 fprintf(output, "%*s%s", 1292 fprintf(output, "%*s%s",
1290 csv_output ? 0 : 18, 1293 csv_output ? 0 : 18,
1291 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, 1294 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED,