[Intel-gfx] [PATCH 01/11] drm/i915: Be irqsafe inside reset
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Fri Jun 1 13:44:03 UTC 2018
On 31/05/2018 19:51, Chris Wilson wrote:
> As we want to be able to call i915_reset_engine and co from a softirq or
> timer context, we need to be irqsafe at all timers. So we have to forgo
s/timers/times/
> the simple spin_lock_irq for the full spin_lock_irqsave.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index f5c4ef052001..550fa8288c45 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3142,15 +3142,17 @@ i915_gem_reset_request(struct intel_engine_cs *engine,
> */
> request = i915_gem_find_active_request(engine);
> if (request) {
> + unsigned long flags;
> +
> i915_gem_context_mark_innocent(request->gem_context);
> dma_fence_set_error(&request->fence, -EAGAIN);
>
> /* Rewind the engine to replay the incomplete rq */
> - spin_lock_irq(&engine->timeline.lock);
> + spin_lock_irqsave(&engine->timeline.lock, flags);
> request = list_prev_entry(request, link);
> if (&request->link == &engine->timeline.requests)
> request = NULL;
> - spin_unlock_irq(&engine->timeline.lock);
> + spin_unlock_irqrestore(&engine->timeline.lock, flags);
> }
> }
>
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list