diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lrc.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index dd89abd2263d..66ee9d888d16 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -3205,8 +3205,10 @@ void i915_gem_set_wedged(struct drm_i915_private *i915) | |||
| 3205 | * rolling the global seqno forward (since this would complete requests | 3205 | * rolling the global seqno forward (since this would complete requests |
| 3206 | * for which we haven't set the fence error to EIO yet). | 3206 | * for which we haven't set the fence error to EIO yet). |
| 3207 | */ | 3207 | */ |
| 3208 | for_each_engine(engine, i915, id) | 3208 | for_each_engine(engine, i915, id) { |
| 3209 | i915_gem_reset_prepare_engine(engine); | ||
| 3209 | engine->submit_request = nop_submit_request; | 3210 | engine->submit_request = nop_submit_request; |
| 3211 | } | ||
| 3210 | 3212 | ||
| 3211 | /* | 3213 | /* |
| 3212 | * Make sure no one is running the old callback before we proceed with | 3214 | * Make sure no one is running the old callback before we proceed with |
| @@ -3244,6 +3246,8 @@ void i915_gem_set_wedged(struct drm_i915_private *i915) | |||
| 3244 | intel_engine_init_global_seqno(engine, | 3246 | intel_engine_init_global_seqno(engine, |
| 3245 | intel_engine_last_submit(engine)); | 3247 | intel_engine_last_submit(engine)); |
| 3246 | spin_unlock_irqrestore(&engine->timeline->lock, flags); | 3248 | spin_unlock_irqrestore(&engine->timeline->lock, flags); |
| 3249 | |||
| 3250 | i915_gem_reset_finish_engine(engine); | ||
| 3247 | } | 3251 | } |
| 3248 | 3252 | ||
| 3249 | set_bit(I915_WEDGED, &i915->gpu_error.flags); | 3253 | set_bit(I915_WEDGED, &i915->gpu_error.flags); |
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index 7ece2f061b9e..e0fca035ff78 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c | |||
| @@ -719,6 +719,8 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine) | |||
| 719 | struct rb_node *rb; | 719 | struct rb_node *rb; |
| 720 | unsigned long flags; | 720 | unsigned long flags; |
| 721 | 721 | ||
| 722 | GEM_TRACE("%s\n", engine->name); | ||
| 723 | |||
| 722 | spin_lock_irqsave(&engine->timeline->lock, flags); | 724 | spin_lock_irqsave(&engine->timeline->lock, flags); |
| 723 | 725 | ||
| 724 | /* Cancel the requests on the HW and clear the ELSP tracker. */ | 726 | /* Cancel the requests on the HW and clear the ELSP tracker. */ |
| @@ -765,6 +767,9 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine) | |||
| 765 | */ | 767 | */ |
| 766 | clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); | 768 | clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); |
| 767 | 769 | ||
| 770 | /* Mark all CS interrupts as complete */ | ||
| 771 | execlists->active = 0; | ||
| 772 | |||
| 768 | spin_unlock_irqrestore(&engine->timeline->lock, flags); | 773 | spin_unlock_irqrestore(&engine->timeline->lock, flags); |
| 769 | } | 774 | } |
| 770 | 775 | ||
