From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2] drm/i915: Break i915_spin_request() if we see an interrupt
Date: Thu, 16 Feb 2017 16:08:38 +0200 [thread overview]
Message-ID: <87a89mns7t.fsf@gaia.fi.intel.com> (raw)
In-Reply-To: <20170216134247.14729-1-chris@chris-wilson.co.uk>
Chris Wilson <chris@chris-wilson.co.uk> writes:
> If an interrupt has been posted, and we were spinning on the active
> seqno waiting for it to advance but it did not, then we can expect that
> it will not see its advance in the immediate future and should call into
> the irq-seqno barrier. We can stop spinning at this point, and leave the
> difficulty of handling the coherency to the caller.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem_request.c | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
> index 7760d7481f85..de52ac18e215 100644
> --- a/drivers/gpu/drm/i915/i915_gem_request.c
> +++ b/drivers/gpu/drm/i915/i915_gem_request.c
> @@ -972,7 +972,8 @@ static bool busywait_stop(unsigned long timeout, unsigned int cpu)
> bool __i915_spin_request(const struct drm_i915_gem_request *req,
> u32 seqno, int state, unsigned long timeout_us)
> {
> - unsigned int cpu;
> + struct intel_engine_cs *engine = req->engine;
> + unsigned int irq, cpu;
>
> /* When waiting for high frequency requests, e.g. during synchronous
> * rendering split between the CPU and GPU, the finite amount of time
> @@ -984,15 +985,23 @@ bool __i915_spin_request(const struct drm_i915_gem_request *req,
> * takes to sleep on a request, on the order of a microsecond.
> */
>
> + 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))
> + if (i915_seqno_passed(intel_engine_get_seqno(engine), seqno))
> return true;
>
> + /* Seqno are meant to be ordered *before* the interrupt. If
> + * we see an interrupt without a corresponding seqno advance,
> + * assume we won't see one in the near future but require
> + * the engine->seqno_barrier() to fixup coherency.
> + */
> + if (atomic_read(&engine->irq_count) != irq)
> + break;
> +
Looks good but now need to wait for patch to introduce
irq_counts to materialize.
-Mika
> if (signal_pending_state(state, current))
> break;
>
> --
> 2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
prev parent reply other threads:[~2017-02-16 14:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-16 13:12 [PATCH] drm/i915: Break i915_spin_request() if we see an interrupt Chris Wilson
2017-02-16 13:17 ` Mika Kuoppala
2017-02-16 13:26 ` Chris Wilson
2017-02-16 13:26 ` Tvrtko Ursulin
2017-02-16 13:37 ` Chris Wilson
2017-02-16 13:42 ` [PATCH v2] " Chris Wilson
2017-02-16 14:03 ` Tvrtko Ursulin
2017-02-16 14:08 ` Mika Kuoppala [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a89mns7t.fsf@gaia.fi.intel.com \
--to=mika.kuoppala@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.