Index: dev/drm/drm_os_freebsd.h =================================================================== RCS file: /home/ncvs/src/sys/dev/drm/drm_os_freebsd.h,v retrieving revision 1.10.2.1 diff -u -r1.10.2.1 drm_os_freebsd.h --- dev/drm/drm_os_freebsd.h 26 Apr 2003 07:05:28 -0000 1.10.2.1 +++ dev/drm/drm_os_freebsd.h 17 Oct 2003 23:19:54 -0000 @@ -173,10 +173,12 @@ #define DRM_HZ hz #define DRM_WAIT_ON( ret, queue, timeout, condition ) \ -while (!condition) { \ - ret = tsleep( &(queue), PZERO | PCATCH, "drmwtq", (timeout) ); \ - if ( ret ) \ - return ret; \ +for ( ret = 0 ; !ret && !(condition) ; ) { \ + int s = spldrm(); \ + if (!(condition)) \ + ret = tsleep( &(queue), PZERO | PCATCH, \ + "drmwtq", (timeout) ); \ + splx(s); \ } #define DRM_WAKEUP( queue ) wakeup( queue )