drm/radeon: Remove tests for -ERESTART from the TTM code.
[safe/jmp/linux-2.6] / drivers / gpu / drm / radeon / radeon_fence.c
index 3beb26d..78743cd 100644 (file)
@@ -168,37 +168,6 @@ bool radeon_fence_signaled(struct radeon_fence *fence)
        return signaled;
 }
 
-int r600_fence_wait(struct radeon_fence *fence,  bool intr, bool lazy)
-{
-       struct radeon_device *rdev;
-       int ret = 0;
-
-       rdev = fence->rdev;
-
-       __set_current_state(intr ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE);
-
-       while (1) {
-               if (radeon_fence_signaled(fence))
-                       break;
-
-               if (time_after_eq(jiffies, fence->timeout)) {
-                       ret = -EBUSY;
-                       break;
-               }
-
-               if (lazy)
-                       schedule_timeout(1);
-
-               if (intr && signal_pending(current)) {
-                       ret = -ERESTARTSYS;
-                       break;
-               }
-       }
-       __set_current_state(TASK_RUNNING);
-       return ret;
-}
-
-
 int radeon_fence_wait(struct radeon_fence *fence, bool intr)
 {
        struct radeon_device *rdev;
@@ -216,13 +185,6 @@ int radeon_fence_wait(struct radeon_fence *fence, bool intr)
                return 0;
        }
 
-       if (rdev->family >= CHIP_R600) {
-               r = r600_fence_wait(fence, intr, 0);
-               if (r == -ERESTARTSYS)
-                       return -EBUSY;
-               return r;
-       }
-
 retry:
        cur_jiffies = jiffies;
        timeout = HZ / 100;
@@ -231,14 +193,17 @@ retry:
        }
 
        if (intr) {
+               radeon_irq_kms_sw_irq_get(rdev);
                r = wait_event_interruptible_timeout(rdev->fence_drv.queue,
                                radeon_fence_signaled(fence), timeout);
-               if (unlikely(r == -ERESTARTSYS)) {
-                       return -EBUSY;
-               }
+               radeon_irq_kms_sw_irq_put(rdev);
+               if (unlikely(r != 0))
+                       return r;
        } else {
+               radeon_irq_kms_sw_irq_get(rdev);
                r = wait_event_timeout(rdev->fence_drv.queue,
                         radeon_fence_signaled(fence), timeout);
+               radeon_irq_kms_sw_irq_put(rdev);
        }
        if (unlikely(!radeon_fence_signaled(fence))) {
                if (unlikely(r == 0)) {