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 <[email protected]>
This seems reasonable to me, though sashiko makes a good point about being more careful when updating the fence counter. Alice
