Author: rnoland
Date: Tue Jun 23 16:00:14 2009
New Revision: 194729
URL: http://svn.freebsd.org/changeset/base/194729

Log:
  Merge 190433 from HEAD
  
  Fix up waiting on vblank again... This reverts a last minute change that
  I made on the last patch, it seems to upset suspend/resume and shutdown.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/drm/drm_irq.c

Modified: stable/7/sys/dev/drm/drm_irq.c
==============================================================================
--- stable/7/sys/dev/drm/drm_irq.c      Tue Jun 23 15:59:10 2009        
(r194728)
+++ stable/7/sys/dev/drm/drm_irq.c      Tue Jun 23 16:00:14 2009        
(r194729)
@@ -463,16 +463,19 @@ int drm_wait_vblank(struct drm_device *d
        } else {
                DRM_DEBUG("waiting on vblank count %d, crtc %d\n",
                    vblwait->request.sequence, crtc);
-               mtx_lock(&dev->irq_lock);
                dev->vblank[crtc].last = vblwait->request.sequence;
                for ( ret = 0 ; !ret && !(((drm_vblank_count(dev, crtc) -
                    vblwait->request.sequence) <= (1 << 23)) ||
                    !dev->irq_enabled) ; ) {
-                       ret = mtx_sleep(&dev->vblank[crtc].queue,
-                           &dev->irq_lock, PCATCH, "vblwtq",
-                           3 * DRM_HZ);
+                       mtx_lock(&dev->irq_lock);
+                       if (!(((drm_vblank_count(dev, crtc) -
+                           vblwait->request.sequence) <= (1 << 23)) ||
+                           !dev->irq_enabled))
+                               ret = mtx_sleep(&dev->vblank[crtc].queue,
+                                   &dev->irq_lock, PCATCH, "vblwtq",
+                                   3 * DRM_HZ);
+                       mtx_unlock(&dev->irq_lock);
                }
-               mtx_unlock(&dev->irq_lock);
 
                if (ret != EINTR && ret != ERESTART) {
                        struct timeval now;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to