freenode
Kernel & Low-Level

DMAengine moves client completions off private tasklets

A 64-patch series centralizes per-channel bottom-half handling on a shared WQ_BH workqueue across virt-dma and more than a dozen drivers.

Allen Pais has posted a second-round patch series that migrates Linux DMAengine client completion bottom halves from driver-private tasklets onto a common per-channel API backed by a dedicated WQ_BH workqueue.

Client callbacks stay in softirq context, but initialization, scheduling, and teardown now go through one shared path instead of each driver's own tasklet. A kill helper drains any work still queued so teardown keeps the same safety guarantees tasklet_kill() provided. Controllers that use tasklets for recovery or other non-client work are left alone; hardirq callback delivery is deferred to a later API change.

The conversion covers virt-dma and the many drivers that hang off it, plus several that owned their own completion tasklets. The practical effect is less duplicated teardown logic and a single place to evolve how DMA completion callbacks are delivered, without changing the context clients already rely on.