diff options
author | H. Peter Anvin | 2011-08-05 21:25:56 +0200 |
---|---|---|
committer | H. Peter Anvin | 2011-08-05 21:25:56 +0200 |
commit | 13f9a3737c903ace57d8aaebe81a3bbaeb0aa0a2 (patch) | |
tree | 6a81d50b611170ca6dd1ed9cce2b86dd19f190d8 /drivers/gpu/drm/i915/i915_dma.c | |
parent | x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message (diff) | |
parent | Linux 3.0 (diff) | |
download | kernel-qcow2-linux-13f9a3737c903ace57d8aaebe81a3bbaeb0aa0a2.tar.gz kernel-qcow2-linux-13f9a3737c903ace57d8aaebe81a3bbaeb0aa0a2.tar.xz kernel-qcow2-linux-13f9a3737c903ace57d8aaebe81a3bbaeb0aa0a2.zip |
Merge commit 'v3.0' into x86/cpu
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index e1787022d6c8..296fbd66f0e1 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1943,7 +1943,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) if (!dev_priv->mm.gtt) { DRM_ERROR("Failed to initialize GTT\n"); ret = -ENODEV; - goto out_iomapfree; + goto out_rmmap; } agp_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; @@ -1987,7 +1987,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) if (dev_priv->wq == NULL) { DRM_ERROR("Failed to create our workqueue.\n"); ret = -ENOMEM; - goto out_iomapfree; + goto out_mtrrfree; } /* enable GEM by default */ @@ -2074,13 +2074,21 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) return 0; out_gem_unload: + if (dev_priv->mm.inactive_shrinker.shrink) + unregister_shrinker(&dev_priv->mm.inactive_shrinker); + if (dev->pdev->msi_enabled) pci_disable_msi(dev->pdev); intel_teardown_gmbus(dev); intel_teardown_mchbar(dev); destroy_workqueue(dev_priv->wq); -out_iomapfree: +out_mtrrfree: + if (dev_priv->mm.gtt_mtrr >= 0) { + mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, + dev->agp->agp_info.aper_size * 1024 * 1024); + dev_priv->mm.gtt_mtrr = -1; + } io_mapping_free(dev_priv->mm.gtt_mapping); out_rmmap: pci_iounmap(dev->pdev, dev_priv->regs); |