Commit 5ad08be7 authored by Chris Wilson's avatar Chris Wilson
Browse files

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: default avatarAndrea Arcangeli <aarcange@redhat.com>
Signed-off-by: default avatarChris 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: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
parent e92075ff
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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)