Message ID | 20200207161602.2838218-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/gt: Only ignore already reset requests | expand |
Chris Wilson <chris@chris-wilson.co.uk> writes: > 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: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> > --- > drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +- > drivers/gpu/drm/i915/gt/intel_reset.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c > index 52a749691a8d..cfaf5bbdbcab 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c > @@ -419,7 +419,7 @@ static struct intel_engine_cs *__active_engine(struct i915_request *rq) > } > > engine = NULL; > - if (i915_request_is_active(rq) && !rq->fence.error) > + if (i915_request_is_active(rq) && rq->fence.error != -EIO) > engine = rq->engine; > > spin_unlock_irq(&locked->active.lock); > diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c > index a8317e046f81..aef6ab58d7d9 100644 > --- a/drivers/gpu/drm/i915/gt/intel_reset.c > +++ b/drivers/gpu/drm/i915/gt/intel_reset.c > @@ -1182,7 +1182,7 @@ static void intel_gt_reset_global(struct intel_gt *gt, > > kobject_uevent_env(kobj, KOBJ_CHANGE, error_event); > > - drm_dbg(>->i915->drm, "resetting chip\n"); > + drm_dbg(>->i915->drm, "resetting chip, engines=%x\n", engine_mask); > kobject_uevent_env(kobj, KOBJ_CHANGE, reset_event); > > /* Use a watchdog to ensure that our reset completes */ > -- > 2.25.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index 52a749691a8d..cfaf5bbdbcab 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -419,7 +419,7 @@ static struct intel_engine_cs *__active_engine(struct i915_request *rq) } engine = NULL; - if (i915_request_is_active(rq) && !rq->fence.error) + if (i915_request_is_active(rq) && rq->fence.error != -EIO) engine = rq->engine; spin_unlock_irq(&locked->active.lock); diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index a8317e046f81..aef6ab58d7d9 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -1182,7 +1182,7 @@ static void intel_gt_reset_global(struct intel_gt *gt, kobject_uevent_env(kobj, KOBJ_CHANGE, error_event); - drm_dbg(>->i915->drm, "resetting chip\n"); + drm_dbg(>->i915->drm, "resetting chip, engines=%x\n", engine_mask); kobject_uevent_env(kobj, KOBJ_CHANGE, reset_event); /* Use a watchdog to ensure that our reset completes */
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: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +- drivers/gpu/drm/i915/gt/intel_reset.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)