Module Name: src
Committed By: mrg
Date: Sat Nov 6 22:06:10 UTC 2010
Modified Files:
src/sys/external/bsd/drm/dist/bsd-core: drm_drv.c
src/sys/external/bsd/drm/dist/shared-core: radeon_cp.c radeon_state.c
Log Message:
call the sysctl destroy functions upon failure and unload, which
should fix PR#40029. while there, fix the radeon unload, which
was improperly matching mutex init/destroy operations and leading
to trying to destroy lock that was never initialised.
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm/dist/shared-core/radeon_state.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c
diff -u src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c:1.18 src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c:1.19
--- src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c:1.18 Sun Dec 6 22:51:25 2009
+++ src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c Sat Nov 6 22:06:10 2010
@@ -659,9 +659,7 @@
return 0;
error:
-#if defined(__FreeBSD__)
drm_sysctl_cleanup(dev);
-#endif
DRM_LOCK();
drm_lastclose(dev);
DRM_UNLOCK();
@@ -685,8 +683,8 @@
DRM_DEBUG("\n");
-#if defined(__FreeBSD__)
drm_sysctl_cleanup(dev);
+#if defined(__FreeBSD__)
destroy_dev(dev->devnode);
#endif
Index: src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c
diff -u src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c:1.8 src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c:1.9
--- src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c:1.8 Mon Jul 5 20:32:24 2010
+++ src/sys/external/bsd/drm/dist/shared-core/radeon_cp.c Sat Nov 6 22:06:10 2010
@@ -1983,6 +1983,8 @@
dev->dev_private = (void *)dev_priv;
dev_priv->flags = flags;
+ DRM_SPININIT(&dev_priv->cs.cs_mutex, "cs_mtx");
+
switch (flags & RADEON_FAMILY_MASK) {
case CHIP_R100:
case CHIP_RV200:
@@ -2032,8 +2034,6 @@
dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
- DRM_SPININIT(&dev_priv->cs.cs_mutex, "cs_mtx");
-
ret = drm_addmap(dev, drm_get_resource_start(dev, 2),
drm_get_resource_len(dev, 2), _DRM_REGISTERS,
_DRM_READ_ONLY, &dev_priv->mmio);
Index: src/sys/external/bsd/drm/dist/shared-core/radeon_state.c
diff -u src/sys/external/bsd/drm/dist/shared-core/radeon_state.c:1.5 src/sys/external/bsd/drm/dist/shared-core/radeon_state.c:1.6
--- src/sys/external/bsd/drm/dist/shared-core/radeon_state.c:1.5 Mon May 24 01:39:06 2010
+++ src/sys/external/bsd/drm/dist/shared-core/radeon_state.c Sat Nov 6 22:06:10 2010
@@ -3226,7 +3226,6 @@
if (dev_priv->sarea_priv &&
dev_priv->sarea_priv->pfCurrentPage != 0)
radeon_cp_dispatch_flip(dev);
- DRM_SPINUNINIT(&dev_priv->cs.cs_mutex);
}
radeon_do_release(dev);