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 }