aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_irq.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 120a16fe15c2..f7c8b758059f 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -877,6 +877,7 @@ u32 drm_vblank_count(struct drm_device *dev, int crtc)
877 877
878 if (WARN_ON(crtc >= dev->num_crtcs)) 878 if (WARN_ON(crtc >= dev->num_crtcs))
879 return 0; 879 return 0;
880
880 return vblank->count; 881 return vblank->count;
881} 882}
882EXPORT_SYMBOL(drm_vblank_count); 883EXPORT_SYMBOL(drm_vblank_count);
@@ -1110,10 +1111,10 @@ void drm_vblank_put(struct drm_device *dev, int crtc)
1110{ 1111{
1111 struct drm_vblank_crtc *vblank = &dev->vblank[crtc]; 1112 struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
1112 1113
1113 if (WARN_ON(atomic_read(&vblank->refcount) == 0)) 1114 if (WARN_ON(crtc >= dev->num_crtcs))
1114 return; 1115 return;
1115 1116
1116 if (WARN_ON(crtc >= dev->num_crtcs)) 1117 if (WARN_ON(atomic_read(&vblank->refcount) == 0))
1117 return; 1118 return;
1118 1119
1119 /* Last user schedules interrupt disable */ 1120 /* Last user schedules interrupt disable */
@@ -1158,6 +1159,9 @@ void drm_wait_one_vblank(struct drm_device *dev, int crtc)
1158 int ret; 1159 int ret;
1159 u32 last; 1160 u32 last;
1160 1161
1162 if (WARN_ON(crtc >= dev->num_crtcs))
1163 return;
1164
1161 ret = drm_vblank_get(dev, crtc); 1165 ret = drm_vblank_get(dev, crtc);
1162 if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", crtc, ret)) 1166 if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", crtc, ret))
1163 return; 1167 return;
@@ -1428,6 +1432,9 @@ void drm_vblank_post_modeset(struct drm_device *dev, int crtc)
1428 if (!dev->num_crtcs) 1432 if (!dev->num_crtcs)
1429 return; 1433 return;
1430 1434
1435 if (WARN_ON(crtc >= dev->num_crtcs))
1436 return;
1437
1431 if (vblank->inmodeset) { 1438 if (vblank->inmodeset) {
1432 spin_lock_irqsave(&dev->vbl_lock, irqflags); 1439 spin_lock_irqsave(&dev->vbl_lock, irqflags);
1433 dev->vblank_disable_allowed = true; 1440 dev->vblank_disable_allowed = true;