aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/util/evlist.c11
-rw-r--r--tools/perf/util/evlist.h1
2 files changed, 7 insertions, 5 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 785bfd392039..3a4445f26a2c 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1103,8 +1103,7 @@ int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,
1103 return perf_evlist__mmap_ex(evlist, pages, overwrite, 0, false); 1103 return perf_evlist__mmap_ex(evlist, pages, overwrite, 0, false);
1104} 1104}
1105 1105
1106static void perf_evlist__propagate_maps(struct perf_evlist *evlist, 1106static void perf_evlist__propagate_maps(struct perf_evlist *evlist)
1107 bool has_user_cpus)
1108{ 1107{
1109 struct perf_evsel *evsel; 1108 struct perf_evsel *evsel;
1110 1109
@@ -1113,7 +1112,7 @@ static void perf_evlist__propagate_maps(struct perf_evlist *evlist,
1113 * We already have cpus for evsel (via PMU sysfs) so 1112 * We already have cpus for evsel (via PMU sysfs) so
1114 * keep it, if there's no target cpu list defined. 1113 * keep it, if there's no target cpu list defined.
1115 */ 1114 */
1116 if (!evsel->cpus || has_user_cpus) { 1115 if (!evsel->cpus || evlist->has_user_cpus) {
1117 cpu_map__put(evsel->cpus); 1116 cpu_map__put(evsel->cpus);
1118 evsel->cpus = cpu_map__get(evlist->cpus); 1117 evsel->cpus = cpu_map__get(evlist->cpus);
1119 } 1118 }
@@ -1138,7 +1137,9 @@ int perf_evlist__create_maps(struct perf_evlist *evlist, struct target *target)
1138 if (evlist->cpus == NULL) 1137 if (evlist->cpus == NULL)
1139 goto out_delete_threads; 1138 goto out_delete_threads;
1140 1139
1141 perf_evlist__propagate_maps(evlist, !!target->cpu_list); 1140 evlist->has_user_cpus = !!target->cpu_list;
1141
1142 perf_evlist__propagate_maps(evlist);
1142 1143
1143 return 0; 1144 return 0;
1144 1145
@@ -1157,7 +1158,7 @@ void perf_evlist__set_maps(struct perf_evlist *evlist, struct cpu_map *cpus,
1157 thread_map__put(evlist->threads); 1158 thread_map__put(evlist->threads);
1158 evlist->threads = threads; 1159 evlist->threads = threads;
1159 1160
1160 perf_evlist__propagate_maps(evlist, false); 1161 perf_evlist__propagate_maps(evlist);
1161} 1162}
1162 1163
1163int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel) 1164int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel)
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index da2fa9172bd6..cfc4df68a9db 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -42,6 +42,7 @@ struct perf_evlist {
42 int nr_mmaps; 42 int nr_mmaps;
43 bool overwrite; 43 bool overwrite;
44 bool enabled; 44 bool enabled;
45 bool has_user_cpus;
45 size_t mmap_len; 46 size_t mmap_len;
46 int id_pos; 47 int id_pos;
47 int is_pos; 48 int is_pos;