Module Name:    src
Committed By:   riastradh
Date:           Wed Feb 25 13:06:13 UTC 2015

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c intel_pm.c

Log Message:
Initialize mchdev_lock earlier.  Fixes i915drmkms boot on Ironlake.

Derived from a patch sent to me by degroote@ longer ago than I care
to admit.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.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/drm2/dist/drm/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.13
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.12	Wed Nov  5 23:46:09 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Wed Feb 25 13:06:13 2015
@@ -1650,6 +1650,10 @@ int i915_driver_load(struct drm_device *
 	mutex_init(&dev_priv->modeset_restore_lock);
 #endif
 
+#ifdef __NetBSD__
+	spin_lock_init(&mchdev_lock);
+#endif
+
 	intel_pm_setup(dev);
 
 	intel_display_crc_init(dev);
@@ -1865,6 +1869,7 @@ free_priv:
 	if (dev_priv->slab)
 		kmem_cache_destroy(dev_priv->slab);
 #ifdef __NetBSD__
+	spin_lock_destroy(&mchdev_lock);
 	linux_mutex_destroy(&dev_priv->modeset_restore_lock);
 	linux_mutex_destroy(&dev_priv->dpio_lock);
 	spin_lock_destroy(&dev_priv->mm.object_stat_lock);
@@ -1985,6 +1990,7 @@ int i915_driver_unload(struct drm_device
 	DRM_DESTROY_WAITQUEUE(&dev_priv->pending_flip_queue);
 	spin_lock_destroy(&dev_priv->pending_flip_lock);
 	DRM_DESTROY_WAITQUEUE(&dev_priv->gpu_error.reset_queue);
+	spin_lock_destroy(&mchdev_lock);
 	linux_mutex_destroy(&dev_priv->modeset_restore_lock);
 	linux_mutex_destroy(&dev_priv->dpio_lock);
 	spin_lock_destroy(&dev_priv->mm.object_stat_lock);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.5	Sun Sep  7 23:03:11 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Wed Feb 25 13:06:13 2015
@@ -4426,14 +4426,6 @@ ips_ping_for_i915_load(void)
 
 void intel_gpu_ips_init(struct drm_i915_private *dev_priv)
 {
-#ifdef __NetBSD__		/* XXX */
-	/*
-	 * This seems as good a place as any to initialize mchdev_lock.
-	 * Taking the lock in the rest of this routine is silly, but...
-	 */
-	spin_lock_init(&mchdev_lock);
-#endif
-
 	/* We only register the i915 ips part with intel-ips once everything is
 	 * set up, to avoid intel-ips sneaking in and reading bogus values. */
 	spin_lock_irq(&mchdev_lock);
@@ -4445,18 +4437,9 @@ void intel_gpu_ips_init(struct drm_i915_
 
 void intel_gpu_ips_teardown(void)
 {
-#ifdef __NetBSD__
-	if (i915_mch_dev == NULL)
-		return;
-#endif
-
 	spin_lock_irq(&mchdev_lock);
 	i915_mch_dev = NULL;
 	spin_unlock_irq(&mchdev_lock);
-
-#ifdef __NetBSD__
-	spin_lock_destroy(&mchdev_lock);
-#endif
 }
 
 static void intel_init_emon(struct drm_device *dev)

Reply via email to