|
@@ -754,13 +754,10 @@ static int record__synthesize(struct record *rec, bool tail)
|
|
|
return 0;
|
|
|
|
|
|
if (data->is_pipe) {
|
|
|
- err = perf_event__synthesize_features(
|
|
|
- tool, session, rec->evlist, process_synthesized_event);
|
|
|
- if (err < 0) {
|
|
|
- pr_err("Couldn't synthesize features.\n");
|
|
|
- return err;
|
|
|
- }
|
|
|
-
|
|
|
+ /*
|
|
|
+ * We need to synthesize events first, because some
|
|
|
+ * features works on top of them (on report side).
|
|
|
+ */
|
|
|
err = perf_event__synthesize_attrs(tool, session,
|
|
|
process_synthesized_event);
|
|
|
if (err < 0) {
|
|
@@ -768,6 +765,13 @@ static int record__synthesize(struct record *rec, bool tail)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
+ err = perf_event__synthesize_features(tool, session, rec->evlist,
|
|
|
+ process_synthesized_event);
|
|
|
+ if (err < 0) {
|
|
|
+ pr_err("Couldn't synthesize features.\n");
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
if (have_tracepoints(&rec->evlist->entries)) {
|
|
|
/*
|
|
|
* FIXME err <= 0 here actually means that
|