Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752534Ab1EIGC7 (ORCPT ); Mon, 9 May 2011 02:02:59 -0400 Received: from ozlabs.org ([203.10.76.45]:44082 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751542Ab1EIGC5 (ORCPT ); Mon, 9 May 2011 02:02:57 -0400 From: Rusty Russell To: "Michael S. Tsirkin" , linux-kernel@vger.kernel.org Cc: Carsten Otte , Christian Borntraeger , linux390@de.ibm.com, Martin Schwidefsky , Heiko Carstens , Shirley Ma , lguest@lists.ozlabs.org, linux-kernel@vger.kernel.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 In-Reply-To: References: User-Agent: Notmuch/0.3.1 (http://notmuchmail.org) Emacs/23.1.1 (i686-pc-linux-gnu) Date: Mon, 09 May 2011 13:47:32 +0930 Message-ID: <878vugh5ib.fsf@rustcorp.com.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1558 Lines: 40 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. Perhaps we'll want to make it more explicit later. Thanks, Rusty. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/