On Tue, Feb 04, 2003 at 11:28:29AM -0800, Eric Anholt wrote:

[...]

There's one lock left that is never destroyed: vbl_lock.  It causes a
panic: mutex vblsig 0xc6587234 already initialized
if X is restarted.  Here's a patch that moves the creation from
irq_install into drm_init and destroys it in drm_cleanup.

Regards,
Stefan Farfeleder
Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h
===================================================================
RCS file: 
/cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h,v
retrieving revision 1.11
diff -c -r1.11 drm_dma.h
*** xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h  21 Feb 2003 
23:23:03 -0000      1.11
--- xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h  1 Mar 2003 
15:01:48 -0000
***************
*** 525,531 ****
  #endif
  
  #if __HAVE_VBL_IRQ
-       DRM_SPININIT( dev->vbl_lock, "vblsig" );
        TAILQ_INIT( &dev->vbl_sig_list );
  #endif
  
--- 525,530 ----
Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_drv.h
===================================================================
RCS file: 
/cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_drv.h,v
retrieving revision 1.10
diff -c -r1.10 drm_drv.h
*** xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_drv.h  22 Feb 2003 
18:40:12 -0000      1.10
--- xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_drv.h  1 Mar 2003 
15:01:52 -0000
***************
*** 754,759 ****
--- 754,762 ----
        DRM(mem_init)();
        DRM(sysctl_init)(dev);
        TAILQ_INIT(&dev->files);
+ #if __HAVE_VBL_IRQ
+       DRM_SPININIT(dev->vbl_lock, "vblsig");
+ #endif
  
  #if __REALLY_HAVE_AGP
        dev->agp = DRM(agp_init)();
***************
*** 870,875 ****
--- 873,881 ----
        DRIVER_POSTCLEANUP();
        DRM(mem_uninit)();
        DRM_SPINUNINIT(dev->count_lock);
+ #if __HAVE_VBL_IRQ
+       DRM_SPINUNINIT(dev->vbl_lock);
+ #endif
  }
  
  

Reply via email to