[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