Commit-ID:  a2015516c5c0be932a69e1d3405c2fb03b4eacf1
Gitweb:     https://git.kernel.org/tip/a2015516c5c0be932a69e1d3405c2fb03b4eacf1
Author:     Jiri Olsa <jo...@kernel.org>
AuthorDate: Wed, 14 Mar 2018 10:22:04 +0100
Committer:  Arnaldo Carvalho de Melo <a...@redhat.com>
CommitDate: Fri, 16 Mar 2018 13:56:50 -0300

perf record: Synthesize features before events in pipe mode

We need to synthesize events first, because some features works on top
of them (on report side).

Signed-off-by: Jiri Olsa <jo...@kernel.org>
Tested-by: Stephane Eranian <eran...@google.com>
Cc: Alexander Shishkin <alexander.shish...@linux.intel.com>
Cc: David Ahern <dsah...@gmail.com>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Link: http://lkml.kernel.org/r/20180314092205.23291-1-jo...@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 tools/perf/builtin-record.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index d33103291b02..22ebeb92ac51 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -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

Reply via email to