[PATCH v2 2/2] dma-buf/sw_sync: force signal all unsignaled fences on dying timeline

Gustavo Padovan gustavo at padovan.org
Fri Sep 8 13:03:00 UTC 2017


Hi Chris,

2017-09-07 Chris Wilson <chris at chris-wilson.co.uk>:

> Quoting Gustavo Padovan (2017-09-07 20:02:46)
> > From: Dominik Behr <dbehr at chromium.org>
> > 
> > To avoid hanging userspace components that might have been waiting on the
> > active fences of the destroyed timeline we need to signal with error all
> > remaining fences on such timeline.
> > 
> > This restore the default behaviour of the Android sw_sync framework, which
> > Android still relies on. It was broken on the dma fence conversion a few
> > years ago and never fixed.
> > 
> > v2: Do not bother with cleanup do the list (Chris Wilson)
> > 
> > Signed-off-by: Dominik Behr <dbehr at chromium.org>
> > Signed-off-by: Gustavo Padovan <gustavo.padovan at collabora.com>
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
> 
> > ---
> >  drivers/dma-buf/sw_sync.c | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c
> > index 38cc7389a6c1..f183eef074fd 100644
> > --- a/drivers/dma-buf/sw_sync.c
> > +++ b/drivers/dma-buf/sw_sync.c
> > @@ -321,9 +321,19 @@ static int sw_sync_debugfs_open(struct inode *inode, struct file *file)
> >  static int sw_sync_debugfs_release(struct inode *inode, struct file *file)
> >  {
> >         struct sync_timeline *obj = file->private_data;
> > +       struct sync_pt *pt, *next;
> >  
> >         smp_wmb();
> >  
> > +       spin_lock_irq(&obj->lock);
> 
> Given the spinlock, that uncommented barrier (what is it paired with?)
> above is redundant.

Okay, I'll remove the barrier and push that patch, I assume your r-b
will comtemplate that as well?

Gustavo


More information about the dri-devel mailing list