[Intel-gfx] [PATCH] drm/i915/execlists: Relax assertion for a pinned context image on reset

Mika Kuoppala mika.kuoppala at linux.intel.com
Mon Sep 23 09:52:14 UTC 2019


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

> A gpu hang can occur at any time, given a sufficiently angry gpu. An
> example is when it forgets to perform a context-switch at the end of a
> request, leaving us with a hanging GPU on a completed request. Here, we
> may retire the request, only leaving its context alive via the active
> barrier. When we reset the GPU on a completed request, we do not modify
> its context image (just updating the ring state) and can safely defer
> the assertion that we have the image pinned and ready to modify.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111639
> Fixes: dffa8feb3084 ("drm/i915/perf: Assert locking for i915_init_oa_perf_state()")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>

Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>

> ---
>  drivers/gpu/drm/i915/gt/intel_lrc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 1a2b71157f08..80ded99bcb15 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2383,7 +2383,6 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
>  	GEM_BUG_ON(!i915_vma_is_pinned(ce->state));
>  
>  	/* Proclaim we have exclusive access to the context image! */
> -	GEM_BUG_ON(!intel_context_is_pinned(ce));
>  	mutex_acquire(&ce->pin_mutex.dep_map, 2, 0, _THIS_IP_);
>  
>  	rq = active_request(rq);
> @@ -2432,6 +2431,7 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
>  	 * future request will be after userspace has had the opportunity
>  	 * to recreate its own state.
>  	 */
> +	GEM_BUG_ON(!intel_context_is_pinned(ce));
>  	regs = ce->lrc_reg_state;
>  	if (engine->pinned_default_state) {
>  		memcpy(regs, /* skip restoring the vanilla PPHWSP */
> -- 
> 2.23.0


More information about the Intel-gfx mailing list