Re: [PATCH v6 0/6] PCI: endpoint: Expose endpoint DMA resources (part 2/3)
From: Koichiro Den
Date: Sat Aug 08 2026 - 13:05:40 EST
On Fri, Aug 07, 2026 at 04:43:40PM -0400, Frank Li wrote:
> On Tue, Aug 04, 2026 at 12:38:49PM +0900, Koichiro Den wrote:
> > Hi,
> >
> > This is v6, part 2 of three series for PCI endpoint DMA.
> >
> > The three series are:
> >
> > * part 1: dmaengine: dw-edma: Prepare for PCI EP DMA
> > * part 2: PCI: endpoint: Expose endpoint DMA resources
> > * part 3: PCI: endpoint: Add PCI DMA endpoint function
>
> This part only 3 patch, You can merge to part2. It will be easy to know
> overall picture.
Yeah, I agree. Previously, part 2 only included patches for PCI EP, but
after Sashiko's feedback about bisectability issue, I moved one dw-edma patch
into part 2 (since v4). So now there is no point splitting part 2 and 3 any
more. I just kept the splitting as is because I didn't want to surprise people.
I'll merge those remaining two series in the next revision. (I was just
wondering which way is more comfortable for maintainers and reviewers.)
Thanks for the comment,
Koichiro
>
> Frank
> >
> > This series defines the endpoint DMA BAR metadata and auxiliary
> > resources, adds EPC operations for DMA channel delegation, and teaches
> > the DesignWare endpoint controller to publish and delegate its
> > integrated DMA resources.
> >
> > The metadata lives in a normal endpoint BAR, not in PCI config space.
> > This keeps discovery independent from controller-specific writable
> > extended capability storage.
> >
> > Part 1 v6 has landed in linux-next via dmaengine/next:
> > https://lore.kernel.org/all/20260721062815.4117887-1-den@xxxxxxxxxxxxx/
> >
> > v6 is rebased on next-20260803.
> >
> > Best regards,
> > Koichiro
> > ---
> > Changes in v6:
> > - Rebase onto next-20260803, which includes part 1 v6.
> > - Use one DMA resource snapshot for bounds checking and array filling.
> > (Sashiko)
> > - Move DMA resource exposure after delegation support so every advertised
> > channel is immediately usable. (Sashiko)
> >
> > Changes in v5:
> > - Keep reporting a standalone doorbell when linked-list DMA resources
> > are unavailable. (Sashiko)
> > - Serialize irq_mode restoration with channel state updates. (Sashiko)
> > - Clarify the provider-defined sharing-group quiesce contract.
> > - Use guard()/scoped_guard() for new code.
> >
> > Changes in v4:
> > - Rebased onto the new part 1 series.
> > - "dmaengine: dw-edma: Add delegated channel request helpers" moved
> > from part 1 into this series, next to its only users; this also
> > resolves the undeclared-functions issue reported against v3 5/5.
> > (Sashiko)
> > - Lift the v3 PF0-only restriction on DMA resource exposure and
> > channel delegation: part 1 now programs the per-channel requester
> > function number. Delegation to PF1+ therefore requires part 1
> > applied on the host side.
> > - Move pci_epc_function_is_valid() up to avoid a potential error
> > pointer dereference. (Sashiko)
> >
> > Changes in v3:
> > - Decouple logical DMA channel metadata from descriptor memory resources.
> > Logical channels now refer to descriptor memory by resource ID instead
> > of embedding descriptor metadata in each channel resource. (Sashiko)
> > - Replace the v2 DMAengine filter-callback metadata with EPC-level DMA
> > channel delegation/reclaim operations, keeping DMAengine provider
> > details out of generic EPC resource metadata.
> > - Add the DesignWare EPC backend for DMA channel delegation.
> > - Limit DesignWare endpoint DMA resource exposure to linked-list channels
> > until non-LL metadata and host-side parsing are added.
> > - Suppress DesignWare DMA auxiliary resources when the local DW eDMA
> > provider is not available.
> > - Reject VF DMA resource and delegation requests because the DWC
> > eDMA/HDMA register window exposed to the Root Complex is PF-only.
> >
> > Changes in v2:
> > - Follow the part 1/3 v2 channel-claim model: EPC DMA resources now
> > carry DMAengine filter information instead of raw DMA channel
> > pointers. (Sashiko)
> > - Update the DesignWare endpoint resource provider accordingly. (Sashiko)
> >
> > v5: https://lore.kernel.org/r/20260717050635.2145014-1-den@xxxxxxxxxxxxx/
> > v4: https://lore.kernel.org/r/20260710082156.2395844-1-den@xxxxxxxxxxxxx/
> > v3: https://lore.kernel.org/r/20260620170438.3756593-1-den@xxxxxxxxxxxxx/
> > v2: https://lore.kernel.org/r/20260525063129.3316894-1-den@xxxxxxxxxxxxx/
> > v1: https://lore.kernel.org/r/20260521063405.2842644-1-den@xxxxxxxxxxxxx/
> >
> >
> > Koichiro Den (6):
> > PCI: endpoint: Define endpoint DMA BAR metadata format
> > PCI: endpoint: Add DMA auxiliary resource metadata
> > PCI: endpoint: Add API to delegate EPC DMA channels to the host
> > dmaengine: dw-edma: Add delegated channel request helpers
> > PCI: dwc: Implement endpoint DMA channel delegation
> > PCI: dwc: Expose endpoint DMA resources
> >
> > MAINTAINERS | 1 +
> > drivers/dma/dw-edma/dw-edma-core.c | 91 ++++++++
> > .../pci/controller/dwc/pcie-designware-ep.c | 205 +++++++++++++++++-
> > drivers/pci/endpoint/pci-epc-core.c | 105 +++++++++
> > include/linux/dma/edma.h | 14 ++
> > include/linux/pci-ep-dma.h | 170 +++++++++++++++
> > include/linux/pci-epc.h | 62 ++++++
> > 7 files changed, 640 insertions(+), 8 deletions(-)
> > create mode 100644 include/linux/pci-ep-dma.h
> >
> > base-commit: 9a4cdc958dd79fc6c3b20b51a10debec6ca09fec
> > --
> > 2.51.0
> >