[PATCH v6 0/6] PCI: endpoint: Expose endpoint DMA resources (part 2/3)
Koichiro Den <[email protected]> Tue, 4 Aug 2026 12:38:49 +0900
| Newsgroups | org.kernel.vger.linux-pci,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 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/[email protected]/ 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/[email protected]/ v4: https://lore.kernel.org/r/[email protected]/ v3: https://lore.kernel.org/r/[email protected]/ v2: https://lore.kernel.org/r/[email protected]/ v1: https://lore.kernel.org/r/[email protected]/ 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