This implement NTB function for PCIe EP to RC connections. The existed ntb epf need two PCI EPs and two PCI Host. This just need EP to RC connections. ┌────────────┐ ┌─────────────────────────────────────┐ │ │ │ │ ├────────────┤ │ ┌──────────────┤ │ NTB │ │ │ NTB │ │ NetDev │ │ │ NetDev │ ├────────────┤ │ ├──────────────┤ │ NTB │ │ │ NTB │ │ Transfer │ │ │ Transfer │ ├────────────┤ │ ├──────────────┤ │ │ │ │ │ │ PCI NTB │ │ │ │ │ EPF │ │ │ │ │ Driver │ │ │ PCI Virtual │ │ │ ├───────────────┐ │ NTB Driver │ │ │ │ PCI EP NTB │◄────►│ │ │ │ │ FN Driver │ │ │ ├────────────┤ ├───────────────┤ ├──────────────┤ │ │ │ │ │ │ │ PCI BUS │ ◄─────► │ PCI EP BUS │ │ Virtual PCI │ │ │ PCI │ │ │ BUS │ └────────────┘ └───────────────┴──────┴──────────────┘ PCI RC PCI EP Frank Li (4): PCI: designware-ep: Allow pcie_ep_set_bar change inbound map address NTB: epf: Added more flexible memory map method NTB: EPF: support NTB transfer between PCI RC and EP connection Documentation: PCI: Add specification for the PCI vNTB function device Documentation/PCI/endpoint/index.rst | 2 + .../PCI/endpoint/pci-vntb-function.rst | 126 ++ Documentation/PCI/endpoint/pci-vntb-howto.rst | 161 ++ drivers/ntb/hw/epf/ntb_hw_epf.c | 48 +- .../pci/controller/dwc/pcie-designware-ep.c | 10 +- drivers/pci/endpoint/functions/Kconfig | 11 + drivers/pci/endpoint/functions/Makefile | 1 + drivers/pci/endpoint/functions/pci-epf-vntb.c | 1425 +++++++++++++++++ 8 files changed, 1770 insertions(+), 14 deletions(-) create mode 100644 Documentation/PCI/endpoint/pci-vntb-function.rst create mode 100644 Documentation/PCI/endpoint/pci-vntb-howto.rst create mode 100644 drivers/pci/endpoint/functions/pci-epf-vntb.c -- 2.24.0.rc1