27 lines
979 B
Diff
27 lines
979 B
Diff
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
|
|
index f85aaf2..2e5841e 100644
|
|
--- a/drivers/gpu/drm/drm_irq.c
|
|
+++ b/drivers/gpu/drm/drm_irq.c
|
|
@@ -412,6 +412,9 @@ int drm_vblank_get(struct drm_device *dev, int crtc)
|
|
dev->vblank_enabled[crtc] = 1;
|
|
drm_update_vblank_count(dev, crtc);
|
|
}
|
|
+ } else if (atomic_read(&dev->vblank_refcount[crtc]) > 1) {
|
|
+ atomic_dec(&dev->vblank_refcount[crtc]);
|
|
+ ret = -EINVAL;
|
|
}
|
|
spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
|
|
|
|
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
|
index 748ed50..9cb07a5 100644
|
|
--- a/drivers/gpu/drm/i915/intel_display.c
|
|
+++ b/drivers/gpu/drm/i915/intel_display.c
|
|
@@ -1549,6 +1549,7 @@ static void i9xx_crtc_dpms(struct drm_crtc *crtc, int mode)
|
|
|
|
/* Wait for vblank for the disable to take effect. */
|
|
intel_wait_for_vblank(dev);
|
|
+ dev->vblank_enabled[pipe] = 0;
|
|
|
|
temp = I915_READ(dpll_reg);
|
|
if ((temp & DPLL_VCO_ENABLE) != 0) {
|