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,

Reply via email to