drm: vblank cannot be enabled if dev->irq_enabled is false
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 17 Mar 2017 20:20:28 +0000 (20:20 +0000)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 29 Mar 2017 10:56:53 +0000 (13:56 +0300)
Since we cannot enable the vblank if !dev->irq_enabled, we assert that
checking for both !vblank->enabled and !dev->irq_enabled is tautological
and only need the former. The only time it may differ is when racing
with drm_irq_uninstall(), but that will then disable the vblank and
wakeup the waiters.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170317202030.24410-2-chris@chris-wilson.co.uk
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
drivers/gpu/drm/drm_irq.c

index 372085561f02fcce86ed51b88282970ac6238026..5078984568b031e2c337c8c44dfdc991624eb2a7 100644 (file)
@@ -1639,10 +1639,9 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
                DRM_DEBUG("waiting on vblank count %u, crtc %u\n",
                          vblwait->request.sequence, pipe);
                DRM_WAIT_ON(ret, vblank->queue, 3 * HZ,
-                           (((drm_vblank_count(dev, pipe) -
-                              vblwait->request.sequence) <= (1 << 23)) ||
-                            !READ_ONCE(vblank->enabled) ||
-                            !dev->irq_enabled));
+                           (drm_vblank_count(dev, pipe) -
+                            vblwait->request.sequence) <= (1 << 23) ||
+                           !READ_ONCE(vblank->enabled));
        }
 
        if (ret != -EINTR) {