[dpdk-dev] [PATCH] vhost: support non multiqueue guests
Alan Dewar
alangordondewar at gmail.com
Mon Feb 5 11:18:57 CET 2018
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.coquelin at redhat.com> wrote:
> Hi Alan,
>
> On 01/31/2018 03:42 PM, alangordondewar at gmail.com wrote:
>>
>> From: Alan Dewar<alan.dewar at 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.dewar at 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.coquelin at 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.coquelin at redhat.com>
> Acked-by: Laszlo Ersek <lersek at redhat.com>
> Acked-by: Yuanhan Liu <yliu at fridaylinux.org>
>
>
> Could you try with latest master and confirm it solves the issue on your
> side?
>
> Cheers,
> Maxime
More information about the dev
mailing list