Commit 6e17ae73 authored by Chris Wilson's avatar Chris Wilson

drm/i915/gt: Only ignore already reset requests

If a request is being re-run after an innocent reset, it is marked as
-EAGAIN. So only skip an engine reset if the request is marked as -EIO.

Testcase: igt/gem_ctx_exec/basic-nohangcheck
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200207161602.2838218-1-chris@chris-wilson.co.uk
parent 0db1a5f8
...@@ -419,7 +419,7 @@ static struct intel_engine_cs *__active_engine(struct i915_request *rq) ...@@ -419,7 +419,7 @@ static struct intel_engine_cs *__active_engine(struct i915_request *rq)
} }
engine = NULL; engine = NULL;
if (i915_request_is_active(rq) && !rq->fence.error) if (i915_request_is_active(rq) && rq->fence.error != -EIO)
engine = rq->engine; engine = rq->engine;
spin_unlock_irq(&locked->active.lock); spin_unlock_irq(&locked->active.lock);
......
...@@ -1182,7 +1182,7 @@ static void intel_gt_reset_global(struct intel_gt *gt, ...@@ -1182,7 +1182,7 @@ static void intel_gt_reset_global(struct intel_gt *gt,
kobject_uevent_env(kobj, KOBJ_CHANGE, error_event); kobject_uevent_env(kobj, KOBJ_CHANGE, error_event);
drm_dbg(&gt->i915->drm, "resetting chip\n"); drm_dbg(&gt->i915->drm, "resetting chip, engines=%x\n", engine_mask);
kobject_uevent_env(kobj, KOBJ_CHANGE, reset_event); kobject_uevent_env(kobj, KOBJ_CHANGE, reset_event);
/* Use a watchdog to ensure that our reset completes */ /* Use a watchdog to ensure that our reset completes */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment