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 <ch...@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuopp...@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahti...@linux.intel.com>
---
 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to