Commit a5cfa621 authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo

perf stat: Add event parsing error handling to add_default_attributes

Add missing error handling for parse_events calls in add_default_attributes
functions. The error handler displays error details, like for transactions (-T):

Before:
  $ perf stat -T
  Cannot set up transaction events

After:
  $ perf stat -T
  Cannot set up transaction events
  event syntax error: '..cycles,cpu/cycles-t/,cpu/tx-start/,cpu/el-start/,cpu/cycles-ct/}'
                                    \___ unknown term
Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <frederic@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20180606221513.11302-8-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent c1a1f5d9
...@@ -2442,14 +2442,13 @@ static int add_default_attributes(void) ...@@ -2442,14 +2442,13 @@ static int add_default_attributes(void)
(PERF_COUNT_HW_CACHE_OP_PREFETCH << 8) | (PERF_COUNT_HW_CACHE_OP_PREFETCH << 8) |
(PERF_COUNT_HW_CACHE_RESULT_MISS << 16) }, (PERF_COUNT_HW_CACHE_RESULT_MISS << 16) },
}; };
struct parse_events_error errinfo;
/* Set attrs if no event is selected and !null_run: */ /* Set attrs if no event is selected and !null_run: */
if (null_run) if (null_run)
return 0; return 0;
if (transaction_run) { if (transaction_run) {
struct parse_events_error errinfo;
if (pmu_have_event("cpu", "cycles-ct") && if (pmu_have_event("cpu", "cycles-ct") &&
pmu_have_event("cpu", "el-start")) pmu_have_event("cpu", "el-start"))
err = parse_events(evsel_list, transaction_attrs, err = parse_events(evsel_list, transaction_attrs,
...@@ -2460,6 +2459,7 @@ static int add_default_attributes(void) ...@@ -2460,6 +2459,7 @@ static int add_default_attributes(void)
&errinfo); &errinfo);
if (err) { if (err) {
fprintf(stderr, "Cannot set up transaction events\n"); fprintf(stderr, "Cannot set up transaction events\n");
parse_events_print_error(&errinfo, transaction_attrs);
return -1; return -1;
} }
return 0; return 0;
...@@ -2485,10 +2485,11 @@ static int add_default_attributes(void) ...@@ -2485,10 +2485,11 @@ static int add_default_attributes(void)
pmu_have_event("msr", "smi")) { pmu_have_event("msr", "smi")) {
if (!force_metric_only) if (!force_metric_only)
metric_only = true; metric_only = true;
err = parse_events(evsel_list, smi_cost_attrs, NULL); err = parse_events(evsel_list, smi_cost_attrs, &errinfo);
} else { } else {
fprintf(stderr, "To measure SMI cost, it needs " fprintf(stderr, "To measure SMI cost, it needs "
"msr/aperf/, msr/smi/ and cpu/cycles/ support\n"); "msr/aperf/, msr/smi/ and cpu/cycles/ support\n");
parse_events_print_error(&errinfo, smi_cost_attrs);
return -1; return -1;
} }
if (err) { if (err) {
...@@ -2523,12 +2524,13 @@ static int add_default_attributes(void) ...@@ -2523,12 +2524,13 @@ static int add_default_attributes(void)
if (topdown_attrs[0] && str) { if (topdown_attrs[0] && str) {
if (warn) if (warn)
arch_topdown_group_warn(); arch_topdown_group_warn();
err = parse_events(evsel_list, str, NULL); err = parse_events(evsel_list, str, &errinfo);
if (err) { if (err) {
fprintf(stderr, fprintf(stderr,
"Cannot set up top down events %s: %d\n", "Cannot set up top down events %s: %d\n",
str, err); str, err);
free(str); free(str);
parse_events_print_error(&errinfo, str);
return -1; return -1;
} }
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment