Module Name: src Committed By: riastradh Date: Sat Feb 28 04:47:45 UTC 2015
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Make timed and untimed cases of __wait_seqno agree on return value. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.23 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.22 Thu Feb 26 23:32:40 2015 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Sat Feb 28 04:47:44 2015 @@ -1427,6 +1427,12 @@ __wait_seqno(struct intel_ring_buffer *r else DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &ring->irq_queue, &dev_priv->irq_lock, ticks, EXIT_COND); + if (ret < 0) /* Failure: return negative error as is. */ + ; + else if (ret == 0) /* Timed out: return -ETIME. */ + ret = -ETIME; + else /* Succeeded (ret > 0): return 0. */ + ret = 0; } else { if (interruptible) DRM_SPIN_WAIT_UNTIL(ret, &ring->irq_queue, @@ -1434,6 +1440,7 @@ __wait_seqno(struct intel_ring_buffer *r else DRM_SPIN_WAIT_NOINTR_UNTIL(ret, &ring->irq_queue, &dev_priv->irq_lock, EXIT_COND); + /* ret is negative on failure or zero on success. */ } #undef EXIT_COND spin_unlock(&dev_priv->irq_lock); @@ -1463,11 +1470,7 @@ __wait_seqno(struct intel_ring_buffer *r if (ret == 0) ret = -EAGAIN; } - if (ret < 0) /* Error. */ - return ret; - if (ret == 0) /* Seqno didn't pass. */ - return -ETIME; - return 0; /* Seqno passed, maybe time to spare. */ + return ret; } #else static int __wait_seqno(struct intel_ring_buffer *ring, u32 seqno,