aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-03-31 15:21:21 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2017-03-31 16:08:22 -0400
commit5f09ad8be7bc2d09f2248ad102f0024e6bdb4613 (patch)
treebae75ca6ce2ea7227a5c8cceb4f70d3a976d4652
parentb9ab1f3f4454163c7850bd6cbaefcafa6955e1c1 (diff)
drm/i915: Clear gt.active_requests before checking idle status
commit 8490ae207f1d ("drm/i915: Suppress busy status for engines if wedged") moved the check for inflight requests to the intel_engines_are_idle() check to protect the idle worker. However, the request selftests were also checking the engine idle status and erroring out if they did not become idle within a short period of time after the final wait. In order to accommodate the new check, call retire requests prior to the engine check so that we flush all the waits. Fixes: 8490ae207f1d ("drm/i915: Suppress busy status for engines if wedged") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Matthew Auld <matthew.william.auld@gmail.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170331192121.10024-1-chris@chris-wilson.co.uk Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_gem_request.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_request.c b/drivers/gpu/drm/i915/selftests/i915_gem_request.c
index 6b788ffda822..98b7aac41eec 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_request.c
@@ -301,7 +301,9 @@ static int end_live_test(struct live_test *t)
301{ 301{
302 struct drm_i915_private *i915 = t->i915; 302 struct drm_i915_private *i915 = t->i915;
303 303
304 if (wait_for(intel_engines_are_idle(i915), 1)) { 304 i915_gem_retire_requests(i915);
305
306 if (wait_for(intel_engines_are_idle(i915), 10)) {
305 pr_err("%s(%s): GPU not idle\n", t->func, t->name); 307 pr_err("%s(%s): GPU not idle\n", t->func, t->name);
306 return -EIO; 308 return -EIO;
307 } 309 }