[Intel-gfx] [PATCH 02/10] drm/i915/execlists: Clear semaphore immediately upon ELSP promotion

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Oct 15 09:16:01 UTC 2019


On 14/10/2019 23:05, Chris Wilson wrote:
> There is no significance to our delay before clearing the semaphore the
> engine is waiting on, so release it as soon as we acknowledge the CS
> update following our preemption request.

And significance of moving it earlier? More parallelization between GPU 
and CPU? Could drop a note to say so.

> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>   drivers/gpu/drm/i915/gt/intel_lrc.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 484efe3b4273..21635db8d76c 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -1910,6 +1910,9 @@ static void process_csb(struct intel_engine_cs *engine)
>   		else
>   			promote = gen8_csb_parse(execlists, buf + 2 * head);
>   		if (promote) {
> +			if (!inject_preempt_hang(execlists))
> +				ring_set_paused(engine, 0);
> +
>   			/* cancel old inflight, prepare for switch */
>   			trace_ports(execlists, "preempted", execlists->active);
>   			while (*execlists->active)
> @@ -1926,9 +1929,6 @@ static void process_csb(struct intel_engine_cs *engine)
>   			if (enable_timeslice(execlists))
>   				mod_timer(&execlists->timer, jiffies + 1);
>   
> -			if (!inject_preempt_hang(execlists))
> -				ring_set_paused(engine, 0);
> -
>   			WRITE_ONCE(execlists->pending[0], NULL);
>   		} else {
>   			GEM_BUG_ON(!*execlists->active);
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko


More information about the Intel-gfx mailing list