summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_engine_cs.c
diff options
context:
space:
mode:
authorChris Wilson2017-07-21 14:32:24 +0200
committerDaniel Vetter2017-07-27 09:38:45 +0200
commitd6edb6e3b63faae5cd96993e0977d3807bd87be6 (patch)
tree10c4a514747b997474310475be2c1ae08c0ca948 /drivers/gpu/drm/i915/intel_engine_cs.c
parentdrm/i915: Check execlist/ring status during hangcheck (diff)
downloadkernel-qcow2-linux-d6edb6e3b63faae5cd96993e0977d3807bd87be6.tar.gz
kernel-qcow2-linux-d6edb6e3b63faae5cd96993e0977d3807bd87be6.tar.xz
kernel-qcow2-linux-d6edb6e3b63faae5cd96993e0977d3807bd87be6.zip
drm/i915: Check the execlist queue for pending requests before declaring idle
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>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_engine_cs.c')
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 24db316e0fd1..c6ebfe7fb4f1 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -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;