From: Chris Wilson Date: Mon, 15 Jan 2018 12:28:45 +0000 (+0000) Subject: drm/i915: Use our singlethreaded wq for freeing objects X-Git-Tag: Ubuntu-5.4-5.4.0-11.14~5718^2~27^2~120 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=beacbd16158a583dc22104d59ea9ac0a808be73f;p=mirror_ubuntu-focal-kernel.git drm/i915: Use our singlethreaded wq for freeing objects As freeing the objects require serialisation on struct_mutex, we should prefer to use our singlethreaded driver wq that is dedicated to work requiring struct_mutex (hence serialised).The benefit should be less clutter on the system wq, allowing it to make progress even when the driver/struct_mutex is heavily contended. Signed-off-by: Chris Wilson Link: https://patchwork.freedesktop.org/patch/msgid/20180115122846.15193-1-chris@chris-wilson.co.uk Reviewed-by: Tvrtko Ursulin --- diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 1135a77b383a..87937c4f9dff 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -4732,7 +4732,7 @@ static void __i915_gem_free_object_rcu(struct rcu_head *head) * detour through a worker. */ if (llist_add(&obj->freed, &i915->mm.free_list)) - schedule_work(&i915->mm.free_work); + queue_work(i915->wq, &i915->mm.free_work); } void i915_gem_free_object(struct drm_gem_object *gem_obj)