Hi Maxime, Many thanks for the heads up. I'll try out your suggested fix later today and let you know if it resolves my issue.
Regards Alan -----Original Message----- From: Maxime Coquelin [mailto:maxime.coque...@redhat.com] Sent: Monday, February 05, 2018 8:42 AM To: alangordonde...@gmail.com; dev@dpdk.org Cc: Alan Dewar <alan.de...@att.com> Subject: Re: [dpdk-dev] [PATCH] vhost: support non multiqueue guests 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