|
@@ -2442,14 +2442,13 @@ static int add_default_attributes(void)
|
|
|
(PERF_COUNT_HW_CACHE_OP_PREFETCH << 8) |
|
|
|
(PERF_COUNT_HW_CACHE_RESULT_MISS << 16) },
|
|
|
};
|
|
|
+ struct parse_events_error errinfo;
|
|
|
|
|
|
/* Set attrs if no event is selected and !null_run: */
|
|
|
if (null_run)
|
|
|
return 0;
|
|
|
|
|
|
if (transaction_run) {
|
|
|
- struct parse_events_error errinfo;
|
|
|
-
|
|
|
if (pmu_have_event("cpu", "cycles-ct") &&
|
|
|
pmu_have_event("cpu", "el-start"))
|
|
|
err = parse_events(evsel_list, transaction_attrs,
|
|
@@ -2460,6 +2459,7 @@ static int add_default_attributes(void)
|
|
|
&errinfo);
|
|
|
if (err) {
|
|
|
fprintf(stderr, "Cannot set up transaction events\n");
|
|
|
+ parse_events_print_error(&errinfo, transaction_attrs);
|
|
|
return -1;
|
|
|
}
|
|
|
return 0;
|
|
@@ -2485,10 +2485,11 @@ static int add_default_attributes(void)
|
|
|
pmu_have_event("msr", "smi")) {
|
|
|
if (!force_metric_only)
|
|
|
metric_only = true;
|
|
|
- err = parse_events(evsel_list, smi_cost_attrs, NULL);
|
|
|
+ err = parse_events(evsel_list, smi_cost_attrs, &errinfo);
|
|
|
} else {
|
|
|
fprintf(stderr, "To measure SMI cost, it needs "
|
|
|
"msr/aperf/, msr/smi/ and cpu/cycles/ support\n");
|
|
|
+ parse_events_print_error(&errinfo, smi_cost_attrs);
|
|
|
return -1;
|
|
|
}
|
|
|
if (err) {
|
|
@@ -2523,12 +2524,13 @@ static int add_default_attributes(void)
|
|
|
if (topdown_attrs[0] && str) {
|
|
|
if (warn)
|
|
|
arch_topdown_group_warn();
|
|
|
- err = parse_events(evsel_list, str, NULL);
|
|
|
+ err = parse_events(evsel_list, str, &errinfo);
|
|
|
if (err) {
|
|
|
fprintf(stderr,
|
|
|
"Cannot set up top down events %s: %d\n",
|
|
|
str, err);
|
|
|
free(str);
|
|
|
+ parse_events_print_error(&errinfo, str);
|
|
|
return -1;
|
|
|
}
|
|
|
} else {
|