]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/i915_gem_shrinker.c
Merge tag 'v4.11-rc7' into drm-next
[karo-tx-linux.git] / drivers / gpu / drm / i915 / i915_gem_shrinker.c
index 70b3832a79dd40d066a6f2deb34cbc6d436559e1..129ed303a6c46e2f856eb1abc84990079abefb65 100644 (file)
@@ -218,7 +218,7 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
 
                        if (!(flags & I915_SHRINK_ACTIVE) &&
                            (i915_gem_object_is_active(obj) ||
-                            obj->framebuffer_references))
+                            i915_gem_object_is_framebuffer(obj)))
                                continue;
 
                        if (!can_release_pages(obj))
@@ -267,10 +267,13 @@ unsigned long i915_gem_shrink_all(struct drm_i915_private *dev_priv)
 {
        unsigned long freed;
 
+       intel_runtime_pm_get(dev_priv);
        freed = i915_gem_shrink(dev_priv, -1UL,
                                I915_SHRINK_BOUND |
                                I915_SHRINK_UNBOUND |
                                I915_SHRINK_ACTIVE);
+       intel_runtime_pm_put(dev_priv);
+
        synchronize_rcu(); /* wait for our earlier RCU delayed slab frees */
 
        return freed;
@@ -386,9 +389,7 @@ i915_gem_shrinker_oom(struct notifier_block *nb, unsigned long event, void *ptr)
        if (!i915_gem_shrinker_lock_uninterruptible(dev_priv, &slu, 5000))
                return NOTIFY_DONE;
 
-       intel_runtime_pm_get(dev_priv);
        freed_pages = i915_gem_shrink_all(dev_priv);
-       intel_runtime_pm_put(dev_priv);
 
        /* Because we may be allocating inside our own driver, we cannot
         * assert that there are no objects with pinned pages that are not