Re: [PATCH v3 00/34] dmaengine: migrate channel tasklets to WQ_BH

From: Andy Shevchenko

Date: Tue Aug 11 2026 - 06:30:42 EST


On Mon, Aug 10, 2026 at 11:09:01AM -0700, Allen Pais wrote:
> Hi Arnd, Vinod and Frank,
>
> This series moves DMAengine client completion bottom halves from private
> tasklets to a common per-channel API backed by WQ_BH.
>
> The first patch introduces the dmaengine_*_bh() API with a tasklet backend
> and converts virt-dma to it. It also updates every driver that directly
> accesses the removed virt_dma_chan tasklet, keeping the patch buildable on
> its own. This separates the driver-facing API from its implementation
> without changing callback context.
>
> The second patch switches that backend to a dedicated WQ_BH | WQ_PERCPU
> workqueue. WQ_BH keeps callbacks in softirq context, while the common API
> centralizes initialization, scheduling, and synchronization. The
> workqueue helpers remain internal to DMAengine, and dmaengine_kill_bh()
> drains scheduled callbacks to preserve tasklet_kill() semantics.
>
> The remaining patches convert driver-owned channel completion tasklets.
> Tasklets used for controller-level processing, recovery, or other
> non-client-callback work are deliberately left alone because the
> appropriate replacement may differ by driver.
>
> As agreed in the RFC discussion, selecting hardirq callback delivery is a
> separate API change and is not part of this series.
>
> Earlier discussion:
> https://lore.kernel.org/all/20260108080332.2341725-1-allen.lkml@xxxxxxxxx/

Never reply with a new version of such a long series into the same thread (of
the previous version of it), it's now a mess in the mail thread.

--
With Best Regards,
Andy Shevchenko