[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] 答复: Re: [PATCH] vhost: don't set vring call fd to -1 invho
From: |
lu.zhipeng |
Subject: |
[Qemu-devel] 答复: Re: [PATCH] vhost: don't set vring call fd to -1 invhost_virtqueue_start for vhost-user |
Date: |
Mon, 21 Aug 2017 11:28:10 +0800 (CST) |
>On 2017年08月21日 09:50, ZhiPeng Lu wrote:>> commit
>96a3d98d2cdbd897ff5ab33427aa4cfb94077665 (vhost: don't set vring call>> if no
>vector) set vring call fd to -1 for drivers does not use interrupt>> at
>all(e.g virtio-net pmd). That patch setting vring call fd to -1 cause>> the
>network to not work when running dpdk in the guest. The openvswitch port>>
>status is down by executing the command "ovs-vsctl list interface">> in host
>of running the guest. The network is ok if it doesn't set vring call fd>> to
>-1 in vhost_virtqueue_start.>> The patch doesn't set vring call fd to -1 for
>vhost-user.>>>> Signed-off-by: ZhiPeng Lu <address@hidden>>> --->>
>hw/virtio/vhost.c | 3 ++->> 1 file changed, 2 insertions(+), 1
>deletion(-)>>>> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c>> index
>6eddb09..bb8db7d 100644>> --- a/hw/virtio/vhost.c>> +++ b/hw/virtio/vhost.c>>
>@@ -1098,7 +1098,8 @@ static int vhost_virtqueue_start(struct vhost_dev
>*dev,>> >> if (k->query_guest_notifiers &&>>
>k->query_guest_notifiers(qbus->parent) &&>> - virtio_queue_vector(vdev,
>idx) == VIRTIO_NO_VECTOR) {>> + virtio_queue_vector(vdev, idx) ==
>VIRTIO_NO_VECTOR &&>> + vdev->use_guest_notifier_mask) {>>
>file.fd = -1>> r = dev->vhost_ops->vhost_set_vring_call(dev,
>&file)>> if (r) {>Hi:>Which kind/version of vhost-user bakcend did
>you use? What happen if we >don't do vhost_set_vring_call for it? Is this a
>bug of vhost-user >backend instead of qemu?---- I use qemu-2.8.1 ,but i think
>that the latest version of QEMU also has problems like this.
if (!vdev->use_guest_notifier_mask) {
/* TODO: check and handle errors. */
vhost_virtqueue_mask(dev, vdev, idx, false)
---------- set right callfd
}
if (k->query_guest_notifiers &&
k->query_guest_notifiers(qbus->parent) &&
virtio_queue_vector(vdev, idx) == VIRTIO_NO_VECTOR) {
file.fd = -1
r = dev->vhost_ops->vhost_set_vring_call(dev, &file)
-----------set call fd to -1
if (r) {
goto fail_vector
}
}
So the callfd of ovs+dpdk in host is -1. it can't be able to interact
with the guest.
为了让您的VPlat虚拟机故障和docker故障得到高效的处理,请上报故障到: $VPlat技术支持。
芦志朋 luzhipeng
IT开发工程师 IT Development
Engineer
操作系统产品部/中心研究院/系统产品 OS Product Dept./Central R&D Institute/System Product
四川省成都市天府大道中段800号
E: address@hidden
www.zte.com.cn
原始邮件
发件人: <address@hidden>
收件人:芦志朋10108272 <address@hidden>
抄送人: <address@hidden>
日 期 :2017年08月21日 11:11
主 题 :Re: [Qemu-devel] [PATCH] vhost: don't set vring call fd to -1
invhost_virtqueue_start for vhost-user
On 2017年08月21日 09:50, ZhiPeng Lu wrote:
> commit 96a3d98d2cdbd897ff5ab33427aa4cfb94077665 (vhost: don't set vring call
> if no vector) set vring call fd to -1 for drivers does not use interrupt
> at all(e.g virtio-net pmd). That patch setting vring call fd to -1 cause
> the network to not work when running dpdk in the guest. The openvswitch port
> status is down by executing the command "ovs-vsctl list interface"
> in host of running the guest. The network is ok if it doesn't set vring call
> fd
> to -1 in vhost_virtqueue_start.
> The patch doesn't set vring call fd to -1 for vhost-user.
>
> Signed-off-by: ZhiPeng Lu <address@hidden>
> ---
> hw/virtio/vhost.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index 6eddb09..bb8db7d 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -1098,7 +1098,8 @@ static int vhost_virtqueue_start(struct vhost_dev *dev,
>
> if (k->query_guest_notifiers &&
> k->query_guest_notifiers(qbus->parent) &&
> - virtio_queue_vector(vdev, idx) == VIRTIO_NO_VECTOR) {
> + virtio_queue_vector(vdev, idx) == VIRTIO_NO_VECTOR &&
> + vdev->use_guest_notifier_mask) {
> file.fd = -1
> r = dev->vhost_ops->vhost_set_vring_call(dev, &file)
> if (r) {
Hi:
Which kind/version of vhost-user bakcend did you use? What happen if we
don't do vhost_set_vring_call for it? Is this a bug of vhost-user
backend instead of qemu?
Thanks
- [Qemu-devel] 答复: Re: [PATCH] vhost: don't set vring call fd to -1 invhost_virtqueue_start for vhost-user,
lu.zhipeng <=