drm/i915: Timeout lowlevel_hole GTT selftest early
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 24 Feb 2017 19:33:15 +0000 (19:33 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 24 Feb 2017 20:30:35 +0000 (20:30 +0000)
Check for a timeout in the lowlevel_hole GTT before we allocate state
for that pass, as our cleanup phase stops on the iteration before the
timeout.

References: https://bugs.freedesktop.org/show_bug.cgi?id=99947
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170224193315.21072-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c

index e237531817204335e78da28d596d34acc015fbaa..6bac267914dfe2c418984a659fe65cb5999caf54 100644 (file)
@@ -237,18 +237,19 @@ static int lowlevel_hole(struct drm_i915_private *i915,
 
                        GEM_BUG_ON(addr + BIT_ULL(size) > vm->total);
 
+                       if (igt_timeout(end_time,
+                                       "%s timed out before %d/%d\n",
+                                       __func__, n, count)) {
+                               hole_end = hole_start; /* quit */
+                               break;
+                       }
+
                        if (vm->allocate_va_range &&
                            vm->allocate_va_range(vm, addr, BIT_ULL(size)))
                                break;
 
                        vm->insert_entries(vm, obj->mm.pages, addr,
                                           I915_CACHE_NONE, 0);
-                       if (igt_timeout(end_time,
-                                       "%s timed out after %d/%d\n",
-                                       __func__, n, count)) {
-                               hole_end = hole_start; /* quit */
-                               break;
-                       }
                }
                count = n;