drm/i915: Clear gt.active_requests before checking idle status
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 31 Mar 2017 19:21:21 +0000 (20:21 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 31 Mar 2017 20:08:22 +0000 (21:08 +0100)
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>
drivers/gpu/drm/i915/selftests/i915_gem_request.c

index 6b788ffda822f2d9f24e9c33b76c91e72db3c749..98b7aac41eec7e526c9e3ac26ee95a72db09bc01 100644 (file)
@@ -301,7 +301,9 @@ static int end_live_test(struct live_test *t)
 {
        struct drm_i915_private *i915 = t->i915;
 
-       if (wait_for(intel_engines_are_idle(i915), 1)) {
+       i915_gem_retire_requests(i915);
+
+       if (wait_for(intel_engines_are_idle(i915), 10)) {
                pr_err("%s(%s): GPU not idle\n", t->func, t->name);
                return -EIO;
        }