Re: [RFC PATCH v6 3/5] rust: DmaFence: Don't drop on signal

From: Alice Ryhl

Date: Fri Oct 16 2026 - 06:00:09 EST


On Fri, Oct 16, 2026 at 10:57:22AM +0200, Philipp Stanner wrote:
> The original design for DmaFence intended to comply as strictly as
> possible with the "dma_fence contract", which, according to some, says
> that a fence must only be signaled once. Thus, the implementation was
> made so that a DriverFence drops on signal.
>
> While extending JobQueue's capabilities, it was discovered that this
> characteristic causes - unnecessary - trouble: fence-data must be
> dropped in an RCU-deferred manner because the C backend demands that.
> However, fences are often signaled in atomic context (e.g., interrupt
> handler) where you don't want to drop, but signal as quickly as
> possible.
>
> Actually, there is no real hard reason to enforce that a fence can only
> get signaled once, because the C backend is robust against multiple
> signal attempts.
>
> What is decisive is that a) all fences signal and b) they only drop no
> earlier than 1 RCU grace period after signaling.
>
> Don't drop a DriverFence on signal().
>
> Signed-off-by: Philipp Stanner <phasta@xxxxxxxxxx>

This seems reasonable to me, though sashiko makes a good point about
being more careful when updating the fence counter.

Alice