Thanks for report, I just summited this patch to fix:
> 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.