[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260109-edma_dymatic-v1-0-9a98c9c98536@nxp.com>
Date: Fri, 09 Jan 2026 15:13:24 -0500
From: Frank Li <Frank.Li@....com>
To: Manivannan Sadhasivam <mani@...nel.org>, Vinod Koul <vkoul@...nel.org>,
Gustavo Pimentel <Gustavo.Pimentel@...opsys.com>,
Kees Cook <kees@...nel.org>, "Gustavo A. R. Silva" <gustavoars@...nel.org>,
Manivannan Sadhasivam <mani@...nel.org>,
Krzysztof WilczyĆski <kwilczynski@...nel.org>,
Kishon Vijay Abraham I <kishon@...nel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>, Christoph Hellwig <hch@....de>,
Niklas Cassel <cassel@...nel.org>
Cc: dmaengine@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-hardening@...r.kernel.org, linux-pci@...r.kernel.org,
linux-nvme@...ts.infradead.org, Damien Le Moal <dlemoal@...nel.org>,
imx@...ts.linux.dev, Frank Li <Frank.Li@....com>
Subject: [PATCH RFT 0/5] dmaengine: dw-edma: support dynamtic add link
entry during dma engine running
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@....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@....com>
Powered by blists - more mailing lists