Hi SPDK 2016-10-24 23:30, Walker, Benjamin: > On Sat, 2016-10-22 at 21:19 +0300, Gregory Etelson wrote: > > Hello > > > > I need to run DPDK networking and access NVMe device in the same process. > > > > rte_eal_init() initializes network PMD drivers normally > > But spdk_nvme_probe() activates network devices probe for the second time and > > rte exits with error. > > > > To resolve this failure I register NVMe controller driver as DPDK PMD. > > Now I can pass NVMe device PCI address to EAL initialization with `-w' > > parameter along with network devices > > PMD template I use is attached below. > > > > Is there another way to run DPDK and SPDK in the same process ? > > You found the best way right now, but I'm working with the DPDK community to > improve here. It seems like the rte_pci module doesn't handle multiple calls to > rte_eal_pci_probe, which is what SPDK is doing. The most important change to > DPDK that needs to happen is that rte_eal_pci_probe needs to not call the driver > initialization function for devices that already have a driver loaded. That's a > very easy fix that solves your problem and I'll be submitting a patch to the > DPDK community. > > Longer term I think we really need to work with DPDK to clean up some of these > PCI interfaces so they're more dynamic and can handle devices and drivers coming > and going at run time. Yes you are welcome to contribute to DPDK. There is a slow work in progress to better design the EAL in order to ease integration of new buses and allow true hotplugging. We do these core changes step by step: After having better designed the device object, we are changing the bus model. Instead of having PCI the default bus, and vdev an exception, we need a generic bus object to plug PCI, vdev and other buses in it. Then we should design a better app event mechanism, usable for hotplug. Another step could be an auto-binding. And at the end we could be plugged to hardware events like udev.