This series adds a new dmadev poll-mode driver for the AMD AE4DMA hardware DMA engine, split into introduction, control path and data path patches, plus a small dmadev test-suite patch.
v5 addresses the v4 review comments from Chengwen Feng. Changes since v4: Patch 1/4 (introduce): - Drop the custom AE4DMA_BIT() macro and use RTE_BIT32() from rte_bitops.h for the DWORD0 control-bit and memory-type defines. - Remove the now-unused per-queue status[] array from struct ae4dma_cmd_queue (completion status is derived directly from the descriptors in patch 3). Patch 3/4 (data path): - Fix rte_dma_completed(): stop at the first failed descriptor and return only the run of successful ops preceding it, set *has_error, and leave the failed op to be reported by rte_dma_completed_status(). last_idx now reports the last successfully completed ring_idx. - Drop the redundant 'if (last_idx != NULL)' check; the framework always passes a non-NULL last_idx. Patch 4/4 (test): - Unchanged; retains TEST_SKIPPED for sub-32 burst capacity. Changes since v3 (carried over, for reference): Patch 1/4 (introduce): - Fix copyright years (2025/2024 -> 2026) in ae4dma.rst and meson.build. - Drop the unnecessary memzone lookup/reuse logic; rings are reserved once at probe. - Trim ae4dma_hw_defs.h includes; move the rest to ae4dma_internal.h. - Remove redundant double blank lines in ae4dma_internal.h. - Use an initialiser instead of memset() for hwq_dev_name and reorder local declarations in descending length. - Make the probe-failure log message more descriptive. - Build only on Linux (add the is_linux guard to meson.build). - Add a hw_base field to anchor the free-running ring index. Patch 2/4 (control path): - Advertise RTE_DMA_CAPA_OPS_COPY in dev_info_get. - Use 'conf_sz < sizeof(...)' instead of '!=' to stay ABI compatible. - Drop checks already performed by the dmadev framework. - Reset the free-running ring indices in vchan_setup and dev_start, anchoring index 0 to the current HW consumer slot (hw_base). - Reword the commit log for the 2 to 32 descriptor range. Patch 3/4 (data path): - Return free-running 16-bit ring_idx values from rte_dma_copy() and completed()/completed_status(); HW slot = (hw_base + idx) & mask. - Map the AE4DMA alignment error to RTE_DMA_STATUS_ERROR_UNKNOWN. - Drop the redundant power-of-two/range check in burst_capacity(). - Document the 32-descriptor / 31-outstanding ring-depth limitation. Patch 4/4 (test) - added in v4: - Return TEST_SKIPPED instead of failing the instance suite when a device reports burst capacity below 32, matching the existing < 64 skip used by the burst_capacity test. Note: the power-of-two rounding of nb_desc in vchan_setup is retained on purpose: the free-running ring index is mapped to a HW ring slot by masking, which is only correct for a power-of-two depth. Raghavendra Ningoji (4): dma/ae4dma: introduce AMD AE4DMA DMA PMD dma/ae4dma: add control path operations dma/ae4dma: add data path operations test/dma: skip instance suite on low burst capacity .mailmap | 1 + MAINTAINERS | 5 + app/test/test_dmadev.c | 8 +- doc/guides/dmadevs/ae4dma.rst | 77 +++ doc/guides/dmadevs/index.rst | 1 + doc/guides/rel_notes/release_26_07.rst | 7 + drivers/dma/ae4dma/ae4dma_dmadev.c | 677 +++++++++++++++++++++++++ drivers/dma/ae4dma/ae4dma_hw_defs.h | 149 ++++++ drivers/dma/ae4dma/ae4dma_internal.h | 113 +++++ drivers/dma/ae4dma/meson.build | 13 + drivers/dma/meson.build | 1 + usertools/dpdk-devbind.py | 5 +- 12 files changed, 1054 insertions(+), 3 deletions(-) create mode 100644 doc/guides/dmadevs/ae4dma.rst create mode 100644 drivers/dma/ae4dma/ae4dma_dmadev.c create mode 100644 drivers/dma/ae4dma/ae4dma_hw_defs.h create mode 100644 drivers/dma/ae4dma/ae4dma_internal.h create mode 100644 drivers/dma/ae4dma/meson.build -- 2.34.1

