Re: [PATCH] drm/i915: Assert that we always complete a submission to guc/execlists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes:

> The continual resubmission model for execlists (and emulated over guc)
> requires that we keep feeding requests into the HW in order to generate
> more CS interrupts to drain the rest of the queue. Add a couple of
> asserts to ensure that we don't skip a cycle and come to a grinding
> halt.
>
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Michał Winiarski <michal.winiarski@xxxxxxxxx>

Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>

> ---
>  drivers/gpu/drm/i915/intel_guc_submission.c | 6 ++++++
>  drivers/gpu/drm/i915/intel_lrc.c            | 6 ++++++
>  2 files changed, 12 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
> index b43b58cc599b..946766b62459 100644
> --- a/drivers/gpu/drm/i915/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/intel_guc_submission.c
> @@ -747,6 +747,12 @@ static void guc_dequeue(struct intel_engine_cs *engine)
>  		execlists_set_active(execlists, EXECLISTS_ACTIVE_USER);
>  		guc_submit(engine);
>  	}
> +
> +	/* We must always keep the beast fed if we have work piled up */
> +	GEM_BUG_ON(port_isset(execlists->port) &&
> +		   !execlists_is_active(execlists, EXECLISTS_ACTIVE_USER));
> +	GEM_BUG_ON(execlists->first && !port_isset(execlists->port));
> +
>  unlock:
>  	spin_unlock_irq(&engine->timeline->lock);
>  }
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index c2c8380a0121..6fbe1a8a37ad 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -642,6 +642,12 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
>  	execlists->first = rb;
>  	if (submit)
>  		port_assign(port, last);
> +
> +	/* We must always keep the beast fed if we have work piled up */
> +	GEM_BUG_ON(port_isset(execlists->port) &&
> +		   !execlists_is_active(execlists, EXECLISTS_ACTIVE_USER));
> +	GEM_BUG_ON(execlists->first && !port_isset(execlists->port));
> +
>  unlock:
>  	spin_unlock_irq(&engine->timeline->lock);
>  
> -- 
> 2.16.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux