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
}