diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c index 09c1c4ff93ca..4c8acba733ec 100644 --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -967,11 +967,15 @@ static int drm_vblank_get(struct drm_device *dev, unsigned int pipe) unsigned long irqflags; int ret = 0; - if (!dev->num_crtcs) + if (!dev->num_crtcs) { + DRM_WARN_ONCE("dev->num_crtcs == 0\n"); return -EINVAL; + } - if (WARN_ON(pipe >= dev->num_crtcs)) + if (WARN_ON(pipe >= dev->num_crtcs)) { + DRM_WARN_ONCE("pipe=%d >= dev->num_crtcs=%d\n", pipe, dev->num_crtcs); return -EINVAL; + } spin_lock_irqsave(&dev->vbl_lock, irqflags); /* Going from 0->1 means we have to enable interrupts again */ @@ -980,6 +984,8 @@ static int drm_vblank_get(struct drm_device *dev, unsigned int pipe) } else { if (!vblank->enabled) { atomic_dec(&vblank->refcount); + DRM_WARN_ONCE("vblank->refcount restored to %d due to !vblank->enabled\n", + atomic_read(&vblank->refcount)); ret = -EINVAL; } }