drm/i915: Do a full device reset after being wedged
We only call unset_wedged on the global reset path (since it's a global operation), so if we are terminally wedged and wish to reset, take the full device reset path rather than the quicker individual engine resets. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180903083337.13134-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
4f2c7337af
commit
2bfbf6fed1
|
@ -3309,7 +3309,8 @@ void i915_handle_error(struct drm_i915_private *dev_priv,
|
||||||
* Try engine reset when available. We fall back to full reset if
|
* Try engine reset when available. We fall back to full reset if
|
||||||
* single reset fails.
|
* single reset fails.
|
||||||
*/
|
*/
|
||||||
if (intel_has_reset_engine(dev_priv)) {
|
if (intel_has_reset_engine(dev_priv) &&
|
||||||
|
!i915_terminally_wedged(&dev_priv->gpu_error)) {
|
||||||
for_each_engine_masked(engine, dev_priv, engine_mask, tmp) {
|
for_each_engine_masked(engine, dev_priv, engine_mask, tmp) {
|
||||||
BUILD_BUG_ON(I915_RESET_MODESET >= I915_RESET_ENGINE);
|
BUILD_BUG_ON(I915_RESET_MODESET >= I915_RESET_ENGINE);
|
||||||
if (test_and_set_bit(I915_RESET_ENGINE + engine->id,
|
if (test_and_set_bit(I915_RESET_ENGINE + engine->id,
|
||||||
|
|
Loading…
Reference in New Issue