drm/i915: Skip switch-to-kernel-context on suspend when wedged
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:5ab57c7020
("drm/i915: Flush logical context image out to memory upon suspend") Testcase: igt/gem_eio/suspend 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> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171130102951.14965-1-chris@chris-wilson.co.uk (cherry picked from commitecf73eb2d2
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
parent
ae64f9bd1d
commit
dda4b8f732
@ -4712,17 +4712,19 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
|
|||||||
* state. Fortunately, the kernel_context is disposable and we do
|
* state. Fortunately, the kernel_context is disposable and we do
|
||||||
* not rely on its state.
|
* not rely on its state.
|
||||||
*/
|
*/
|
||||||
ret = i915_gem_switch_to_kernel_context(dev_priv);
|
if (!i915_terminally_wedged(&dev_priv->gpu_error)) {
|
||||||
if (ret)
|
ret = i915_gem_switch_to_kernel_context(dev_priv);
|
||||||
goto err_unlock;
|
if (ret)
|
||||||
|
goto err_unlock;
|
||||||
|
|
||||||
ret = i915_gem_wait_for_idle(dev_priv,
|
ret = i915_gem_wait_for_idle(dev_priv,
|
||||||
I915_WAIT_INTERRUPTIBLE |
|
I915_WAIT_INTERRUPTIBLE |
|
||||||
I915_WAIT_LOCKED);
|
I915_WAIT_LOCKED);
|
||||||
if (ret && ret != -EIO)
|
if (ret && ret != -EIO)
|
||||||
goto err_unlock;
|
goto err_unlock;
|
||||||
|
|
||||||
assert_kernel_context_is_current(dev_priv);
|
assert_kernel_context_is_current(dev_priv);
|
||||||
|
}
|
||||||
i915_gem_contexts_lost(dev_priv);
|
i915_gem_contexts_lost(dev_priv);
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user