[PATCH RFT 0/5] dmaengine: dw-edma: support dynamtic add link entry during dma engine running
Frank Li
Frank.Li at nxp.com
Fri Jan 9 12:13:24 PST 2026
Patch depend on
https://lore.kernel.org/imx/20260109-edma_ll-v2-0-5c0b27b2c664@nxp.com/T/#t
Only test eDMA, have not tested HDMA.
Corn case have not tested, such as pause/resume transfer.
Before
Rnd read, 4KB, QD=1, 1 job : IOPS=6780, BW=26.5MiB/s (27.8MB/s)
Rnd read, 4KB, QD=32, 1 job : IOPS=28.6k, BW=112MiB/s (117MB/s)
Rnd read, 4KB, QD=32, 4 jobs: IOPS=33.4k, BW=130MiB/s (137MB/s)
Rnd read, 128KB, QD=1, 1 job : IOPS=1188, BW=149MiB/s (156MB/s)
Rnd read, 128KB, QD=32, 1 job : IOPS=1440, BW=180MiB/s (189MB/s)
Rnd read, 128KB, QD=32, 4 jobs: IOPS=1282, BW=160MiB/s (168MB/s)
Rnd read, 512KB, QD=1, 1 job : IOPS=254, BW=127MiB/s (134MB/s)
Rnd read, 512KB, QD=32, 1 job : IOPS=354, BW=177MiB/s (186MB/s)
Rnd read, 512KB, QD=32, 4 jobs: IOPS=388, BW=194MiB/s (204MB/s)
Rnd write, 4KB, QD=1, 1 job : IOPS=6282, BW=24.5MiB/s (25.7MB/s)
Rnd write, 4KB, QD=32, 1 job : IOPS=24.9k, BW=97.5MiB/s (102MB/s)
Rnd write, 4KB, QD=32, 4 jobs: IOPS=27.4k, BW=107MiB/s (112MB/s)
Rnd write, 128KB, QD=1, 1 job : IOPS=1098, BW=137MiB/s (144MB/s)
Rnd write, 128KB, QD=32, 1 job : IOPS=1195, BW=149MiB/s (157MB/s)
Rnd write, 128KB, QD=32, 4 jobs: IOPS=1120, BW=140MiB/s (147MB/s)
Seq read, 128KB, QD=1, 1 job : IOPS=936, BW=117MiB/s (123MB/s)
Seq read, 128KB, QD=32, 1 job : IOPS=1218, BW=152MiB/s (160MB/s)
Seq read, 512KB, QD=1, 1 job : IOPS=301, BW=151MiB/s (158MB/s)
Seq read, 512KB, QD=32, 1 job : IOPS=360, BW=180MiB/s (189MB/s)
Seq read, 1MB, QD=32, 1 job : IOPS=193, BW=194MiB/s (203MB/s)
Seq write, 128KB, QD=1, 1 job : IOPS=796, BW=99.5MiB/s (104MB/s)
Seq write, 128KB, QD=32, 1 job : IOPS=1019, BW=127MiB/s (134MB/s)
Seq write, 512KB, QD=1, 1 job : IOPS=213, BW=107MiB/s (112MB/s)
Seq write, 512KB, QD=32, 1 job : IOPS=273, BW=137MiB/s (143MB/s)
Seq write, 1MB, QD=32, 1 job : IOPS=168, BW=168MiB/s (177MB/s)
Rnd rdwr, 4K..1MB, QD=8, 4 jobs: IOPS=255, BW=128MiB/s (134MB/s)
IOPS=266, BW=135MiB/s (141MB/s)
After
Rnd read, 4KB, QD=1, 1 job : IOPS=6148, BW=24.0MiB/s (25.2MB/s)
Rnd read, 4KB, QD=32, 1 job : IOPS=29.4k, BW=115MiB/s (121MB/s)
Rnd read, 4KB, QD=32, 4 jobs: IOPS=38.8k, BW=151MiB/s (159MB/s)
Rnd read, 128KB, QD=1, 1 job : IOPS=859, BW=107MiB/s (113MB/s)
Rnd read, 128KB, QD=32, 1 job : IOPS=1504, BW=188MiB/s (197MB/s)
Rnd read, 128KB, QD=32, 4 jobs: IOPS=1531, BW=191MiB/s (201MB/s)
Rnd read, 512KB, QD=1, 1 job : IOPS=238, BW=119MiB/s (125MB/s)
Rnd read, 512KB, QD=32, 1 job : IOPS=390, BW=195MiB/s (205MB/s)
Rnd read, 512KB, QD=32, 4 jobs: IOPS=404, BW=202MiB/s (212MB/s)
Rnd write, 4KB, QD=1, 1 job : IOPS=5801, BW=22.7MiB/s (23.8MB/s)
Rnd write, 4KB, QD=32, 1 job : IOPS=24.7k, BW=96.6MiB/s (101MB/s)
Rnd write, 4KB, QD=32, 4 jobs: IOPS=32.7k, BW=128MiB/s (134MB/s)
Rnd write, 128KB, QD=1, 1 job : IOPS=744, BW=93.1MiB/s (97.6MB/s)
Rnd write, 128KB, QD=32, 1 job : IOPS=1278, BW=160MiB/s (168MB/s)
Rnd write, 128KB, QD=32, 4 jobs: IOPS=1278, BW=160MiB/s (168MB/s)
Seq read, 128KB, QD=1, 1 job : IOPS=853, BW=107MiB/s (112MB/s)
Seq read, 128KB, QD=32, 1 job : IOPS=1511, BW=189MiB/s (198MB/s)
Seq read, 512KB, QD=1, 1 job : IOPS=240, BW=120MiB/s (126MB/s)
Seq read, 512KB, QD=32, 1 job : IOPS=386, BW=193MiB/s (203MB/s)
Seq read, 1MB, QD=32, 1 job : IOPS=200, BW=201MiB/s (211MB/s)
Seq write, 128KB, QD=1, 1 job : IOPS=749, BW=93.7MiB/s (98.3MB/s)
Seq write, 128KB, QD=32, 1 job : IOPS=1266, BW=158MiB/s (166MB/s)
Seq write, 512KB, QD=1, 1 job : IOPS=198, BW=99.0MiB/s (104MB/s)
Seq write, 512KB, QD=32, 1 job : IOPS=352, BW=176MiB/s (185MB/s)
Seq write, 1MB, QD=32, 1 job : IOPS=184, BW=184MiB/s (193MB/s)
Rnd rdwr, 4K..1MB, QD=8, 4 jobs: IOPS=287, BW=145MiB/s (152MB/s)
IOPS=299, BW=149MiB/s (156MB/s)
Signed-off-by: Frank Li <Frank.Li at nxp.com>
---
Frank Li (5):
dmaengine: dw-edma: Add dw_edma_core_ll_cur_idx() to get completed link entry pos
dmaengine: dw-edma: Move dw_hdma_set_callback_result() up
dmaengine: dw-edma: Make DMA link list work as a circular buffer
dmaengine: dw-edma: Dynamitc append new request during dmaengine running
dmaengine: dw-edma: Add trace support
drivers/dma/dw-edma/Makefile | 3 +
drivers/dma/dw-edma/dw-edma-core.c | 215 ++++++++++++++++++++++++----------
drivers/dma/dw-edma/dw-edma-core.h | 42 ++++++-
drivers/dma/dw-edma/dw-edma-trace.c | 4 +
drivers/dma/dw-edma/dw-edma-trace.h | 150 ++++++++++++++++++++++++
drivers/dma/dw-edma/dw-edma-v0-core.c | 39 +++++-
drivers/dma/dw-edma/dw-hdma-v0-core.c | 17 +++
7 files changed, 409 insertions(+), 61 deletions(-)
---
base-commit: 020f6d8442f35105660a29d0d236d3f8650c8142
change-id: 20251212-edma_dymatic-a57843ff0dfe
Best regards,
--
Frank Li <Frank.Li at nxp.com>
More information about the Linux-nvme
mailing list