RING_LOCALS;
 
        if (overlay->last_flip_req != 0) {
-               ret = i915_do_wait_request(dev, overlay->last_flip_req, 0);
-               if (ret != 0)
-                       return ret;
-
-               overlay->last_flip_req = 0;
+               ret = i915_do_wait_request(dev, overlay->last_flip_req, 1);
+               if (ret == 0) {
+                       overlay->last_flip_req = 0;
 
-               tmp = I915_READ(ISR);
+                       tmp = I915_READ(ISR);
 
-               if (!(tmp & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT))
-                       return 0;
+                       if (!(tmp & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT))
+                               return 0;
+               }
        }
 
        /* synchronous slowpath */
                                return ret;
 
                case SWITCH_OFF_STAGE_2:
-                       printk("switch off 2\n");
-
                        BUG_ON(!overlay->vid_bo);
                        obj = overlay->vid_bo->obj;