SysadminNews

Qualcomm Synx: the dma-fence contract is the obstacle

On this page
  1. The discussion moved beyond the announcement
  2. Why “the remote side will signal eventually” is insufficient
  3. Read standalone handles and Linux interoperability separately

A remote processor can signal an event without waking the host. Connecting that event to Linux memory-management fences introduces stricter requirements than message delivery alone.

Conceptual circular dependency: memory reclaim waits for a fence, the fence waits for remote work, and remote work needs allocation dependent on that same reclaim. This explains the completion-contract concern, not a reproduced Synx bug.
Conceptual circular dependency: memory reclaim waits for a fence, the fence waits for remote work, and remote work needs allocation dependent on that same reclaim. This explains the completion-contract concern, not a reproduced Synx bug. Chart : PeopleAreGeek. Data source.
View full-size image

The discussion moved beyond the announcement

Qualcomm’s August 6 RFC and follow-ups propose global synchronization handles spanning Linux and remote processors, with optional dma-fence and sync_file interoperability. In the August 25 response, DMA-buf maintainer Christian König rejects the proposed interoperability approach and explains the conflict with memory-management assumptions. The original article stopped before that substantive objection.

Qualcomm’s claims of power and performance benefits remain qualitative in this discussion. They should not be converted into an independently measured saving or a promise of upstream acceptance. A vendor implementation and a generic mainline contract are different deliverables.

Why “the remote side will signal eventually” is insufficient

The kernel’s dma-fence contract requires completion within reasonable time and restricts what completion paths may wait for or allocate. Those restrictions prevent dependencies from circling back into the memory-management work waiting on the fence.

Our conceptual cycle has memory reclaim waiting for a fence, the fence waiting for a remote job, and that job needing an allocation that depends on the same blocked reclaim. Each local step sounds reasonable; together they can prevent progress. This is an explanatory dependency cycle, not a reproduced Synx failure or a diagram of shipped hardware.

Simply choosing a faster signaling transport does not remove that cycle. Neither does naming a watchdog explain whether timeout recovery can itself complete safely under the same resource constraints.

Read standalone handles and Linux interoperability separately

A standalone synchronization mechanism may permit long-running jobs, demand allocation and device-to-device signaling. That freedom does not automatically make its completion a valid dma-fence output. The review distinguishes consuming an existing fence from producing one under these conditions.

For anyone following an eventual revised design, look for the exact resource-allocation boundary, lifetime ownership, restart behavior and handling of composed dependencies. An aggregate is not safe merely because each component has a handle number. No Synx patch has been applied or tested for this article; the useful update is the documented design disagreement and the reason it affects more than latency.

September 8: include the August 25 DMA-buf maintainer objection, distinguish standalone synchronization from dma-fence interoperability, and explain the completion dependency problem.