diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-03-14 10:06:02 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-03-14 10:27:29 +0100 |
commit | 5188bbe23ea6e7a2bf4d5572b64f410399aba9f7 (patch) | |
tree | 5cca37603fb760bf7dc84cc941c9798b06f8f858 /tests | |
parent | f962dee636f2992152617be4dc9e62c5055473ec (diff) |
tests/pm_rps: ducttape for igt fork helper cleanup issues
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@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/pm_rps.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/tests/pm_rps.c b/tests/pm_rps.c index a652cf58..b1cd13fc 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); } |