Philipp Stanner
2025-May-22 11:25 UTC
[PATCH 2/2] drm/nouveau: Don't signal when killing the fence context
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.
Signed-off-by: Philipp Stanner <phasta at 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))
--
2.49.0
Christian König
2025-May-22 12:06 UTC
[PATCH 2/2] drm/nouveau: Don't signal when killing the fence context
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. Regards, Christian.> > Signed-off-by: Philipp Stanner <phasta at 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))