drm/i915: Check the execlist queue for pending requests before declaring idle
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Jul 2017 12:32:24 +0000 (13:32 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 27 Jul 2017 07:38:45 +0000 (09:38 +0200)
Including a check against the execlist queue before calling the engine
idle and passing hangcheck.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-6-chris@chris-wilson.co.uk
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_engine_cs.c

index 24db316..c6ebfe7 100644 (file)
@@ -1283,6 +1283,10 @@ bool intel_engine_is_idle(struct intel_engine_cs *engine)
        if (port_request(&engine->execlist_port[0]))
                return false;
 
+       /* ELSP is empty, but there are ready requests? */
+       if (READ_ONCE(engine->execlist_first))
+               return false;
+
        /* Ring stopped? */
        if (!ring_is_idle(engine))
                return false;