|
@@ -1126,9 +1126,12 @@ void drm_vblank_on(struct drm_device *dev, int crtc)
|
|
|
vblank->last =
|
|
|
(dev->driver->get_vblank_counter(dev, crtc) - 1) &
|
|
|
dev->max_vblank_count;
|
|
|
-
|
|
|
- /* re-enable interrupts if there's are users left */
|
|
|
- if (atomic_read(&vblank->refcount) != 0)
|
|
|
+ /*
|
|
|
+ * re-enable interrupts if there are users left, or the
|
|
|
+ * user wishes vblank interrupts to be enabled all the time.
|
|
|
+ */
|
|
|
+ if (atomic_read(&vblank->refcount) != 0 ||
|
|
|
+ (!dev->vblank_disable_immediate && drm_vblank_offdelay == 0))
|
|
|
WARN_ON(drm_vblank_enable(dev, crtc));
|
|
|
spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
|
|
|
}
|