summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem.c
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2017-01-17 17:59:04 +0200
committerChris Wilson <chris@chris-wilson.co.uk>2017-01-18 10:44:50 +0000
commitbf2f04366c1e3920fb23b57226ecb39207b1a104 (patch)
treed7505d00227eb699eeae005106d3897f4b58d268 /drivers/gpu/drm/i915/i915_gem.c
parent211b12afe68c5d3b01f828957420e224329a9d99 (diff)
downloadop-kernel-dev-bf2f04366c1e3920fb23b57226ecb39207b1a104.zip
op-kernel-dev-bf2f04366c1e3920fb23b57226ecb39207b1a104.tar.gz
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/drm/i915/i915_gem.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c25
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 0fe4875..e2a6f48 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 {
OpenPOWER on IntegriCloud