From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 1/3] tests/pm_rps: ducttape for igt fork helper cleanup issues Date: Fri, 14 Mar 2014 10:27:46 +0100 Message-ID: <1394789268-28703-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ee0-f41.google.com (mail-ee0-f41.google.com [74.125.83.41]) by gabe.freedesktop.org (Postfix) with ESMTP id A0658FB379 for ; Fri, 14 Mar 2014 02:28:00 -0700 (PDT) Received: by mail-ee0-f41.google.com with SMTP id t10so1135205eei.28 for ; Fri, 14 Mar 2014 02:27:59 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Intel Graphics Development Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org 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 Signed-off-by: Daniel Vetter --- 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