From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
Bail out from the cpu-hotplug test if we failed to bring a CPU back
online.
This still leaves the machine in a quite bad state, but at least it
avoids hard hanging it.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
---
tests/perf_pmu.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
index 7fab73e22c2d..a334d3b5770e 100644
--- a/tests/perf_pmu.c
+++ b/tests/perf_pmu.c
@@ -965,6 +965,7 @@ static void cpu_hotplug(int gem_fd)
int link[2];
int fd, ret;
int cur = 0;
+ char buf;
igt_require(cpu0_hotplug_support());
@@ -1012,7 +1013,15 @@ static void cpu_hotplug(int gem_fd)
/* Offline followed by online a CPU. */
igt_assert_eq(write(cpufd, "0", 2), 2);
usleep(1e6);
- igt_assert_eq(write(cpufd, "1", 2), 2);
+ ret = write(cpufd, "1", 2);
+ if (ret < 0) {
+ /*
+ * Abort the test if we failed to bring a CPU
+ * back online.
+ */
+ igt_assert_eq(write(link[1], "s", 1), 1);
+ break;
+ }
close(cpufd);
cpu++;
@@ -1026,7 +1035,6 @@ static void cpu_hotplug(int gem_fd)
* until the CPU core shuffler finishes one loop.
*/
for (;;) {
- char buf;
int ret2;
usleep(500e3);
@@ -1053,6 +1061,9 @@ static void cpu_hotplug(int gem_fd)
close(fd);
close(link[0]);
+ /* Skip if child signals a problem with bringing a CPU back online. */
+ igt_skip_on(buf == 's');