Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3df2c85 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Confirm request->global_seqno after spin completion



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: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Michal Winiarski <michal.winiarski@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170921210903.18337-1-chris@chris-wilson.co.uk


Reviewed-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
parent de4d2106
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -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,