drm/i915/selftests: Try to show where the pulse went
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 28 Nov 2019 10:25:46 +0000 (10:25 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 28 Nov 2019 11:39:50 +0000 (11:39 +0000)
We have a case of a mysteriously absent pulse, so dump the engine
details to see if we can find out what happened to it.

References: https://bugs.freedesktop.org/show_bug.cgi?id=112405
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191128102546.3857140-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_engine_cs.c
drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c

index 8f6e353caa667ee2fee4554db4e6a232e071f9c1..df3369c3f330d68241851c04516a91dc1712c9e4 100644 (file)
@@ -1479,6 +1479,8 @@ void intel_engine_dump(struct intel_engine_cs *engine,
                drm_printf(m, "*** WEDGED ***\n");
 
        drm_printf(m, "\tAwake? %d\n", atomic_read(&engine->wakeref.count));
+       drm_printf(m, "\tBarriers?: %s\n",
+                  yesno(!llist_empty(&engine->barrier_tasks)));
 
        rcu_read_lock();
        rq = READ_ONCE(engine->heartbeat.systole);
index f665a0e23c61f67ff531d39ea47adbfcb0f4d415..0b1148cf3f61cd5ac38aad6a6096b1ae24347d33 100644 (file)
@@ -91,6 +91,11 @@ static int __live_idle_pulse(struct intel_engine_cs *engine,
        GEM_BUG_ON(!llist_empty(&engine->barrier_tasks));
 
        if (intel_gt_retire_requests_timeout(engine->gt, HZ / 5)) {
+               struct drm_printer m = drm_err_printer("pulse");
+
+               pr_err("%s: no heartbeat pulse?\n", engine->name);
+               intel_engine_dump(engine, &m, "%s", engine->name);
+
                err = -ETIME;
                goto out;
        }