[PATCH v3 0/4] dmaengine: dw-axi-dmac: fix termination and pause acknowledgment

From: James Hilliard

Date: Tue Nov 10 2026 - 22:16:10 EST


Use the layout-aware channel enable check during termination and retain
transfer resources when the channel does not stop. Preserve suspension
status for the pause and resume paths, including acknowledgments that
arrive after a polling timeout or during another channel's interrupt.

Keep a pending pause across cyclic segment completion and resume the
segment only after the client releases the pause. Track the active
descriptor until completion so queued work cannot reissue it while its
interrupt is pending.

Assisted-by: Codex:gpt-6-astra
Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
---
Changes in v3:
- Wrap the atomic polling calls by argument group and correct their
continuation indentation, following Andy's review.
- Move the termination return-value check simplification into the
channel-enable polling patch.
- Separate the pause-loop conversion to atomic polling from the
pending-request and cyclic-restart changes.
- Annotate the suspend-wait helper with its channel-lock requirement.
- Pack the lock-protected flags into existing padding while keeping
cyclic separately writable, following Andy's review.
- Link to v2: https://patch.msgid.link/20261109-submit-dw-axi-dma-stop-pause-v1-v2-0-64adc48df793@xxxxxxxxx

Changes in v2:
- Use readx_poll_timeout_atomic() for the single-argument status helpers
and express the termination polling interval and timeout in milliseconds,
following Andy's review.
- Track pending suspend requests separately from confirmed suspension so
resume can handle acknowledgments received after a pause timeout.
- Use the atomic polling helper, including its final status check, and
report -EAGAIN if resume cannot yet cancel a pending suspend request.
- Defer cyclic restart while paused and track the active descriptor until
completion, preventing resume or issue_pending from reissuing it.
- Reset pause state on successful termination and channel allocation;
clear stale status when starting a new descriptor.
- Link to v1: https://patch.msgid.link/20261108-submit-dw-axi-dma-stop-pause-v1-v1-0-c48ec19e9ee4@xxxxxxxxx

To: Eugeniy Paltsev <Eugeniy.Paltsev@xxxxxxxxxxxx>
To: Vinod Koul <vkoul@xxxxxxxxxx>
To: Frank Li <Frank.Li@xxxxxxxxxx>
To: Sergey Khimich <serghox@xxxxxxxxx>
To: Sia Jee Heng <jee.heng.sia@xxxxxxxxx>
To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Cc: dmaengine@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx

---
James Hilliard (4):
dmaengine: dw-axi-dmac: poll the correct enable bit during termination
dmaengine: dw-axi-dmac: retain descriptors when termination times out
dmaengine: dw-axi-dmac: use atomic polling for suspend acknowledgment
dmaengine: dw-axi-dmac: preserve pending pause requests

drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 120 ++++++++++++++++++++-----
drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 9 +-
2 files changed, 102 insertions(+), 27 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261108-submit-dw-axi-dma-stop-pause-v1-c93f1e767169

Best regards,
--
James Hilliard <james.hilliard1@xxxxxxxxx>