Hi Maxime, Just confirming that the commit that you suggested fixes the problem that I was seeing.
Many thanks for your help. Regards Alan On Mon, Feb 5, 2018 at 8:42 AM, Maxime Coquelin <maxime.coque...@redhat.com> wrote: > Hi Alan, > > On 01/31/2018 03:42 PM, alangordonde...@gmail.com wrote: >> >> From: Alan Dewar<alan.de...@att.com> >> >> Performance of vhost interfaces can be improved by having multiple >> TX/RX queue-pairs. QEMU can be told to use multiple queue-pairs for >> a vhost interface when starting the guest VM. The DPDK will also >> configure multiple queue-pairs in response to requests from QEMU. >> >> Later when the guest VM reaches the running state, it can decide to not >> support the multiqueue option. This information is passed down from >> the guest VM to QEMU, and from QEMU to the DPDK, but the DPDK ignores >> it. >> >> Because the guest VM doesn't support the multiqueue option it will only >> initialise the first queue-pair, and in turn the DPDK will not signal >> that the vhost interface is up. >> >> This change allows the DPDK to signal that the vhost interface is up >> after only the first queue-pair is fully initialised if the guest VM >> does not support the multiqueue option. >> >> Signed-off-by: Alan Dewar<alan.de...@att.com> >> --- >> lib/librte_vhost/vhost.c | 6 +++--- >> lib/librte_vhost/vhost_user.c | 8 +++++++- >> lib/librte_vhost/virtio_net.c | 12 +++++++++--- >> 3 files changed, 19 insertions(+), 7 deletions(-) > > > We already implemented a workaround to fix this issue: > commit e29109323595beb3884da58126ebb3b878cb66f5 > Author: Maxime Coquelin <maxime.coque...@redhat.com> > Date: Wed Dec 13 09:51:09 2017 +0100 > > vhost: destroy unused virtqueues when multiqueue not negotiated > > QEMU sends VHOST_USER_SET_VRING_CALL requests for all queues > declared in QEMU command line before the guest is started. > It has the effect in DPDK vhost-user backend to allocate vrings > for all queues declared by QEMU. > > If the first driver being used does not support multiqueue, > the device never changes to VIRTIO_DEV_RUNNING state as only > the first queue pair is initialized. One driver impacted by > this bug is virtio-net's iPXE driver which does not support > VIRTIO_NET_F_MQ feature. > > It is safe to destroy unused virtqueues in SET_FEATURES request > handler, as it is ensured the device is not in running state > at this stage, so virtqueues aren't being processed. > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > Acked-by: Laszlo Ersek <ler...@redhat.com> > Acked-by: Yuanhan Liu <y...@fridaylinux.org> > > > Could you try with latest master and confirm it solves the issue on your > side? > > Cheers, > Maxime