drm/i915/execlists: Record preemption for selftests
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 10 Jul 2019 06:44:41 +0000 (07:44 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 10 Jul 2019 07:46:35 +0000 (08:46 +0100)
Put back the preemption counters lost in commit 22b7a426bbe1
("drm/i915/execlists: Preempt-to-busy") so that our selftests that
assert no preemption took place continue to function.

v2: But a timeslice is only a "soft" preemption!

Fixes: 22b7a426bbe1 ("drm/i915/execlists: Preempt-to-busy")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190710064454.682-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c

index 19ce8eb5e5c9ebc546d622be0025ebdf3e765192..270ef417dd1af98ed7e320c5fd7b435461953365 100644 (file)
@@ -921,6 +921,11 @@ enable_timeslice(struct intel_engine_cs *engine)
        return last && need_timeslice(engine, last);
 }
 
+static void record_preemption(struct intel_engine_execlists *execlists)
+{
+       (void)I915_SELFTEST_ONLY(execlists->preempt_hang.count++);
+}
+
 static void execlists_dequeue(struct intel_engine_cs *engine)
 {
        struct intel_engine_execlists * const execlists = &engine->execlists;
@@ -989,6 +994,8 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
                                  last->fence.seqno,
                                  last->sched.attr.priority,
                                  execlists->queue_priority_hint);
+                       record_preemption(execlists);
+
                        /*
                         * Don't let the RING_HEAD advance past the breadcrumb
                         * as we unwind (and until we resubmit) so that we do