From: Vinod Koul <vkoul@kernel.org>
To: Koichiro Den <den@valinux.co.jp>
Cc: Manivannan Sadhasivam <mani@kernel.org>,
Niklas Cassel <cassel@kernel.org>, Frank Li <Frank.Li@kernel.org>,
dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 00/17] dmaengine: dw-edma: Support dynamic LL appends
Date: Fri, 26 Jun 2026 10:15:38 +0200 [thread overview]
Message-ID: <aj41KvHARdenWnk8@vaman> (raw)
In-Reply-To: <wmwhekjfeqomzehfyqczzxel3knkxlfgfyrifeqpcqpqq6viwq@abwyzxaibkio>
On 23-06-26, 14:56, Koichiro Den wrote:
> Hi Niklas, Mani,
>
> On Mon, Jun 22, 2026 at 04:18:01PM +0200, Niklas Cassel wrote:
> > On Mon, Jun 22, 2026 at 04:38:49PM +0900, Koichiro Den wrote:
> > > On Tue, Jun 16, 2026 at 12:40:54AM +0900, Koichiro Den wrote:
> > >
> > > Hi Frank, Niklas, all,
> > >
> > > I am looking for a good way to stress PCIe controller DMA engines, such as
> > > eDMA/HDMA, and measure their upper-bound throughput.
> > >
> > > nvmet_pci_epf is useful since it is a real in-tree consumer, but it is not a
> > > very direct benchmark for the DMA engine itself. So I wonder if
> > > pci_endpoint_test would be a reasonable place to add an opt-in DMA performance
> > > mode.
> > >
> > > One possible option I have in mind is:
> > >
> > > - a new fixture, pci_ep_dma_perf
> > > - opt-in execution, for example with PCITEST_PERF=1 environment variable
> > > - a few variants such as single and sg, possibly with a few knobs:
> > > - PCITEST_PERF_NUM_WORKERS, to use multiple EP-side workers
> > > - PCITEST_PERF_NUM_CHANS, to use multiple DMA channels
> > > - perhaps other knobs for SG entry size, number of entries, etc.
> > > - the new tests: READ_PERF_TEST and WRITE_PERF_TEST
> `--- (A)
>
> > >
> > > For the other possible places I could think of, this still seems to fit best in
> > > pci_endpoint_test. For example, extending dmatest does not seem to fit well
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > because this needs both EP and RC side setup. A separate kselftest also feels
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> `--- (B)
>
> > > like it would duplicate a lot of pci_endpoint_test code. That said, I might be
> > > missing something.
> > >
> > > What do you think? Any thoughts or suggestions would be much appreciated.
> >
> > There are two existing (out-of-tree) tests for eDMA that I know of:
> >
> > 1)
> > https://patchwork.kernel.org/project/linux-pci/patch/cc195ac53839b318764c8f6502002cd6d933a923.1547230339.git.gustavo.pimentel@synopsys.com/
> >
> > But as you can see, the comment was to use dmatest instead.
> > AFAICT, dmatest currently only supports DMA_MEMCPY, which, by hardware design,
> > cannot be supported by DWC eDMA HW (since it only allows remote to local, or
> > local to remote, and remote has to be a PCI address, while local is local
> > physical address).
> >
> > Perhaps it is possible to add DMA_SLAVE support to dmatest.
>
> Thanks for the pointers, Niklas.
>
> The first one looks like a host-side test on top of dw-edma-pcie, where the
> RC-side driver programs the eDMA through BARs. That is useful, but it is a bit
> different from what I had in mind here.
>
> What I am looking for is closer to pci_endpoint_test READ_TEST/WRITE_TEST, but
> with a perf/stress mode: the RC side provides the buffers, while EP Linux
> drives the EP-local DMA engine and reports the throughput.
>
> I agree that, if we extend dmatest with DMA_SLAVE support, then Vinod should be
> involved early. In theory that could cover this too, if dmatest also had a way
> to set up RC-side buffers and pass their PCI addresses to the EP side. That is
> the part that makes me unsure dmatest is the right fit here (see (B) above).
> Before going too far down that path, I wanted to check whether the PCI endpoint
> test stack would be an acceptable home for this EP-driven case.
>
> >
> >
> > 2)
> > https://github.com/rockchip-linux/kernel/blob/develop-6.1/drivers/pci/controller/dwc/pcie-dw-dmatest.c
> > https://github.com/rockchip-linux/kernel/blob/develop-6.1/drivers/pci/controller/rockchip-pcie-dma.h
> >
> >
> > Anyway, since Vinod is the maintainer, it is probably him you need to talk
> > to come up with a way forward. To not waste your time, I would talk to him
> > before you spend a lot of time implementing something :)
>
> Yes, that makes sense. I will keep Vinod in the loop. :)
Thanks, I am not sure it makes sense for dmatest to support slave
transfers. We need a hardware signalling for these dma transfers to
work and data is pushed/pulled from hardware.
I know it can be made to work for some kind of slave transfers like
possibly pcie etc and(there was another attempt to add a
driver for slave tests) but it is not really right as it would confuse
folks who might want to test it for slave transfers which typically cant
be done
So I am not is support of supporting this
--
~Vinod
prev parent reply other threads:[~2026-06-26 8:15 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 15:40 [PATCH 00/17] dmaengine: dw-edma: Support dynamic LL appends Koichiro Den
2026-06-15 15:40 ` [PATCH 01/17] dmaengine: dw-edma: Fix residue burst index in tx_status() Koichiro Den
2026-06-15 18:29 ` Frank Li
2026-06-15 15:40 ` [PATCH 02/17] dmaengine: dw-edma: Fix HDMA channel status register access Koichiro Den
2026-06-15 18:31 ` Frank Li
2026-06-15 15:40 ` [PATCH 03/17] dmaengine: dw-edma: Terminate STOP requests without callbacks Koichiro Den
2026-06-15 18:37 ` Frank Li
2026-06-16 5:27 ` Koichiro Den
2026-06-15 15:40 ` [PATCH 04/17] dmaengine: dw-edma: Clean up vchan descriptors on termination Koichiro Den
2026-06-15 18:43 ` Frank Li
2026-06-16 6:24 ` Koichiro Den
2026-06-15 15:40 ` [PATCH 05/17] dmaengine: dw-edma: Serialize channel state checks Koichiro Den
2026-06-15 18:47 ` Frank Li
2026-06-15 15:41 ` [PATCH 06/17] dmaengine: dw-edma: Add dw_edma_core_ll_cur_idx() to get current LL entry index Koichiro Den
2026-06-15 15:41 ` [PATCH 07/17] dmaengine: dw-edma: Move dw_hdma_set_callback_result() up Koichiro Den
2026-06-15 15:41 ` [PATCH 08/17] dmaengine: dw-edma: Make DMA link list work as a circular buffer Koichiro Den
2026-06-15 15:41 ` [PATCH 09/17] dmaengine: dw-edma: Add LL interrupt placement policy Koichiro Den
2026-06-15 15:41 ` [PATCH 10/17] dmaengine: dw-edma: Reclaim issued descriptors from LL progress Koichiro Den
2026-06-15 15:41 ` [PATCH 11/17] dmaengine: dw-edma: Use HDMA watermarks as progress events Koichiro Den
2026-06-15 15:41 ` [PATCH 12/17] dmaengine: dw-edma: Clear LL data entries on reset Koichiro Den
2026-06-15 15:41 ` [PATCH 13/17] dmaengine: dw-edma: Dispatch DONE interrupts by channel request Koichiro Den
2026-06-15 15:41 ` [PATCH 14/17] dmaengine: dw-edma: Reset LL state after terminate and abort Koichiro Den
2026-06-15 15:41 ` [PATCH 15/17] dmaengine: dw-edma: Dynamically append requests while running Koichiro Den
2026-06-15 15:41 ` [PATCH 16/17] dmaengine: dw-edma: Recover stopped HDMA from tx_status Koichiro Den
2026-06-15 15:41 ` [PATCH 17/17] dmaengine: dw-edma: Add trace support Koichiro Den
2026-06-16 9:13 ` [PATCH 00/17] dmaengine: dw-edma: Support dynamic LL appends Niklas Cassel
2026-06-17 0:48 ` Koichiro Den
2026-06-22 7:38 ` Koichiro Den
2026-06-22 14:18 ` Niklas Cassel
2026-06-23 5:56 ` Koichiro Den
2026-06-26 8:15 ` Vinod Koul [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aj41KvHARdenWnk8@vaman \
--to=vkoul@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=cassel@kernel.org \
--cc=den@valinux.co.jp \
--cc=dmaengine@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mani@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.