drm/i915: Discard the request queue if we fail to sleep before suspend
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 26 Aug 2017 11:09:35 +0000 (12:09 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 29 Aug 2017 15:56:39 +0000 (16:56 +0100)
If we fail to clear the outstanding request queue before suspending,
mark those requests as lost.

References: https://bugs.freedesktop.org/show_bug.cgi?id=102037
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170826110935.10237-3-chris@chris-wilson.co.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
drivers/gpu/drm/i915/i915_gem.c

index b99a668f39a7e2b07ad8bcc9c4cf6a888c663abd..44a7cb0e8badb71037d841466f12f3c6470bd171 100644 (file)
@@ -4590,7 +4590,8 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
         * reset the GPU back to its idle, low power state.
         */
        WARN_ON(dev_priv->gt.awake);
-       WARN_ON(!intel_engines_are_idle(dev_priv));
+       if (WARN_ON(!intel_engines_are_idle(dev_priv)))
+               i915_gem_set_wedged(dev_priv); /* no hope, discard everything */
 
        /*
         * Neither the BIOS, ourselves or any other kernel