aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author=?utf-8?q?Michel_D=C3=A4nzer?= <michel@tungstengraphics.com>2006-10-24 10:10:59 -0400
committerairlied <airlied@linux.ie>2006-12-06 23:53:30 -0500
commit21fa60ed4eab5b3b28d05930bb086615ecc191b1 (patch)
tree05176d5be3e7e99e36a04bff99fb766ed68df676
parent2dbb232c4d6b6c89fc367f7566c7c87dd3b56cd7 (diff)
drm: i915: Only return EBUSY after we've established we need to schedule a new swap.
Signed-off-by: Dave Airlie <airlied@linux.ie>
-rw-r--r--drivers/char/drm/i915_irq.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
index df28bc1e84c6..40c55edfa2ee 100644
--- a/drivers/char/drm/i915_irq.c
+++ b/drivers/char/drm/i915_irq.c
@@ -392,11 +392,6 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
392 return DRM_ERR(EINVAL); 392 return DRM_ERR(EINVAL);
393 } 393 }
394 394
395 if (dev_priv->swaps_pending >= 100) {
396 DRM_DEBUG("Too many swaps queued\n");
397 return DRM_ERR(EBUSY);
398 }
399
400 DRM_COPY_FROM_USER_IOCTL(swap, (drm_i915_vblank_swap_t __user *) data, 395 DRM_COPY_FROM_USER_IOCTL(swap, (drm_i915_vblank_swap_t __user *) data,
401 sizeof(swap)); 396 sizeof(swap));
402 397
@@ -461,6 +456,11 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
461 456
462 spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); 457 spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags);
463 458
459 if (dev_priv->swaps_pending >= 100) {
460 DRM_DEBUG("Too many swaps queued\n");
461 return DRM_ERR(EBUSY);
462 }
463
464 vbl_swap = drm_calloc(1, sizeof(vbl_swap), DRM_MEM_DRIVER); 464 vbl_swap = drm_calloc(1, sizeof(vbl_swap), DRM_MEM_DRIVER);
465 465
466 if (!vbl_swap) { 466 if (!vbl_swap) {