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: Wed, 23 May 2012 18:31:36 +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/22/2012 11:55 PM, Shirley Ma wrote: > On Tue, 2012-05-22 at 18:05 +0800, Jason Wang wrote: >> On 05/21/2012 11:42 PM, Shirley Ma wrote: >>> On Mon, 2012-05-21 at 14:05 +0800, Jason Wang wrote: >>>>>> - tx polling depends on skb_orphan() which is often called by >>>> device >>>>>> driver when it place the packet into the queue of the devices >>>> instead >>>>>> of when the packets were sent. So it was too early for vhost to >> be >>>>>> notified. >>>>> Then do you think it's better to replace with vhost_poll_queue >> here >>>>> instead? >>>> Just like what does this patch do - calling vhost_poll_queue() in >>>> vhost_zerocopy_callback(). >>>>>> - it only works when the pending DMAs exceeds VHOST_MAX_PEND, >> it's >>>>>> highly possible that guest needs to be notified when the pending >>>>>> packets >>>>>> isn't so much. >>>>> In which situation the guest needs to be notified when there is no >>>> TX >>>>> besides buffers run out? >>>> Consider guest call virtqueue_enable_cb_delayed() which means it >> only >>>> need to be notified when 3/4 of pending buffers ( about 178 buffers >>>> (256-MAX_SKB_FRAGS-2)*3/4 ) were sent by host. So vhost_net would >>>> notify >>>> guest when about 60 buffers were pending. Since tx polling is only >>>> enabled when pending packets exceeds VHOST_MAX_PEND 128, so tx work >>>> would not be notified to run and guest would never get the >> interrupt >>>> it >>>> expected to re-enable the queue. >>> So it seems we still need vhost_enable_notify() in handle_tx when >> there >>> is no tx in zerocopy case. >>> >>> Do you know which one is more expensive: the cost of >> vhost_poll_queue() >>> in each zerocopy callback or calling vhost_enable_notify()? >> Didn't follow here, do you mean vhost_signal() here? > I meant removing the code in handle_tx for zerocopy as below: > > + if (zcopy) { > /* If more outstanding DMAs, queue the work. > * Handle upend_idx wrap around > */ > num_pends = likely(vq->upend_idx>= vq->done_idx) ? > (vq->upend_idx - vq->done_idx) : > (vq->upend_idx + UIO_MAXIOV - vq->done_idx); > + /* zerocopy vhost_enable_notify is under zerocopy callback > + * since it could be too early to notify here */ > + break; > + } > - if (unlikely(num_pends> VHOST_MAX_PEND)) { > - tx_poll_start(net, sock); > - set_bit(SOCK_ASYNC_NOSPACE,&sock->flags); > - break; > - } > if (unlikely(vhost_enable_notify(&net->dev, vq))) { > vhost_disable_notify(&net->dev, vq); > continue; > } > break; Didn't think this can work well as the notification from guest were disabled forever. > > 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