lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 21 May 2012 13:22:43 +0800 From: Jason Wang <jasowang@...hat.com> To: Shirley Ma <mashirle@...ibm.com> CC: "Michael S. Tsirkin" <mst@...hat.com>, eric.dumazet@...il.com, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, ebiederm@...ssion.com, davem@...emloft.net Subject: Re: [V2 PATCH 9/9] vhost: zerocopy: poll vq in zerocopy callback On 05/17/2012 03:08 AM, Shirley Ma wrote: > On Wed, 2012-05-16 at 21:36 +0300, Michael S. Tsirkin wrote: >> On Wed, May 16, 2012 at 10:32:05AM -0700, Shirley Ma wrote: >>> On Wed, 2012-05-16 at 18:14 +0300, Michael S. Tsirkin wrote: >>>> On Wed, May 16, 2012 at 08:10:27AM -0700, Shirley Ma wrote: >>>>> On Wed, 2012-05-16 at 10:58 +0800, Jason Wang wrote: >>>>>>>> drivers/vhost/vhost.c | 1 + >>>>>>>> 1 files changed, 1 insertions(+), 0 deletions(-) >>>>>>>> >>>>>>>> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c >>>>>>>> index 947f00d..7b75fdf 100644 >>>>>>>> --- a/drivers/vhost/vhost.c >>>>>>>> +++ b/drivers/vhost/vhost.c >>>>>>>> @@ -1604,6 +1604,7 @@ void vhost_zerocopy_callback(void >> *arg) >>>>>>>> struct vhost_ubuf_ref *ubufs = ubuf->arg; >>>>>>>> struct vhost_virtqueue *vq = ubufs->vq; >>>>>>>> >>>>>>>> + vhost_poll_queue(&vq->poll); >>>>>>>> /* set len = 1 to mark this desc buffers done DMA >> */ >>>>>>>> vq->heads[ubuf->desc].len = VHOST_DMA_DONE_LEN; >>>>>>>> kref_put(&ubufs->kref, >> vhost_zerocopy_done_signal); >>>>>>> Doing so, we might have redundant vhost_poll_queue(). Do you >>>> know in >>>>>>> which scenario there might be missing of adding and >> signaling >>>> during >>>>>>> zerocopy? >>>>>> Yes, as we only do signaling and adding during tx work, if >> there's >>>> no >>>>>> tx >>>>>> work when the skb were sent, we may lose the opportunity to >> let >>>> guest >>>>>> know about the completion. It's easy to be reproduced with >> netperf >>>>>> test. >>>>> The reason which host signals guest is to free guest tx buffers, >> if >>>>> there is no tx work, then it's not necessary to signal the guest >>>> unless >>>>> guest runs out of memory. The pending buffers will be released >>>>> virtio_net device gone. >>>>> >>>>> What's the behavior of netperf test when you hit this situation? >>>>> >>>>> Thanks >>>>> Shirley >>>> IIRC guest networking seems to be lost. >>> It seems vhost_enable_notify is missing in somewhere else? >>> >>> Thanks >>> Shirley >> Donnu. I see virtio sending packets but they do not get >> to tun on host. debugging. > I looked at the code, if (zerocopy) check is needed for below code: > > + if (zerocopy) { > num_pends = likely(vq->upend_idx>= vq->done_idx) ? > (vq->upend_idx - vq->done_idx) : > (vq->upend_idx + UIO_MAXIOV - vq->done_idx); > if (unlikely(num_pends> VHOST_MAX_PEND)) { > tx_poll_start(net, sock); > vhost_poll_queue > set_bit(SOCK_ASYNC_NOSPACE,&sock->flags); > break; > } > + } > if (unlikely(vhost_enable_notify(&net->dev, vq))) { > vhost_disable_notify(&net->dev, vq); > continue; > } > break; No objection to add this but looks no difference to me as we won't touch upend_idx and done_idx when zercocopy is not used. > > Second, whether it's possible the problem comes from tx_poll_start()? In > some situation, vhost_poll_wakeup() is not being called? > > Thanks > Shirley > > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@...r.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists