Re: [PATCH] perf tools: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus

From: Jiri Olsa
Date: Tue Oct 09 2018 - 06:00:56 EST


On Thu, Oct 04, 2018 at 10:20:39AM +0100, John Garry wrote:

SNIP

> > We synthesize an update event that needs to touch the evsel
> > id array, which is not defined at that time. Fixing this by
> > forcing the id allocation for events with theeir own cpus.
> >
> > Reported-by: John Garry <john.garry@xxxxxxxxxx>
> > Link: http://lkml.kernel.org/n/tip-8x4n7o34yheigoxm1jibflm6@xxxxxxxxxxxxxx
>
> Tested-by: John Garry <john.garry@xxxxxxxxxx>
>
> In terms of adding to stable, LT v4.14 is not affected, but 4.18.x is.
>
> Thanks,
> John

Arnaldo, could you please pick up this one

thanks,
jirka

>
> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> > ---
> > tools/perf/builtin-report.c | 1 +
> > tools/perf/util/evsel.c | 3 +++
> > 2 files changed, 4 insertions(+)
> >
> > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> > index c0703979c51d..257c9c18cb7e 100644
> > --- a/tools/perf/builtin-report.c
> > +++ b/tools/perf/builtin-report.c
> > @@ -980,6 +980,7 @@ int cmd_report(int argc, const char **argv)
> > .id_index = perf_event__process_id_index,
> > .auxtrace_info = perf_event__process_auxtrace_info,
> > .auxtrace = perf_event__process_auxtrace,
> > + .event_update = perf_event__process_event_update,
> > .feature = process_feature_event,
> > .ordered_events = true,
> > .ordering_requires_timestamps = true,
> > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> > index ac6cfb8b085e..7a0d5fbaf3c1 100644
> > --- a/tools/perf/util/evsel.c
> > +++ b/tools/perf/util/evsel.c
> > @@ -1088,6 +1088,9 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts,
> > attr->exclude_user = 1;
> > }
> >
> > + if (evsel->own_cpus)
> > + evsel->attr.read_format |= PERF_FORMAT_ID;
> > +
> > /*
> > * Apply event specific term settings,
> > * it overloads any global configuration.
> >
>
>