]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
drm/radeon/kms: Return to userspace on ERESTARTSYS
authorJerome Glisse <jglisse@redhat.com>
Tue, 15 Dec 2009 17:23:23 +0000 (18:23 +0100)
committerDave Airlie <airlied@redhat.com>
Wed, 16 Dec 2009 05:39:24 +0000 (15:39 +1000)
radeon_object.h wasn't converted to ERESTARTSYS change. No
each time we got an ERESTARTSYS we return to userspace (ie
we were interrupted by a signal and we let the userspace
reschedule the ioctl).

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_object.h

index f6b69c2c0d00cdec665946070405fe31b6005df4..a02f18011ad185da2146327adcd9bf32d6b564d6 100644 (file)
@@ -59,19 +59,17 @@ static inline unsigned radeon_mem_type_to_domain(u32 mem_type)
  *
  * Returns:
  * -EBUSY: buffer is busy and @no_wait is true
- * -ERESTART: A wait for the buffer to become unreserved was interrupted by
+ * -ERESTARTSYS: A wait for the buffer to become unreserved was interrupted by
  * a signal. Release all buffer reservations and return to user-space.
  */
 static inline int radeon_bo_reserve(struct radeon_bo *bo, bool no_wait)
 {
        int r;
 
-retry:
        r = ttm_bo_reserve(&bo->tbo, true, no_wait, false, 0);
        if (unlikely(r != 0)) {
-               if (r == -ERESTART)
-                       goto retry;
-               dev_err(bo->rdev->dev, "%p reserve failed\n", bo);
+               if (r != -ERESTARTSYS)
+                       dev_err(bo->rdev->dev, "%p reserve failed\n", bo);
                return r;
        }
        return 0;
@@ -125,12 +123,10 @@ static inline int radeon_bo_wait(struct radeon_bo *bo, u32 *mem_type,
 {
        int r;
 
-retry:
        r = ttm_bo_reserve(&bo->tbo, true, no_wait, false, 0);
        if (unlikely(r != 0)) {
-               if (r == -ERESTART)
-                       goto retry;
-               dev_err(bo->rdev->dev, "%p reserve failed for wait\n", bo);
+               if (r != -ERESTARTSYS)
+                       dev_err(bo->rdev->dev, "%p reserve failed for wait\n", bo);
                return r;
        }
        spin_lock(&bo->tbo.lock);
@@ -140,8 +136,6 @@ retry:
                r = ttm_bo_wait(&bo->tbo, true, true, no_wait);
        spin_unlock(&bo->tbo.lock);
        ttm_bo_unreserve(&bo->tbo);
-       if (unlikely(r == -ERESTART))
-               goto retry;
        return r;
 }