Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32288
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
trace_i915_gem_request_wait_begin(dev, seqno);
ring->waiting_seqno = seqno;
- ret = -ENODEV;
if (ring->irq_get(ring)) {
if (interruptible)
ret = wait_event_interruptible(ring->irq_queue,
|| atomic_read(&dev_priv->mm.wedged));
ring->irq_put(ring);
- }
+ } else if (wait_for(i915_seqno_passed(ring->get_seqno(ring),
+ seqno) ||
+ atomic_read(&dev_priv->mm.wedged), 3000))
+ ret = -EBUSY;
ring->waiting_seqno = 0;
trace_i915_gem_request_wait_end(dev, seqno);