[Intel-gfx] [RESEND 4/6] drm/i915/execlists: Disable submission tasklet upon wedging
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Mon Jul 16 09:59:27 UTC 2018
On 16/07/2018 09:03, Chris Wilson wrote:
> If we declare the driver wedged before the GPU truly is, then we may see
> the GPU complete some CS events following our cancellation. This leaves
> us quite confused as we deleted all the bookkeeping and thus complain
> about the inconsistent state.
>
> We can just ignore the remaining events and let the GPU idle by not
> feeding it, and so avoid trying to racily overwrite shared state. We
> rely on there being a full GPU reset before unwedging, giving us the
> opportunity to reset the shared state.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107188
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/intel_lrc.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 4ef4439ff438..2c0050bab71e 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -811,6 +811,11 @@ static void reset_csb_pointers(struct intel_engine_execlists *execlists)
> WRITE_ONCE(*execlists->csb_write, execlists->csb_write_reset);
> }
>
> +static void nop_submission_tasklet(unsigned long data)
> +{
> + /* The driver is wedged; don't process any more events. */
> +}
> +
> static void execlists_cancel_requests(struct intel_engine_cs *engine)
> {
> struct intel_engine_execlists * const execlists = &engine->execlists;
> @@ -871,6 +876,9 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine)
> execlists->queue = RB_ROOT_CACHED;
> GEM_BUG_ON(port_isset(execlists->port));
>
> + GEM_BUG_ON(__tasklet_is_enabled(&execlists->tasklet));
> + execlists->tasklet.func = nop_submission_tasklet;
> +
> spin_unlock_irqrestore(&engine->timeline.lock, flags);
> }
>
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
I am a bit uncertain whether we are theoretically safe without any
memory barriers in or after intel_engines_reset_default_submission.
Concern being that we reset and re-enable everything and someone still
see the no_submission_tasklet as the set one. There's a lot of code in
between so hopefully it is not possible.
Regards,
Tvrtko
More information about the Intel-gfx
mailing list