From patchwork Wed Nov 27 07:57:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 11263533 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2A88014ED for ; Wed, 27 Nov 2019 07:58:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1128920684 for ; Wed, 27 Nov 2019 07:58:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1128920684 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 638356E1BD; Wed, 27 Nov 2019 07:58:07 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 06A336E0E3; Wed, 27 Nov 2019 07:58:05 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 19353423-1500050 for multiple; Wed, 27 Nov 2019 07:58:05 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Wed, 27 Nov 2019 07:57:58 +0000 Message-Id: <20191127075758.3181102-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] i915/gem_ctx_persistence: Bump the reset timeout X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" As the default preempt-reset timeout has been increased from 100ms to 640ms, we need a corresponding increase in our own timeout so that we allow enough time for the preempt-reset to occur and close the hung contexts. Signed-off-by: Chris Wilson --- tests/i915/gem_ctx_persistence.c | 34 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tests/i915/gem_ctx_persistence.c b/tests/i915/gem_ctx_persistence.c index 0f704c639..4979c35e9 100644 --- a/tests/i915/gem_ctx_persistence.c +++ b/tests/i915/gem_ctx_persistence.c @@ -40,6 +40,8 @@ #include "ioctl_wrappers.h" /* gem_wait()! */ #include "sw_sync.h" +static unsigned long reset_timeout_ms = MSEC_PER_SEC; /* default: 640ms */ + static bool has_persistence(int i915) { struct drm_i915_gem_context_param p = { @@ -161,12 +163,12 @@ static void test_persistence(int i915, unsigned int engine) .flags = IGT_SPIN_FENCE_OUT); gem_context_destroy(i915, ctx); - timeout = NSEC_PER_SEC / 5; + timeout = reset_timeout_ms * 1000; igt_assert_eq(gem_wait(i915, spin->handle, &timeout), -ETIME); igt_spin_end(spin); - timeout = NSEC_PER_SEC / 5; + timeout = reset_timeout_ms * 1000; igt_assert_eq(gem_wait(i915, spin->handle, &timeout), 0); igt_assert_eq(sync_fence_status(spin->out_fence), 1); @@ -176,7 +178,7 @@ static void test_persistence(int i915, unsigned int engine) static void test_nonpersistent_cleanup(int i915, unsigned int engine) { - int64_t timeout = NSEC_PER_SEC / 5; + int64_t timeout = reset_timeout_ms * 1000; igt_spin_t *spin; uint32_t ctx; @@ -226,10 +228,10 @@ static void test_nonpersistent_mixed(int i915, unsigned int engine) } /* Outer pair of contexts were non-persistent and killed */ - igt_assert_eq(sync_fence_wait(fence[0], MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(fence[0], reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence[0]), -EIO); - igt_assert_eq(sync_fence_wait(fence[2], MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(fence[2], reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence[2]), -EIO); /* But the middle context is still running */ @@ -240,7 +242,7 @@ static void test_nonpersistent_mixed(int i915, unsigned int engine) static void test_nonpersistent_hostile(int i915, unsigned int engine) { - int64_t timeout = NSEC_PER_SEC / 2; + int64_t timeout = reset_timeout_ms * 1000; igt_spin_t *spin; uint32_t ctx; @@ -266,7 +268,7 @@ static void test_nonpersistent_hostile(int i915, unsigned int engine) static void test_nonpersistent_hostile_preempt(int i915, unsigned int engine) { - int64_t timeout = NSEC_PER_SEC / 2; + int64_t timeout = reset_timeout_ms * 1000; igt_spin_t *spin[2]; uint32_t ctx; @@ -309,7 +311,7 @@ static void test_nonpersistent_hostile_preempt(int i915, unsigned int engine) static void test_nohangcheck_hostile(int i915) { - int64_t timeout = NSEC_PER_SEC / 2; + int64_t timeout = reset_timeout_ms * 1000; int dir; /* @@ -361,7 +363,7 @@ static void test_nonpersistent_file(int i915) close(i915); flush_delayed_fput(debugfs); - igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(spin->out_fence), -EIO); spin->handle = 0; @@ -402,10 +404,10 @@ static void test_nonpersistent_queued(int i915, unsigned int engine) gem_context_destroy(i915, ctx); - igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(spin->out_fence), -EIO); - igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence), -EIO); igt_spin_free(i915, spin); @@ -479,7 +481,7 @@ static void test_process(int i915) fence = recvfd(sv[1]); close(sv[1]); - igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence), -EIO); close(fence); @@ -530,7 +532,7 @@ static void test_process_mixed(int i915, unsigned int engine) close(sv[1]); /* First fence is non-persistent, so should be reset */ - igt_assert_eq(sync_fence_wait(fence[0], MSEC_PER_SEC / 5), 0); + igt_assert_eq(sync_fence_wait(fence[0], reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence[0]), -EIO); close(fence[0]); @@ -605,7 +607,7 @@ static void test_processes(int i915) if (i == 0) { /* First fence is non-persistent, so should be reset */ igt_assert_eq(sync_fence_wait(fence, - MSEC_PER_SEC / 5), 0); + reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence), -EIO); } else { /* Second fence is persistent, so still spinning */ @@ -645,11 +647,11 @@ static void __smoker(int i915, unsigned int engine, int expected) igt_spin_end(spin); - igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC), 0); + igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(spin->out_fence), expected); if (fence != -1) { - igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC), 0); + igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0); igt_assert_eq(sync_fence_status(fence), expected); close(fence); }