diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-07-21 08:32:24 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2017-07-27 03:38:45 -0400 |
commit | d6edb6e3b63faae5cd96993e0977d3807bd87be6 (patch) | |
tree | 10c4a514747b997474310475be2c1ae08c0ca948 /drivers/gpu/drm/i915/intel_engine_cs.c | |
parent | 5cce5e31a7295a3365813bafd59bae7fa049f6c0 (diff) |
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.c | 4 |
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) | |||
1283 | if (port_request(&engine->execlist_port[0])) | 1283 | if (port_request(&engine->execlist_port[0])) |
1284 | return false; | 1284 | return false; |
1285 | 1285 | ||
1286 | /* ELSP is empty, but there are ready requests? */ | ||
1287 | if (READ_ONCE(engine->execlist_first)) | ||
1288 | return false; | ||
1289 | |||
1286 | /* Ring stopped? */ | 1290 | /* Ring stopped? */ |
1287 | if (!ring_is_idle(engine)) | 1291 | if (!ring_is_idle(engine)) |
1288 | return false; | 1292 | return false; |