[PATCH] dma-buf: fix dma_fence_array_signaled

Boris Brezillon boris.brezillon at collabora.com
Fri Nov 8 15:03:09 UTC 2024


On Fri, 8 Nov 2024 15:18:38 +0100
Christian König <ckoenig.leichtzumerken at gmail.com> wrote:

> > }
> >     }
> >
> >     dma_fence_array_clear_pending_error(array);
> >     return true;
> > }
> >
> > Or if the optimisation to not walk the array when signalling is 
> > already enabled is deemed important, perhaps a less thinking inducing 
> > way would be this:  
> ...
> > Decrementing locally cached num_pending in the loop I think does not 
> > bring anything since when signalling is not enabled it will be stuck 
> > at num_fences. So the loop walks the whole array versus bail on first 
> > unsignalled, so latter even more efficient.  
> 
> That is not for optimization but for correctness.
> 
> What the patch basically does is the following:
> 1. Grab the current value of num_pending.
> 
> 2. Test if num_pending was potentially already modified because 
> signaling is already enabled, if yes just test it and return the result.
> 
> 3. If it wasn't modified go over the fences and see if we already have 
> at least num_pending signaled.
> 
> I should probably add a code comment explaining that.

Sorry, I didn't sync my inbox before replying. Looks like we're on the
same page here: the code clearly needs comments to explain what's going
on.


More information about the dri-devel mailing list