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,