[Intel-gfx] [PATCH 1/2] drm/i915: Use our singlethreaded wq for freeing objects

Chris Wilson chris at chris-wilson.co.uk
Mon Jan 15 21:17:02 UTC 2018


Quoting Tvrtko Ursulin (2018-01-15 16:54:57)
> 
> On 15/01/2018 12:28, Chris Wilson wrote:
> > 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 <chris at chris-wilson.co.uk>
> > ---
> >   drivers/gpu/drm/i915/i915_gem.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > 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.
> >        */
> 
> This comment which is only partially visible here is a bit wonky...
> 
> >       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)
> > 
> 
> .. but the logic seems sound.
> 
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Thanks for the review and questions. Sent a patch to hopefully improve
the commentary here, and pushed this simple patch in the meantime.
-Chris


More information about the Intel-gfx mailing list