Messages in this thread | | | Date | Tue, 27 Sep 2022 09:56:06 +0300 | Subject | Re: [PATCH 1/5] libperf: Populate system-wide evsel maps | From | Adrian Hunter <> |
| |
On 24/09/22 19:57, Namhyung Kim wrote: > Setting proper cpu and thread maps for system wide evsels regardless of > user requested cpu in __perf_evlist__propagate_maps(). Those evsels > need to be active on all cpus always. Do it in the libperf so that we > can guarantee it has proper maps. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
> --- > tools/lib/perf/evlist.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c > index 6b1bafe267a4..187129652ab6 100644 > --- a/tools/lib/perf/evlist.c > +++ b/tools/lib/perf/evlist.c > @@ -40,11 +40,11 @@ static void __perf_evlist__propagate_maps(struct perf_evlist *evlist, > * We already have cpus for evsel (via PMU sysfs) so > * keep it, if there's no target cpu list defined. > */ > - if (!evsel->own_cpus || > - (!evsel->system_wide && evlist->has_user_cpus) || > - (!evsel->system_wide && > - !evsel->requires_cpu && > - perf_cpu_map__empty(evlist->user_requested_cpus))) { > + if (evsel->system_wide) { > + perf_cpu_map__put(evsel->cpus); > + evsel->cpus = perf_cpu_map__new(NULL); > + } else if (!evsel->own_cpus || evlist->has_user_cpus || > + (!evsel->requires_cpu && perf_cpu_map__empty(evlist->user_requested_cpus))) { > perf_cpu_map__put(evsel->cpus); > evsel->cpus = perf_cpu_map__get(evlist->user_requested_cpus); > } else if (evsel->cpus != evsel->own_cpus) { > @@ -52,7 +52,10 @@ static void __perf_evlist__propagate_maps(struct perf_evlist *evlist, > evsel->cpus = perf_cpu_map__get(evsel->own_cpus); > } > > - if (!evsel->system_wide) { > + if (evsel->system_wide) { > + perf_thread_map__put(evsel->threads); > + evsel->threads = perf_thread_map__new_dummy(); > + } else { > perf_thread_map__put(evsel->threads); > evsel->threads = perf_thread_map__get(evlist->threads); > }
| |