[Intel-gfx] [PATCH] drm/i915: Confirm request->global_seqno after spin completion

Michał Winiarski michal.winiarski at intel.com
Thu Sep 21 21:27:17 UTC 2017


On Thu, Sep 21, 2017 at 10:09:03PM +0100, Chris Wilson wrote:
> After we see our target seqno has been completed by the hw, we need to
> confirm that it still matches the request (as it may have been preempted
> before the spin completes). If the request no longer matches the target
> seqno, we need to restart the wait to reacquire that seqno.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Michal Winiarski <michal.winiarski at intel.com>

Reviewed-by: Michał Winiarski <michal.winiarski at intel.com>

-Michał

> ---
>  drivers/gpu/drm/i915/i915_gem_request.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
> index 813a3b546d6e..289fb08acaf5 100644
> --- a/drivers/gpu/drm/i915/i915_gem_request.c
> +++ b/drivers/gpu/drm/i915/i915_gem_request.c
> @@ -1040,12 +1040,9 @@ bool __i915_spin_request(const struct drm_i915_gem_request *req,
>  	irq = atomic_read(&engine->irq_count);
>  	timeout_us += local_clock_us(&cpu);
>  	do {
> -		if (seqno != i915_gem_request_global_seqno(req))
> -			break;
> -
>  		if (i915_seqno_passed(intel_engine_get_seqno(req->engine),
>  				      seqno))
> -			return true;
> +			return seqno == i915_gem_request_global_seqno(req);
>  
>  		/* Seqno are meant to be ordered *before* the interrupt. If
>  		 * we see an interrupt without a corresponding seqno advance,
> -- 
> 2.14.1
> 


More information about the Intel-gfx mailing list