if (!cpu_wide && perf_can_record_cpu_wide()) {
                                struct evsel *switch_evsel;
 
-                               err = parse_events(evlist, "dummy:u", NULL);
-                               if (err)
-                                       return err;
+                               switch_evsel = evlist__add_dummy_on_all_cpus(evlist);
+                               if (!switch_evsel)
+                                       return -ENOMEM;
 
-                               switch_evsel = evlist__last(evlist);
-
-                               switch_evsel->core.attr.freq = 0;
-                               switch_evsel->core.attr.sample_period = 1;
                                switch_evsel->core.attr.context_switch = 1;
-
-                               switch_evsel->core.system_wide = true;
-                               switch_evsel->no_aux_samples = true;
                                switch_evsel->immediate = true;
 
                                evsel__set_sample_bit(switch_evsel, TID);