drm/i915/gt: Improve precision on defer_request assert
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 May 2020 10:42:20 +0000 (11:42 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 May 2020 14:09:11 +0000 (15:09 +0100)
The kernel_context does not use initial-breadcrumbs, so when we ask if
its requests have started we do so by comparing against the completion
seqno of the previous request. This is very imprecise, not precise
enough for the defer_request assertion.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1847
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200508104220.9872-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c

index 400b9b5a6882f9cacf25522a1c76e4fe92731fc4..28b477f531a53b9920c95db5d59ae2f46a766ab6 100644 (file)
@@ -1886,7 +1886,8 @@ static void defer_request(struct i915_request *rq, struct list_head * const pl)
                                continue;
 
                        /* No waiter should start before its signaler */
-                       GEM_BUG_ON(i915_request_started(w) &&
+                       GEM_BUG_ON(w->context->timeline->has_initial_breadcrumb &&
+                                  i915_request_started(w) &&
                                   !i915_request_completed(rq));
 
                        GEM_BUG_ON(i915_request_is_active(w));