Patch depend on https://lore.kernel.org/imx/[email protected]/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 <[email protected]> --- 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 <[email protected]>
