diff options
author | Mika Kuoppala <mika.kuoppala@linux.intel.com> | 2017-01-17 17:59:04 +0200 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-01-18 10:44:50 +0000 |
commit | bf2f04366c1e3920fb23b57226ecb39207b1a104 (patch) | |
tree | d7505d00227eb699eeae005106d3897f4b58d268 /drivers/gpu | |
parent | 211b12afe68c5d3b01f828957420e224329a9d99 (diff) |
drm/i915: Introduce engine_stalled helper
Move the engine stalled/pardoned check into a helper function.
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1484668747-9120-4-git-send-email-mika.kuoppala@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 0fe4875580fd..e2a6f482b80f 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2611,6 +2611,20 @@ i915_gem_find_active_request(struct intel_engine_cs *engine) return NULL; } +static bool engine_stalled(struct intel_engine_cs *engine) +{ + if (!engine->hangcheck.stalled) + return false; + + /* Check for possible seqno movement after hang declaration */ + if (engine->hangcheck.seqno != intel_engine_get_seqno(engine)) { + DRM_DEBUG_DRIVER("%s pardoned\n", engine->name); + return false; + } + + return true; +} + void i915_gem_reset_prepare(struct drm_i915_private *dev_priv) { struct intel_engine_cs *engine; @@ -2669,7 +2683,6 @@ static void i915_gem_reset_engine(struct intel_engine_cs *engine) { struct drm_i915_gem_request *request; struct i915_gem_context *hung_ctx; - bool ring_hung; if (engine->irq_seqno_barrier) engine->irq_seqno_barrier(engine); @@ -2680,15 +2693,7 @@ static void i915_gem_reset_engine(struct intel_engine_cs *engine) hung_ctx = request->ctx; - ring_hung = engine->hangcheck.stalled; - if (engine->hangcheck.seqno != intel_engine_get_seqno(engine)) { - DRM_DEBUG_DRIVER("%s pardoned, was guilty? %s\n", - engine->name, - yesno(ring_hung)); - ring_hung = false; - } - - if (ring_hung) { + if (engine_stalled(engine)) { i915_gem_context_mark_guilty(hung_ctx); skip_request(request); } else { |