KVM: selftests: Move raw KVM_SET_USER_MEMORY_REGION helper to utils
[linux-2.6-microblaze.git] / tools / perf / builtin-stat.c
index 973ade1..3f98689 100644 (file)
@@ -230,11 +230,12 @@ static bool cpus_map_matched(struct evsel *a, struct evsel *b)
        if (!a->core.cpus || !b->core.cpus)
                return false;
 
-       if (a->core.cpus->nr != b->core.cpus->nr)
+       if (perf_cpu_map__nr(a->core.cpus) != perf_cpu_map__nr(b->core.cpus))
                return false;
 
-       for (int i = 0; i < a->core.cpus->nr; i++) {
-               if (a->core.cpus->map[i].cpu != b->core.cpus->map[i].cpu)
+       for (int i = 0; i < perf_cpu_map__nr(a->core.cpus); i++) {
+               if (perf_cpu_map__cpu(a->core.cpus, i).cpu !=
+                   perf_cpu_map__cpu(b->core.cpus, i).cpu)
                        return false;
        }
 
@@ -788,7 +789,7 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
        const bool forks = (argc > 0);
        bool is_pipe = STAT_RECORD ? perf_stat.data.is_pipe : false;
        struct evlist_cpu_iterator evlist_cpu_itr;
-       struct affinity affinity;
+       struct affinity saved_affinity, *affinity = NULL;
        int err;
        bool second_pass = false;
 
@@ -803,8 +804,11 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
        if (group)
                evlist__set_leader(evsel_list);
 
-       if (affinity__setup(&affinity) < 0)
-               return -1;
+       if (!cpu_map__is_dummy(evsel_list->core.cpus)) {
+               if (affinity__setup(&saved_affinity) < 0)
+                       return -1;
+               affinity = &saved_affinity;
+       }
 
        evlist__for_each_entry(evsel_list, counter) {
                if (bpf_counter__load(counter, &target))
@@ -813,7 +817,7 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
                        all_counters_use_bpf = false;
        }
 
-       evlist__for_each_cpu(evlist_cpu_itr, evsel_list, &affinity) {
+       evlist__for_each_cpu(evlist_cpu_itr, evsel_list, affinity) {
                counter = evlist_cpu_itr.evsel;
 
                /*
@@ -869,7 +873,7 @@ try_again:
                 */
 
                /* First close errored or weak retry */
-               evlist__for_each_cpu(evlist_cpu_itr, evsel_list, &affinity) {
+               evlist__for_each_cpu(evlist_cpu_itr, evsel_list, affinity) {
                        counter = evlist_cpu_itr.evsel;
 
                        if (!counter->reset_group && !counter->errored)
@@ -878,7 +882,7 @@ try_again:
                        perf_evsel__close_cpu(&counter->core, evlist_cpu_itr.cpu_map_idx);
                }
                /* Now reopen weak */
-               evlist__for_each_cpu(evlist_cpu_itr, evsel_list, &affinity) {
+               evlist__for_each_cpu(evlist_cpu_itr, evsel_list, affinity) {
                        counter = evlist_cpu_itr.evsel;
 
                        if (!counter->reset_group && !counter->errored)
@@ -904,7 +908,7 @@ try_again_reset:
                        counter->supported = true;
                }
        }
-       affinity__cleanup(&affinity);
+       affinity__cleanup(affinity);
 
        evlist__for_each_entry(evsel_list, counter) {
                if (!counter->supported) {