Message ID | 20220126195043.28376-1-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive) |
---|---|
Headers | show |
Series | PCIe EPF support for internal DMAC handling and driver update for R-Car PCIe EP to support DMAC | expand |
Hi Prabhakar, > [0] https://urldefense.com/v3/__https://www.spinics.net/lists/linux- > pci/msg92385.html__;!!PeEy7nZLVv0!yP0WqYs165riCjWRhZprjgMVVLfQLtkkPfv_ > R7XCoqkqgMsOyor90EZp0YAdxu0$ Can your streaming DMA test case(-d) pass if you use EP's internal DMAC instead of external DMAC? Regards, Li ********************************************************************** This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you.
Hi Chen-san, On Wed, Feb 9, 2022 at 4:48 AM Li Chen <lchen@ambarella.com> wrote: > > Hi Prabhakar, > > > [0] https://urldefense.com/v3/__https://www.spinics.net/lists/linux- > > pci/msg92385.html__;!!PeEy7nZLVv0!yP0WqYs165riCjWRhZprjgMVVLfQLtkkPfv_ > > R7XCoqkqgMsOyor90EZp0YAdxu0$ > > Can your streaming DMA test case(-d) pass if you use EP's internal DMAC instead of external DMAC? > Sorry I don't quite get you here. This patch series adds support for EP to transfer using internal DMAC as no external DMAC is supported, so when "-d" option is passed and if EP has registered it has internal dmac it will use the same and run the pcitest. Cheers, Prabhakar > Regards, > Li > > ********************************************************************** > This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you.
Hi Prabhakar, > -----Original Message----- > From: Lad, Prabhakar [mailto:prabhakar.csengg@gmail.com] > Sent: Wednesday, February 9, 2022 4:53 PM > To: Li Chen > Cc: Lad Prabhakar; Kishon Vijay Abraham I; Bjorn Helgaas; Lorenzo Pieralisi; > Krzysztof Wilczyński; Arnd Bergmann; Greg Kroah-Hartman; Marek Vasut; > Yoshihiro Shimoda; Rob Herring; linux-pci@vger.kernel.org; linux-renesas- > soc@vger.kernel.org; linux-kernel@vger.kernel.org; Biju Das > Subject: Re: [EXT] [RFC PATCH 0/5] PCIe EPF support for internal DMAC handling > and driver update for R-Car PCIe EP to support DMAC > > Hi Chen-san, > > On Wed, Feb 9, 2022 at 4:48 AM Li Chen <lchen@ambarella.com> wrote: > > > > Hi Prabhakar, > > > > > [0] https://urldefense.com/v3/__https://www.spinics.net/lists/linux- > > > > pci/msg92385.html__;!!PeEy7nZLVv0!yP0WqYs165riCjWRhZprjgMVVLfQLtkkPfv_ > > > R7XCoqkqgMsOyor90EZp0YAdxu0$ > > > > Can your streaming DMA test case(-d) pass if you use EP's internal DMAC > instead of external DMAC? > > > Sorry I don't quite get you here. > > This patch series adds support for EP to transfer using internal DMAC > as no external DMAC is supported, so when "-d" option is passed and if > EP has registered it has internal dmac it will use the same and run > the pcitest. Ok, in my case, read/write via external DMAC always get incorrect data, but read via internal DMAC is correct. Maybe this is our RTL's issue. Regards, Li ********************************************************************** This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you.
On Thu, Feb 10, 2022 at 05:54:26AM +0000, Li Chen wrote: > ********************************************************************** > This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you. This email footer is not compatible with Linux kernel development, sorry. Please get your company to remove it so that you can continue to participate.
Hi, On Wed, Jan 26, 2022 at 07:50:38PM +0000, Lad Prabhakar wrote: > Hi All, > > The current PCIe EPF framework supports DMA data transfers using external > DMA only, this patch series aims to add support for platforms supporting > internal DMAC on PCIe for data transfers. > > R-Car PCIe supports internal DMAC to transfer data between Internal Bus to > PCI Express and vice versa. Last patch fills up the required flags and ops > to support internal DMAC. > > Patches 1-3 are for PCIe EPF core to support internal DMAC handling, patch > 4/5 is to fix test cases based on the conversation [1]. > This looks similar to the Synopsys eDMA IP [1] that goes with the Synopsys PCIe endpoint IP. Why can't you represent it as a dmaengine driver and use the existing DMA support? Thanks, Mani [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/dw-edma > Patches are based on top of [1] next branch. > > [0] https://www.spinics.net/lists/linux-pci/msg92385.html > [1] https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git > > Cheers, > Prabhakar > > Lad Prabhakar (5): > PCI: endpoint: Add ops and flag to support internal DMAC > PCI: endpoint: Add support to data transfer using internal dmac > misc: pci_endpoint_test: Add driver data for Renesas RZ/G2{EHMN} > misc: pci_endpoint_test: Add support to pass flags for buffer > allocation > PCI: rcar-ep: Add support for DMAC > > drivers/misc/pci_endpoint_test.c | 56 ++++- > drivers/pci/controller/pcie-rcar-ep.c | 227 ++++++++++++++++++ > drivers/pci/controller/pcie-rcar.h | 23 ++ > drivers/pci/endpoint/functions/pci-epf-test.c | 184 ++++++++++---- > drivers/pci/endpoint/pci-epf-core.c | 32 +++ > include/linux/pci-epc.h | 8 + > include/linux/pci-epf.h | 7 + > 7 files changed, 483 insertions(+), 54 deletions(-) > > -- > 2.25.1 >
Hi, On Thu, Feb 10, 2022 at 8:40 AM Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> wrote: > > Hi, > > On Wed, Jan 26, 2022 at 07:50:38PM +0000, Lad Prabhakar wrote: > > Hi All, > > > > The current PCIe EPF framework supports DMA data transfers using external > > DMA only, this patch series aims to add support for platforms supporting > > internal DMAC on PCIe for data transfers. > > > > R-Car PCIe supports internal DMAC to transfer data between Internal Bus to > > PCI Express and vice versa. Last patch fills up the required flags and ops > > to support internal DMAC. > > > > Patches 1-3 are for PCIe EPF core to support internal DMAC handling, patch > > 4/5 is to fix test cases based on the conversation [1]. > > > > This looks similar to the Synopsys eDMA IP [1] that goes with the Synopsys PCIe > endpoint IP. Why can't you represent it as a dmaengine driver and use the > existing DMA support? > Let me have a look. Could you please share a link to the Synopsys PCIe endpoint HW manual (the driver doesn't have a binding doc). Cheers, Prabhakar > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/dw-edma > > > Patches are based on top of [1] next branch. > > > > [0] https://www.spinics.net/lists/linux-pci/msg92385.html > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git > > > > Cheers, > > Prabhakar > > > > Lad Prabhakar (5): > > PCI: endpoint: Add ops and flag to support internal DMAC > > PCI: endpoint: Add support to data transfer using internal dmac > > misc: pci_endpoint_test: Add driver data for Renesas RZ/G2{EHMN} > > misc: pci_endpoint_test: Add support to pass flags for buffer > > allocation > > PCI: rcar-ep: Add support for DMAC > > > > drivers/misc/pci_endpoint_test.c | 56 ++++- > > drivers/pci/controller/pcie-rcar-ep.c | 227 ++++++++++++++++++ > > drivers/pci/controller/pcie-rcar.h | 23 ++ > > drivers/pci/endpoint/functions/pci-epf-test.c | 184 ++++++++++---- > > drivers/pci/endpoint/pci-epf-core.c | 32 +++ > > include/linux/pci-epc.h | 8 + > > include/linux/pci-epf.h | 7 + > > 7 files changed, 483 insertions(+), 54 deletions(-) > > > > -- > > 2.25.1 > >
On Thu, Feb 10, 2022 at 09:24:19AM +0000, Lad, Prabhakar wrote: > Hi, > > On Thu, Feb 10, 2022 at 8:40 AM Manivannan Sadhasivam > <manivannan.sadhasivam@linaro.org> wrote: > > > > Hi, > > > > On Wed, Jan 26, 2022 at 07:50:38PM +0000, Lad Prabhakar wrote: > > > Hi All, > > > > > > The current PCIe EPF framework supports DMA data transfers using external > > > DMA only, this patch series aims to add support for platforms supporting > > > internal DMAC on PCIe for data transfers. > > > > > > R-Car PCIe supports internal DMAC to transfer data between Internal Bus to > > > PCI Express and vice versa. Last patch fills up the required flags and ops > > > to support internal DMAC. > > > > > > Patches 1-3 are for PCIe EPF core to support internal DMAC handling, patch > > > 4/5 is to fix test cases based on the conversation [1]. > > > > > > > This looks similar to the Synopsys eDMA IP [1] that goes with the Synopsys PCIe > > endpoint IP. Why can't you represent it as a dmaengine driver and use the > > existing DMA support? > > > Let me have a look. Could you please share a link to the Synopsys PCIe > endpoint HW manual (the driver doesn't have a binding doc). > I don't think the PCIe reference manual is available publicly. And you are right that the driver is not tied to devicetree. The reason is, it gets probed using the PCI ID of the EP and all the resources are defined statically in the driver itself. Thanks, Mani > Cheers, > Prabhakar > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/dw-edma > > > > > Patches are based on top of [1] next branch. > > > > > > [0] https://www.spinics.net/lists/linux-pci/msg92385.html > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git > > > > > > Cheers, > > > Prabhakar > > > > > > Lad Prabhakar (5): > > > PCI: endpoint: Add ops and flag to support internal DMAC > > > PCI: endpoint: Add support to data transfer using internal dmac > > > misc: pci_endpoint_test: Add driver data for Renesas RZ/G2{EHMN} > > > misc: pci_endpoint_test: Add support to pass flags for buffer > > > allocation > > > PCI: rcar-ep: Add support for DMAC > > > > > > drivers/misc/pci_endpoint_test.c | 56 ++++- > > > drivers/pci/controller/pcie-rcar-ep.c | 227 ++++++++++++++++++ > > > drivers/pci/controller/pcie-rcar.h | 23 ++ > > > drivers/pci/endpoint/functions/pci-epf-test.c | 184 ++++++++++---- > > > drivers/pci/endpoint/pci-epf-core.c | 32 +++ > > > include/linux/pci-epc.h | 8 + > > > include/linux/pci-epf.h | 7 + > > > 7 files changed, 483 insertions(+), 54 deletions(-) > > > > > > -- > > > 2.25.1 > > >
On Thu, Feb 10, 2022 at 10:50 AM Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> wrote: > > On Thu, Feb 10, 2022 at 09:24:19AM +0000, Lad, Prabhakar wrote: > > Hi, > > > > On Thu, Feb 10, 2022 at 8:40 AM Manivannan Sadhasivam > > <manivannan.sadhasivam@linaro.org> wrote: > > > > > > Hi, > > > > > > On Wed, Jan 26, 2022 at 07:50:38PM +0000, Lad Prabhakar wrote: > > > > Hi All, > > > > > > > > The current PCIe EPF framework supports DMA data transfers using external > > > > DMA only, this patch series aims to add support for platforms supporting > > > > internal DMAC on PCIe for data transfers. > > > > > > > > R-Car PCIe supports internal DMAC to transfer data between Internal Bus to > > > > PCI Express and vice versa. Last patch fills up the required flags and ops > > > > to support internal DMAC. > > > > > > > > Patches 1-3 are for PCIe EPF core to support internal DMAC handling, patch > > > > 4/5 is to fix test cases based on the conversation [1]. > > > > > > > > > > This looks similar to the Synopsys eDMA IP [1] that goes with the Synopsys PCIe > > > endpoint IP. Why can't you represent it as a dmaengine driver and use the > > > existing DMA support? > > > > > Let me have a look. Could you please share a link to the Synopsys PCIe > > endpoint HW manual (the driver doesn't have a binding doc). > > > > I don't think the PCIe reference manual is available publicly. And you are right > that the driver is not tied to devicetree. The reason is, it gets probed using > the PCI ID of the EP and all the resources are defined statically in the driver > itself. > In R-Car PCIe the internal dmac is part of the PCIe block itself [0] and not a separate block. I don't see any drivers implementing the internal dmac drivers as a DMA engine driver. For example the Renesas SDHI driver has internal dmac too, this is handled in the SDHI driver itself [1] and not implemented as DMA engine driver. Let me know if my understanding is wrong here. [0] https://elixir.bootlin.com/linux/v5.17-rc3/source/Documentation/devicetree/bindings/pci/rcar-pci-ep.yaml#L76 [1] https://elixir.bootlin.com/linux/v5.17-rc3/source/drivers/mmc/host/renesas_sdhi_internal_dmac.c Cheers, Prabhakar > Thanks, > Mani > > > Cheers, > > Prabhakar > > > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/dw-edma > > > > > > > Patches are based on top of [1] next branch. > > > > > > > > [0] https://www.spinics.net/lists/linux-pci/msg92385.html > > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git > > > > > > > > Cheers, > > > > Prabhakar > > > > > > > > Lad Prabhakar (5): > > > > PCI: endpoint: Add ops and flag to support internal DMAC > > > > PCI: endpoint: Add support to data transfer using internal dmac > > > > misc: pci_endpoint_test: Add driver data for Renesas RZ/G2{EHMN} > > > > misc: pci_endpoint_test: Add support to pass flags for buffer > > > > allocation > > > > PCI: rcar-ep: Add support for DMAC > > > > > > > > drivers/misc/pci_endpoint_test.c | 56 ++++- > > > > drivers/pci/controller/pcie-rcar-ep.c | 227 ++++++++++++++++++ > > > > drivers/pci/controller/pcie-rcar.h | 23 ++ > > > > drivers/pci/endpoint/functions/pci-epf-test.c | 184 ++++++++++---- > > > > drivers/pci/endpoint/pci-epf-core.c | 32 +++ > > > > include/linux/pci-epc.h | 8 + > > > > include/linux/pci-epf.h | 7 + > > > > 7 files changed, 483 insertions(+), 54 deletions(-) > > > > > > > > -- > > > > 2.25.1 > > > >
On Thu, Feb 10, 2022 at 11:05:45AM +0000, Lad, Prabhakar wrote: > On Thu, Feb 10, 2022 at 10:50 AM Manivannan Sadhasivam > <manivannan.sadhasivam@linaro.org> wrote: > > > > On Thu, Feb 10, 2022 at 09:24:19AM +0000, Lad, Prabhakar wrote: > > > Hi, > > > > > > On Thu, Feb 10, 2022 at 8:40 AM Manivannan Sadhasivam > > > <manivannan.sadhasivam@linaro.org> wrote: > > > > > > > > Hi, > > > > > > > > On Wed, Jan 26, 2022 at 07:50:38PM +0000, Lad Prabhakar wrote: > > > > > Hi All, > > > > > > > > > > The current PCIe EPF framework supports DMA data transfers using external > > > > > DMA only, this patch series aims to add support for platforms supporting > > > > > internal DMAC on PCIe for data transfers. > > > > > > > > > > R-Car PCIe supports internal DMAC to transfer data between Internal Bus to > > > > > PCI Express and vice versa. Last patch fills up the required flags and ops > > > > > to support internal DMAC. > > > > > > > > > > Patches 1-3 are for PCIe EPF core to support internal DMAC handling, patch > > > > > 4/5 is to fix test cases based on the conversation [1]. > > > > > > > > > > > > > This looks similar to the Synopsys eDMA IP [1] that goes with the Synopsys PCIe > > > > endpoint IP. Why can't you represent it as a dmaengine driver and use the > > > > existing DMA support? > > > > > > > Let me have a look. Could you please share a link to the Synopsys PCIe > > > endpoint HW manual (the driver doesn't have a binding doc). > > > > > > > I don't think the PCIe reference manual is available publicly. And you are right > > that the driver is not tied to devicetree. The reason is, it gets probed using > > the PCI ID of the EP and all the resources are defined statically in the driver > > itself. > > > In R-Car PCIe the internal dmac is part of the PCIe block itself [0] > and not a separate block. I don't see any drivers implementing the > internal dmac drivers as a DMA engine driver. For example the Renesas > SDHI driver has internal dmac too, this is handled in the SDHI driver > itself [1] and not implemented as DMA engine driver. Let me know if my > understanding is wrong here. > Okay, thanks for the clarification. I thought that if the IP is same, we could implement it as a standalone DMA engine driver, but looks like it is customized. So I guess it is reasonable to have an internal implementation. Thanks, Mani > [0] https://elixir.bootlin.com/linux/v5.17-rc3/source/Documentation/devicetree/bindings/pci/rcar-pci-ep.yaml#L76 > [1] https://elixir.bootlin.com/linux/v5.17-rc3/source/drivers/mmc/host/renesas_sdhi_internal_dmac.c > > Cheers, > Prabhakar > > > Thanks, > > Mani > > > > > Cheers, > > > Prabhakar > > > > > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/dma/dw-edma > > > > > > > > > Patches are based on top of [1] next branch. > > > > > > > > > > [0] https://www.spinics.net/lists/linux-pci/msg92385.html > > > > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git > > > > > > > > > > Cheers, > > > > > Prabhakar > > > > > > > > > > Lad Prabhakar (5): > > > > > PCI: endpoint: Add ops and flag to support internal DMAC > > > > > PCI: endpoint: Add support to data transfer using internal dmac > > > > > misc: pci_endpoint_test: Add driver data for Renesas RZ/G2{EHMN} > > > > > misc: pci_endpoint_test: Add support to pass flags for buffer > > > > > allocation > > > > > PCI: rcar-ep: Add support for DMAC > > > > > > > > > > drivers/misc/pci_endpoint_test.c | 56 ++++- > > > > > drivers/pci/controller/pcie-rcar-ep.c | 227 ++++++++++++++++++ > > > > > drivers/pci/controller/pcie-rcar.h | 23 ++ > > > > > drivers/pci/endpoint/functions/pci-epf-test.c | 184 ++++++++++---- > > > > > drivers/pci/endpoint/pci-epf-core.c | 32 +++ > > > > > include/linux/pci-epc.h | 8 + > > > > > include/linux/pci-epf.h | 7 + > > > > > 7 files changed, 483 insertions(+), 54 deletions(-) > > > > > > > > > > -- > > > > > 2.25.1 > > > > >