Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > If the HW is already wedged, attempting to submit a request will > generate an -EIO. If we tried this during suspend, we would abort > whereas all we want to do is to go sleep and throw away the corrupt > state. > > Fixes: 5ab57c702069 ("drm/i915: Flush logical context image out to memory upon suspend") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 354b0546a191..e083f242b8dc 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -4774,17 +4774,19 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv) > * state. Fortunately, the kernel_context is disposable and we do > * not rely on its state. > */ > - ret = i915_gem_switch_to_kernel_context(dev_priv); > - if (ret) > - goto err_unlock; > + if (!i915_terminally_wedged(&dev_priv->gpu_error)) { > + ret = i915_gem_switch_to_kernel_context(dev_priv); > + if (ret) > + goto err_unlock; > > - ret = i915_gem_wait_for_idle(dev_priv, > - I915_WAIT_INTERRUPTIBLE | > - I915_WAIT_LOCKED); > - if (ret && ret != -EIO) > - goto err_unlock; > + ret = i915_gem_wait_for_idle(dev_priv, > + I915_WAIT_INTERRUPTIBLE | > + I915_WAIT_LOCKED); > + if (ret && ret != -EIO) > + goto err_unlock; > > - assert_kernel_context_is_current(dev_priv); > + assert_kernel_context_is_current(dev_priv); > + } > i915_gem_contexts_lost(dev_priv); > mutex_unlock(&dev->struct_mutex); > > -- > 2.15.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx