drm/i915/gem: Break up long lists of object reclaim
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Feb 2020 10:09:53 +0000 (10:09 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Feb 2020 17:32:17 +0000 (17:32 +0000)
Call cond_resched() between each freed object in case we have a really,
really long list, and we don't want to block normal processes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200221100953.2587176-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_object.c

index 35985218bd8570dc7e6af8f08053f71feaf19a1c..5da9f9e534b94981c65e81ef6ba1f4eb5f634852 100644 (file)
@@ -225,6 +225,7 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915,
 
                /* But keep the pointer alive for RCU-protected lookups */
                call_rcu(&obj->rcu, __i915_gem_free_object_rcu);
+               cond_resched();
        }
        intel_runtime_pm_put(&i915->runtime_pm, wakeref);
 }