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