We don't call cleanup handlers when exiting a subtest currently, only when exiting the entire binary. Which means pm_rps falls over when it fails more than one subtest. Cc: Jeff McGee <jeff.mcgee@xxxxxxxxx> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> --- tests/pm_rps.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/pm_rps.c b/tests/pm_rps.c index a652cf580dc7..b1cd13fc33a7 100644 --- a/tests/pm_rps.c +++ b/tests/pm_rps.c @@ -196,9 +196,27 @@ static void emit_store_dword_imm(uint32_t val) } #define LOAD_HELPER_PAUSE_USEC 500 +static void load_helper_set_load(enum load load) +{ + assert(lh.igt_proc.running); + + if (lh.load == load) + return; + + lh.load = load; + kill(lh.igt_proc.pid, SIGUSR2); +} + static void load_helper_run(enum load load) { - assert(!lh.igt_proc.running); + /* + * FIXME fork helpers won't get cleaned up when started from within a + * subtest, so handle the case where it sticks around a bit too long. + */ + if (lh.igt_proc.running) { + load_helper_set_load(load); + return; + } igt_require(lh.ready == true); @@ -229,20 +247,8 @@ static void load_helper_run(enum load load) } } -static void load_helper_set_load(enum load load) -{ - assert(lh.igt_proc.running); - - if (lh.load == load) - return; - - lh.load = load; - kill(lh.igt_proc.pid, SIGUSR2); -} - static void load_helper_stop(void) { - assert(lh.igt_proc.running); kill(lh.igt_proc.pid, SIGUSR1); igt_wait_helper(&lh.igt_proc); } -- 1.8.4.rc3 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx