>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 >> --->> 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: lu.zhipeng@zte.com.cn www.zte.com.cn 原始邮件 发件人: 收件人:芦志朋10108272 抄送人: 日 期 :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 > --- > 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