Browse Source

drm: i915: Only return EBUSY after we've established we need to schedule a new swap.

Signed-off-by: Dave Airlie <airlied@linux.ie>
=?utf-8?q?Michel_D=C3=A4nzer?= 18 years ago
parent
commit
21fa60ed4e
1 changed files with 5 additions and 5 deletions
  1. 5 5
      drivers/char/drm/i915_irq.c

+ 5 - 5
drivers/char/drm/i915_irq.c

@@ -392,11 +392,6 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
 		return DRM_ERR(EINVAL);
 	}
 
-	if (dev_priv->swaps_pending >= 100) {
-		DRM_DEBUG("Too many swaps queued\n");
-		return DRM_ERR(EBUSY);
-	}
-
 	DRM_COPY_FROM_USER_IOCTL(swap, (drm_i915_vblank_swap_t __user *) data,
 				 sizeof(swap));
 
@@ -461,6 +456,11 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
 
 	spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags);
 
+	if (dev_priv->swaps_pending >= 100) {
+		DRM_DEBUG("Too many swaps queued\n");
+		return DRM_ERR(EBUSY);
+	}
+
 	vbl_swap = drm_calloc(1, sizeof(vbl_swap), DRM_MEM_DRIVER);
 
 	if (!vbl_swap) {