mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 17:04:50 -04:00
drm/i915: Break up long runs of freeing objects
Before freeing the next batch of objects from the worker, check if the worker's timeslice has expired and if so, defer the next batch to the next invocation of the worker. Suggested-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170407102552.5781-3-chris@chris-wilson.co.uk Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
@@ -4349,8 +4349,11 @@ static void __i915_gem_free_work(struct work_struct *work)
|
||||
* unbound now.
|
||||
*/
|
||||
|
||||
while ((freed = llist_del_all(&i915->mm.free_list)))
|
||||
while ((freed = llist_del_all(&i915->mm.free_list))) {
|
||||
__i915_gem_free_objects(i915, freed);
|
||||
if (need_resched())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void __i915_gem_free_object_rcu(struct rcu_head *head)
|
||||
|
||||
Reference in New Issue
Block a user