From 03c4b8f44ca09232ca6b6f522ee1fe1b7070a82f Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Fri, 20 Aug 2010 21:23:20 +0200 Subject: [PATCH] --- yaml --- r: 217889 b: refs/heads/master c: c911fc1c6ad61b56869ee521f1a477c741b039da h: refs/heads/master i: 217887: c5e5b8ceda9f6e3039d8b57fb5125fa787f5c26e v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/i915_dma.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 202d277164d7..539550984cd8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 67e77c5ae8bff6f805d207541f1315051248a87b +refs/heads/master: c911fc1c6ad61b56869ee521f1a477c741b039da diff --git a/trunk/drivers/gpu/drm/i915/i915_dma.c b/trunk/drivers/gpu/drm/i915/i915_dma.c index 27a826e3170a..14133ebef33b 100644 --- a/trunk/drivers/gpu/drm/i915/i915_dma.c +++ b/trunk/drivers/gpu/drm/i915/i915_dma.c @@ -2249,11 +2249,18 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) int i915_driver_unload(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; + int ret; spin_lock(&mchdev_lock); i915_mch_dev = NULL; spin_unlock(&mchdev_lock); + mutex_lock(&dev->struct_mutex); + ret = i915_gpu_idle(dev); + if (ret) + DRM_ERROR("failed to idle hardware: %d\n", ret); + mutex_unlock(&dev->struct_mutex); + io_mapping_free(dev_priv->mm.gtt_mapping); if (dev_priv->mm.gtt_mtrr >= 0) { mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, @@ -2303,7 +2310,6 @@ int i915_driver_unload(struct drm_device *dev) if (I915_HAS_FBC(dev) && i915_powersave) i915_cleanup_compression(dev); drm_mm_takedown(&dev_priv->vram); - i915_gem_lastclose(dev); intel_cleanup_overlay(dev); }