drm/i915: Warn if we hit the timeout for wait-for-idle
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 8 Aug 2018 10:50:59 +0000 (11:50 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 8 Aug 2018 16:08:06 +0000 (17:08 +0100)
Hitting the timeout and finding that all engines are actually idle is
indicative of an interrupt delivery problem. This problem is an issue
that we need to fix, so make sure we log it and provide the GEM trace.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180808105101.913-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 460f256114f7d0fb4f77f8271bc6f48f41261520..71502512ac1f0b6fae2464a930fc294ab9034e60 100644 (file)
@@ -3823,6 +3823,12 @@ int i915_gem_wait_for_idle(struct drm_i915_private *i915,
                        if (timeout < 0)
                                return timeout;
                }
+               if (GEM_SHOW_DEBUG() && !timeout) {
+                       /* Presume that timeout was non-zero to begin with! */
+                       dev_warn(&i915->drm.pdev->dev,
+                                "Missed idle-completion interrupt!\n");
+                       GEM_TRACE_DUMP();
+               }
 
                err = wait_for_engines(i915);
                if (err)