Thanks for report, I just summited this patch to fix: https://dpdk.org/dev/patchwork/patch/37765/
> > Hi, > > On Fri, Mar 30, 2018 at 02:58:31PM +0800, Junjie Chen wrote: > >When creating vdev dynamically, vhost pmd driver starts directly > >without checking TX/RX queues are ready or not, and thus causes > >segmentation fault when vhost library accesses queues. This patch adds > >a flag to check whether queues are setup or not, and adds queues setup > >into dev_start function to allow user to start them after setting up. > > for me, with this patch vhost enqueue/dequeue code is never called because > > if (unlikely(rte_atomic32_read(&r->allow_queuing) == 0)) > > this check in eth_vhost_rx() is always true. > > When I revert this patch it works as usual. > > My testpmd cmdline is: > > gdb --args $RTE_SDK/install/bin/testpmd -l 0,2,3,4,5 --socket-mem=1024 -n 4 \ > --vdev 'net_vhost0,iface=/tmp/vhost-user1' \ > --vdev 'net_vhost1,iface=/tmp/vhost-user2' -- \ > --portmask=f --rxq=1 --txq=1 \ > --nb-cores=4 --forward-mode=io -i > > After starting testpmd I issue commands "set portlist 0,2,1,3", start my guest > and start another testpmd issue in the guest. > > Another problem I see: Before this patch I could start testpmd, issue the > portlist command and type "start". If I do this now I get an infinite loop of > "VHOST CONFIG device not found" messages. > > > regards, > Jens