Quoting Tvrtko Ursulin (2018-02-21 09:11:15) > > On 20/02/2018 21:40, Chris Wilson wrote: > > Rather than iteratively disable and then immediately reenable a CPU, > > turn off each in turn, forcing the PMU events onto the next CPU without > > allowing them to retreat back to CPU0 after the first. If this fails, > > Hm, interesting and I think it possibly makes sense to test both > migration patterns. Yup. > > @@ -988,35 +999,43 @@ static void cpu_hotplug(int gem_fd) > > */ > > igt_fork(child, 1) { > > int cpu = 0; > > + int cpufd; > > + int err; > > > > close(link[0]); > > > > + /* Offline each cpu in turn */ > > for (;;) { > > - char name[128]; > > - int cpufd; > > - > > - igt_assert_lt(snprintf(name, sizeof(name), > > - "/sys/devices/system/cpu/cpu%d/online", > > - cpu), sizeof(name)); > > - cpufd = open(name, O_WRONLY); > > - if (cpufd == -1) { > > - igt_assert(cpu > 0); > > - /* > > - * Signal parent that we cycled through all > > - * CPUs and we are done. > > - */ > > - igt_assert_eq(write(link[1], "*", 1), 1); > > + cpufd = open_cpu_online(cpu); > > + igt_assert(cpufd != -1); > > + > > + err = write(cpufd, "0", 2); > > + close(cpufd); > > + if (err < 0) > > break; > > Keep off-lining until no more CPUs to offline? I had to try it! :) Ok, > last one will fail to offline. But I think it needs a comment. I thought that was a fun trick to try and offline the last cpu :) > > - } > > > > - /* Offline followed by online a CPU. */ > > - igt_assert_eq(write(cpufd, "0", 2), 2); > > usleep(1e6); > > - igt_assert_eq(write(cpufd, "1", 2), 2); > > + cpu++; > > + } > > > > + /* Then bring them back online */ > > + while (cpu--) { > > + cpufd = open_cpu_online(cpu); > > + err = write(cpufd, "1", 2); > > close(cpufd); > > Need to online in the same order or the PMU will stay on some higher CPU > making the subsequent tests fail. Or I need to improve the helpers to > hunt for the correct CPU, as perf tool does. Ah. I was expecting everytime we onlined a new cpu, the notifier would move the pmu. Why do the subsequent tests fail? In my naivety I expected one CPU is as good as any other for pmu. Do we need to put a trivial test inside the online/offline loops? -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx