[PATCH v3 0/3] dma/ae4dma: add AMD AE4DMA DMA PMD

Raghavendra Ningoji raghavendra.ningoji at amd.com
Thu Jun 25 20:47:25 CEST 2026


This series adds a new dmadev poll-mode driver for the AMD AE4DMA
hardware DMA engine. An AE4DMA engine exposes 16 hardware command
queues, each with a 32-entry descriptor ring; the PMD maps each
hardware channel to its own dmadev with a single virtual channel,
so a PCI function appears as 16 dmadevs named "<pci-bdf>-ch0" ..
"<pci-bdf>-ch15".

Driver characteristics:

 - Memory-to-memory copy operations only (RTE_DMA_CAPA_MEM_TO_MEM).
 - Completion is detected via the hardware's per-queue read_idx
   register, which the engine advances as it processes descriptors.
   The descriptor status / err_code bytes are read only to classify
   each drained slot as success or failure.
 - vchan_status reports IDLE/ACTIVE based on HW read_idx vs write_idx
   and HALTED_ERROR when the queue is not enabled.
 - depends on bus_pci and dmadev.

The driver is introduced in three logical patches, following the
pattern of the recent hisi_acc dmadev driver:

  1/3 - introduce driver (probe, remove, per-queue HW init)
  2/3 - add control path operations (dev_ops)
  3/3 - add data path operations (copy, submit, completion)

Changes in v3:
 - Address review comments from David Marchand on patch 1/3 and 2/3:
     * Track the descriptor-ring memzone in the queue structure and
       free it directly in dev_close() instead of re-resolving it by
       name (also fixes the potential leak noted on probe/unplug).
     * Drop the unused back-references (ae4dma->dmadev, ae4dma->pci);
       pass the rte_pci_device to ae4dma_add_queue() instead.
     * Stop setting dev->device.driver in probe(); EAL sets it on
       probe() success since commit f282771a04ef.
     * Remove the redundant NULL name check in the single-caller
       helper, the needless NULL initialisers and the __func__ in the
       error log (already added by the log macro), and the NULL test
       before rte_memzone_free().
     * Remove the info->dev_name assignment (set by rte_dma_info_get()).
     * Replace the unsigned-long low32_value()/high32_value() helpers
       with lower_32_bits()/upper_32_bits() and drop the redundant
       index casts.
     * ae4dma_hw_defs.h: include <stdint.h>, drop the C++ guards and
       add the missing trailing enum comma; ae4dma_internal.h: convert
       doxygen comments to plain comments.
     * Remove trivial "what" comments throughout.
 - Reorder the .mailmap entry into alphabetical position.
 - Naming/architecture (16 dmadevs per PCI function, "<bdf>-chX")
   acknowledged as acceptable by Chengwen Feng and Bruce Richardson;
   kept unchanged.

Changes in v2:
 - Split the monolithic v1 patch into three logical patches
   (introduce / control path / data path), mirroring the
   structure used by drivers/dma/hisi_acc.
 - Fix checkpatches.sh warnings in ae4dma_internal.h (RTE_LOG_LINE_PREFIX,
   C99 __VA_ARGS__, __rte_cache_aligned placement).

v1: https://patches.dpdk.org/project/dpdk/patch/20260518181856.1228373-1-raghavendra.ningoji@amd.com/
v2: https://patches.dpdk.org/project/dpdk/patch/20260525184244.1758825-1-raghavendra.ningoji@amd.com/

Raghavendra Ningoji (3):
  dma/ae4dma: introduce AMD AE4DMA DMA PMD
  dma/ae4dma: add control path operations
  dma/ae4dma: add data path operations

 .mailmap                               |   1 +
 MAINTAINERS                            |   5 +
 doc/guides/dmadevs/ae4dma.rst          |  75 +++
 doc/guides/dmadevs/index.rst           |   1 +
 doc/guides/rel_notes/release_26_07.rst |   7 +
 drivers/dma/ae4dma/ae4dma_dmadev.c     | 718 +++++++++++++++++++++++++
 drivers/dma/ae4dma/ae4dma_hw_defs.h    | 154 ++++++
 drivers/dma/ae4dma/ae4dma_internal.h   |  97 ++++
 drivers/dma/ae4dma/meson.build         |   7 +
 drivers/dma/meson.build                |   1 +
 usertools/dpdk-devbind.py              |   5 +-
 11 files changed, 1070 insertions(+), 1 deletion(-)
 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


base-commit: f724d1c0d1c1636b9c171c34db3f17c3defaa2f3
-- 
2.34.1



More information about the dev mailing list