Re: [PATCH v2 00/64] dmaengine: migrate channel tasklets to WQ_BH

From: Arnd Bergmann

Date: Tue Jul 28 2026 - 16:40:49 EST


On Mon, Jul 27, 2026, at 22:28, 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 dma_chan_*_bh() API with a tasklet backend
> and converts virt-dma to it. 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 dma_chan_kill_bh()
> drains scheduled callbacks to preserve tasklet_kill() semantics.
>
> The remaining patches convert driver-owned channel completion tasklets
> and update virt-dma teardown paths. 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.

Hi Allen,

I looked through the series, and this seems all fine to me,
nice work!

Arnd