| From 815cd2437d7f2b92b87d70c4dc2f28fb4c69430d Mon Sep 17 00:00:00 2001 |
| From: Ben Widawsky <ben@bwidawsk.net> |
| Date: Wed, 31 Jul 2013 16:59:57 -0700 |
| Subject: drm/i915: Use bound list for inactive shrink |
| |
| Do to the move active/inactive lists, it no longer makes sense to use |
| them for shrinking, since shrinking isn't VM specific (such a need may |
| also exist, but doesn't yet). |
| |
| What we can do instead is use the global bound list to find all objects |
| which aren't active. |
| |
| Signed-off-by: Ben Widawsky <ben@bwidawsk.net> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit fcb4a57805e04dee04f736c25a5648ec7bebe30f) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_gem.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c |
| index f99fffb61b8a..c7e0db1ff8f5 100644 |
| --- a/drivers/gpu/drm/i915/i915_gem.c |
| +++ b/drivers/gpu/drm/i915/i915_gem.c |
| @@ -4629,7 +4629,6 @@ i915_gem_inactive_shrink(struct shrinker *shrinker, struct shrink_control *sc) |
| struct drm_i915_private, |
| mm.inactive_shrinker); |
| struct drm_device *dev = dev_priv->dev; |
| - struct i915_address_space *vm = &dev_priv->gtt.base; |
| struct drm_i915_gem_object *obj; |
| int nr_to_scan = sc->nr_to_scan; |
| bool unlock = true; |
| @@ -4658,9 +4657,14 @@ i915_gem_inactive_shrink(struct shrinker *shrinker, struct shrink_control *sc) |
| list_for_each_entry(obj, &dev_priv->mm.unbound_list, global_list) |
| if (obj->pages_pin_count == 0) |
| cnt += obj->base.size >> PAGE_SHIFT; |
| - list_for_each_entry(obj, &vm->inactive_list, mm_list) |
| + |
| + list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) { |
| + if (obj->active) |
| + continue; |
| + |
| if (obj->pin_count == 0 && obj->pages_pin_count == 0) |
| cnt += obj->base.size >> PAGE_SHIFT; |
| + } |
| |
| if (unlock) |
| mutex_unlock(&dev->struct_mutex); |
| -- |
| 1.8.5.rc3 |
| |