]> git.openpandora.org Git - pandora-kernel.git/commitdiff
drm/i915: Include bound and active pages in the count of shrinkable objects
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 25 Mar 2014 13:23:04 +0000 (13:23 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 20 May 2014 07:46:06 +0000 (09:46 +0200)
When the machine is under a lot of memory pressure and being stressed by
multiple GPU threads, we quite often report fewer than shrinker->batch
(i.e. SHRINK_BATCH) pages to be freed. This causes the shrink_control to
skip calling into i915.ko to release pages, despite the GPU holding onto
most of the physical pages in its active lists.

References: https://bugs.freedesktop.org/show_bug.cgi?id=72742
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Robert Beckett <robert.beckett@intel.com>
Reviewed-by: Rafael Barbalho <rafael.barbalho@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c

index dea455bd889ac562d5bd4f9d6120f9d5b5f7a101..bf813967728a2f4ffec51db23c8399d96de6d5f5 100644 (file)
@@ -1741,8 +1741,8 @@ out_power_well:
        intel_power_domains_remove(dev_priv);
        drm_vblank_cleanup(dev);
 out_gem_unload:
-       if (dev_priv->mm.inactive_shrinker.scan_objects)
-               unregister_shrinker(&dev_priv->mm.inactive_shrinker);
+       if (dev_priv->mm.shrinker.scan_objects)
+               unregister_shrinker(&dev_priv->mm.shrinker);
 
        if (dev->pdev->msi_enabled)
                pci_disable_msi(dev->pdev);
@@ -1793,8 +1793,8 @@ int i915_driver_unload(struct drm_device *dev)
 
        i915_teardown_sysfs(dev);
 
-       if (dev_priv->mm.inactive_shrinker.scan_objects)
-               unregister_shrinker(&dev_priv->mm.inactive_shrinker);
+       if (dev_priv->mm.shrinker.scan_objects)
+               unregister_shrinker(&dev_priv->mm.shrinker);
 
        io_mapping_free(dev_priv->gtt.mappable);
        arch_phys_wc_del(dev_priv->gtt.mtrr);
index c9231f2bca2562d74fc6d5fa048895896759111a..456da106c778306f9afe08f7c6ae0f670652af85 100644 (file)
@@ -1057,7 +1057,7 @@ struct i915_gem_mm {
        /** PPGTT used for aliasing the PPGTT with the GTT */
        struct i915_hw_ppgtt *aliasing_ppgtt;
 
-       struct shrinker inactive_shrinker;
+       struct shrinker shrinker;
        bool shrinker_no_lock_stealing;
 
        /** LRU list of objects with fence regs on them. */
Simple merge