From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759981Ab1EOMsO (ORCPT ); Sun, 15 May 2011 08:48:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44460 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759947Ab1EOMsL (ORCPT ); Sun, 15 May 2011 08:48:11 -0400 Date: Sun, 15 May 2011 15:47:46 +0300 From: "Michael S. Tsirkin" To: Rusty Russell Cc: linux-kernel@vger.kernel.org, Carsten Otte , Christian Borntraeger , linux390@de.ibm.com, Martin Schwidefsky , Heiko Carstens , Shirley Ma , lguest@lists.ozlabs.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org, Krishna Kumar , Tom Lendacky , steved@us.ibm.com, habanero@linux.vnet.ibm.com Subject: Re: [PATCH 08/18] virtio_ring: support for used_event idx feature Message-ID: <20110515124746.GB24932@redhat.com> References: <878vugh5ib.fsf@rustcorp.com.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <878vugh5ib.fsf@rustcorp.com.au> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 09, 2011 at 01:47:32PM +0930, Rusty Russell wrote: > On Wed, 4 May 2011 23:51:38 +0300, "Michael S. Tsirkin" wrote: > > Add support for the used_event idx feature: when enabling > > interrupts, publish the current avail index value to > > the host so that we get interrupts on the next update. > > > > Signed-off-by: Michael S. Tsirkin > > --- > > drivers/virtio/virtio_ring.c | 14 ++++++++++++++ > > 1 files changed, 14 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > > index 507d6eb..3a3ed75 100644 > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -320,6 +320,14 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len) > > ret = vq->data[i]; > > detach_buf(vq, i); > > vq->last_used_idx++; > > + /* If we expect an interrupt for the next entry, tell host > > + * by writing event index and flush out the write before > > + * the read in the next get_buf call. */ > > + if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) { > > + vring_used_event(&vq->vring) = vq->last_used_idx; > > + virtio_mb(); > > + } > > + > > Hmm, so you're still using the avail->flags; it's just if thresholding > is enabled the host will ignore it? > > It's a little subtle, but it keeps this patch small. Right, that's exactly why I do it this way. > Perhaps we'll want to make it more explicit later. > > Thanks, > Rusty. Yes, e.g. it might be better to avoid touching that cache line, and track the current status in a private field in the guest. But I was unable to measure any effect from doing it either way. -- MST From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH 08/18] virtio_ring: support for used_event idx feature Date: Sun, 15 May 2011 15:47:46 +0300 Message-ID: <20110515124746.GB24932@redhat.com> References: <878vugh5ib.fsf@rustcorp.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Krishna Kumar , Carsten Otte , lguest-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Shirley Ma , kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, habanero-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, Heiko Carstens , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, steved-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org, Christian Borntraeger , Tom Lendacky , Martin Schwidefsky , linux390-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org To: Rusty Russell Return-path: Content-Disposition: inline In-Reply-To: <878vugh5ib.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lguest-bounces+glkvl-lguest=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: lguest-bounces+glkvl-lguest=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org List-Id: netdev.vger.kernel.org On Mon, May 09, 2011 at 01:47:32PM +0930, Rusty Russell wrote: > On Wed, 4 May 2011 23:51:38 +0300, "Michael S. Tsirkin" wrote: > > Add support for the used_event idx feature: when enabling > > interrupts, publish the current avail index value to > > the host so that we get interrupts on the next update. > > > > Signed-off-by: Michael S. Tsirkin > > --- > > drivers/virtio/virtio_ring.c | 14 ++++++++++++++ > > 1 files changed, 14 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > > index 507d6eb..3a3ed75 100644 > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -320,6 +320,14 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len) > > ret = vq->data[i]; > > detach_buf(vq, i); > > vq->last_used_idx++; > > + /* If we expect an interrupt for the next entry, tell host > > + * by writing event index and flush out the write before > > + * the read in the next get_buf call. */ > > + if (!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) { > > + vring_used_event(&vq->vring) = vq->last_used_idx; > > + virtio_mb(); > > + } > > + > > Hmm, so you're still using the avail->flags; it's just if thresholding > is enabled the host will ignore it? > > It's a little subtle, but it keeps this patch small. Right, that's exactly why I do it this way. > Perhaps we'll want to make it more explicit later. > > Thanks, > Rusty. Yes, e.g. it might be better to avoid touching that cache line, and track the current status in a private field in the guest. But I was unable to measure any effect from doing it either way. -- MST