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

From: [email-masked] (Jiri Olsa)
Date: Tue, 9 Oct 2018 12:00:49 +0200

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 <[email-masked]>
> > Link: http://lkml.kernel.org/n/tip-8x4n7o34yheigoxm1jibflm6 at git.kernel.org
> 
> Tested-by: John Garry <[email-masked]>
> 
> 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 <[email-masked]>
> > ---
> >  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.
> > 
> 
>