Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/riastradh-drm2]: src/sys/external/bsd/drm2 Fix a bunch of i915 error bra...



details:   https://anonhg.NetBSD.org/src/rev/2d493d1cd329
branches:  riastradh-drm2
changeset: 788537:2d493d1cd329
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Sun Sep 08 16:00:22 2013 +0000

description:
Fix a bunch of i915 error branches.

Some of these fixes are necessary only on NetBSD because we require
mutex_destroy, while Linux doesn't.

diffstat:

 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c        |   9 ++++++++-
 sys/external/bsd/drm2/dist/drm/i915/i915_drv.h        |   6 ++++++
 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c        |   7 +++++++
 sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c |   3 +++
 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c        |  14 ++++++++++++++
 sys/external/bsd/drm2/i915drm/i915_gem_gtt.c          |  12 ++++++++++--
 6 files changed, 48 insertions(+), 3 deletions(-)

diffs (166 lines):

diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c    Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c    Sun Sep 08 16:00:22 2013 +0000
@@ -1396,6 +1396,7 @@
        mutex_unlock(&dev->struct_mutex);
        i915_gem_cleanup_aliasing_ppgtt(dev);
 cleanup_gem_stolen:
+       intel_modeset_cleanup(dev);
        i915_gem_cleanup_stolen(dev);
 cleanup_vga_switcheroo:
 #ifndef __NetBSD__             /* XXX vga */
@@ -1725,7 +1726,7 @@
                ret = i915_load_modeset_init(dev);
                if (ret < 0) {
                        DRM_ERROR("failed to init modeset\n");
-                       goto out_gem_unload;
+                       goto out_vblank_cleanup;
                }
        }
 
@@ -1743,6 +1744,9 @@
 
        return 0;
 
+out_vblank_cleanup:
+       drm_vblank_cleanup(dev);
+
 out_gem_unload:
        if (dev_priv->mm.inactive_shrinker.shrink)
                unregister_shrinker(&dev_priv->mm.inactive_shrinker);
@@ -1760,6 +1764,9 @@
 
        intel_teardown_gmbus(dev);
        intel_teardown_mchbar(dev);
+#ifdef __NetBSD__              /* XXX gt fini */
+       intel_gt_fini(dev);
+#endif
        destroy_workqueue(dev_priv->wq);
 out_mtrrfree:
 #ifndef __NetBSD__             /* XXX gtt */
diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h    Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h    Sun Sep 08 16:00:22 2013 +0000
@@ -1360,6 +1360,9 @@
 
 extern void intel_irq_init(struct drm_device *dev);
 extern void intel_gt_init(struct drm_device *dev);
+#ifdef __NetBSD__              /* XXX gt fini */
+extern void intel_gt_fini(struct drm_device *dev);
+#endif
 extern void intel_gt_reset(struct drm_device *dev);
 
 void i915_error_state_free(struct kref *error_ref);
@@ -1625,6 +1628,9 @@
                              unsigned long start,
                              unsigned long mappable_end,
                              unsigned long end);
+#ifdef __NetBSD__              /* XXX fini global gtt */
+void i915_gem_fini_global_gtt(struct drm_device *dev);
+#endif
 int i915_gem_gtt_init(struct drm_device *dev);
 void i915_gem_gtt_fini(struct drm_device *dev);
 static inline void i915_gem_chipset_flush(struct drm_device *dev)
diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c    Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c    Sun Sep 08 16:00:22 2013 +0000
@@ -4462,6 +4462,9 @@
 
                ret = i915_gem_init_aliasing_ppgtt(dev);
                if (ret) {
+#ifdef __NetBSD__              /* XXX fini global gtt */
+                       i915_gem_fini_global_gtt(dev);
+#endif
                        mutex_unlock(&dev->struct_mutex);
                        return ret;
                }
@@ -4481,6 +4484,10 @@
        }
 
        ret = i915_gem_init_hw(dev);
+#ifdef __NetBSD__              /* XXX fini global gtt */
+       if (ret)
+               i915_gem_fini_global_gtt(dev);
+#endif
        mutex_unlock(&dev->struct_mutex);
        if (ret) {
                i915_gem_cleanup_aliasing_ppgtt(dev);
diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c     Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c     Sun Sep 08 16:00:22 2013 +0000
@@ -171,8 +171,11 @@
 
 void i915_gem_cleanup_stolen(struct drm_device *dev)
 {
+       struct drm_i915_private *dev_priv = dev->dev_private;
+
        if (I915_HAS_FBC(dev) && i915_powersave)
                i915_cleanup_compression(dev);
+       drm_mm_takedown(&dev_priv->mm.stolen);
 }
 
 int i915_gem_init_stolen(struct drm_device *dev)
diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
--- a/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c    Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c    Sun Sep 08 16:00:22 2013 +0000
@@ -3386,6 +3386,10 @@
 
 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);
@@ -4450,6 +4454,16 @@
                          intel_gen6_powersave_work);
 }
 
+#ifdef __NetBSD__              /* XXX gt fini */
+void
+intel_gt_fini(struct drm_device *dev)
+{
+       struct drm_i915_private *dev_priv = dev->dev_private;
+
+       spin_lock_destroy(&dev_priv->gt_lock);
+}
+#endif
+
 int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val)
 {
        WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
diff -r 451c64f8d2c9 -r 2d493d1cd329 sys/external/bsd/drm2/i915drm/i915_gem_gtt.c
--- a/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c      Sun Sep 08 15:59:47 2013 +0000
+++ b/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c      Sun Sep 08 16:00:22 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: i915_gem_gtt.c,v 1.1.2.2 2013/09/08 15:57:01 riastradh Exp $   */
+/*     $NetBSD: i915_gem_gtt.c,v 1.1.2.3 2013/09/08 16:00:22 riastradh Exp $   */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.1.2.2 2013/09/08 15:57:01 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.1.2.3 2013/09/08 16:00:22 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -240,6 +240,14 @@
            ((end - start) >> PAGE_SHIFT));
 }
 
+void
+i915_gem_fini_global_gtt(struct drm_device *dev)
+{
+       struct drm_i915_private *const dev_priv = dev->dev_private;
+
+       drm_mm_takedown(&dev_priv->mm.gtt_space);
+}
+
 static void
 i915_gtt_color_adjust(struct drm_mm_node *node, unsigned long color,
     unsigned long *start, unsigned long *end)



Home | Main Index | Thread Index | Old Index