Chris Wilson <ch...@chris-wilson.co.uk> writes:

> Since the execlists_active() is no longer protected by the
> engine->active.lock, we need to protect the request pointer with RCU to
> prevent it being freed as we evaluate whether or not we need to preempt.
>
> Fixes: df403069029d ("drm/i915/execlists: Lift process_csb() out of the 
> irq-off spinlock")
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuopp...@linux.intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

Reviewed-by: Mika Kuoppala <mika.kuopp...@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_scheduler.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_scheduler.c 
> b/drivers/gpu/drm/i915/i915_scheduler.c
> index d2edb527dcb8..010d67f48ad9 100644
> --- a/drivers/gpu/drm/i915/i915_scheduler.c
> +++ b/drivers/gpu/drm/i915/i915_scheduler.c
> @@ -202,21 +202,26 @@ static void kick_submission(struct intel_engine_cs 
> *engine,
>       if (prio <= engine->execlists.queue_priority_hint)
>               return;
>  
> +     rcu_read_lock();
> +
>       /* Nothing currently active? We're overdue for a submission! */
>       inflight = execlists_active(&engine->execlists);
>       if (!inflight)
> -             return;
> +             goto unlock;
>  
>       /*
>        * If we are already the currently executing context, don't
>        * bother evaluating if we should preempt ourselves.
>        */
>       if (inflight->hw_context == rq->hw_context)
> -             return;
> +             goto unlock;
>  
>       engine->execlists.queue_priority_hint = prio;
>       if (need_preempt(prio, rq_prio(inflight)))
>               tasklet_hi_schedule(&engine->execlists.tasklet);
> +
> +unlock:
> +     rcu_read_unlock();
>  }
>  
>  static void __i915_schedule(struct i915_sched_node *node,
> -- 
> 2.24.0.rc2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to