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)