On Thu, 2025-05-22 at 14:06 +0200, Christian König wrote: > On 5/22/25 13:25, Philipp Stanner wrote: > > dma_fence_is_signaled_locked(), which is used in > > nouveau_fence_context_kill(), can signal fences below the surface > > through a callback. > > > > There is neither need for nor use in doing that when killing a > > fence > > context. > > > > Replace dma_fence_is_signaled_locked() with > > __dma_fence_is_signaled(), a > > function which only checks, never signals. > > That is not a good approach. > > Having the __dma_fence_is_signaled() means that other would be > allowed to call it as well. > > But nouveau can do that here only because it knows that the fence was > issued by nouveau. > > What nouveau can to is to test the signaled flag directly, but that's > what you try to avoid as well.
There's many parties who check the bit already. And if Nouveau is allowed to do that, one can just as well provide a wrapper for it. That has the advantage of centralizing the responsibility and documenting it. P. > > Regards, > Christian. > > > > > Signed-off-by: Philipp Stanner <pha...@kernel.org> > > --- > > drivers/gpu/drm/nouveau/nouveau_fence.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c > > b/drivers/gpu/drm/nouveau/nouveau_fence.c > > index d5654e26d5bc..993b3dcb5db0 100644 > > --- a/drivers/gpu/drm/nouveau/nouveau_fence.c > > +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c > > @@ -88,7 +88,7 @@ nouveau_fence_context_kill(struct > > nouveau_fence_chan *fctx, int error) > > > > spin_lock_irqsave(&fctx->lock, flags); > > list_for_each_entry_safe(fence, tmp, &fctx->pending, head) > > { > > - if (error && !dma_fence_is_signaled_locked(&fence- > > >base)) > > + if (error && !__dma_fence_is_signaled(&fence- > > >base)) > > dma_fence_set_error(&fence->base, error); > > > > if (nouveau_fence_signal(fence)) >