drm/i915/shrinker: Only report objects with extra pinned pages as pinned
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 20 Apr 2016 11:09:50 +0000 (12:09 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 20 Apr 2016 12:44:19 +0000 (13:44 +0100)
When iterating over the bound list, we expect all objects there to have
their pages pinned (by the bound VMA). So only report those objects with
additional pin count on their pages as "pinned". These should be those
objects used for display and hardware access.

Reported-by: Akash Goel <akash.goel@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Akash Goel <akash.goel@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1461150592-27818-1-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_shrinker.c

index d46388f25e04e1df880c545c76cc41974d620419..4e4fcfa76b4c12a8871a67ae24727fe68997263b 100644 (file)
@@ -361,7 +361,7 @@ i915_gem_shrinker_oom(struct notifier_block *nb, unsigned long event, void *ptr)
                if (!obj->base.filp)
                        continue;
 
-               if (obj->pages_pin_count)
+               if (obj->pages_pin_count > num_vma_bound(obj))
                        pinned += obj->base.size;
                else
                        bound += obj->base.size;