On Sun, 13 Nov 2011 23:03:14 +0200, "Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote: > On Thu, Nov 03, 2011 at 06:12:53PM +1030, Rusty Russell wrote: > > A virtio driver does virtqueue_add_buf() multiple times before finally > > calling virtqueue_kick(); previously we only exposed the added buffers > > in the virtqueue_kick() call. This means we don't need a memory > > barrier in virtqueue_add_buf(), but it reduces concurrency as the > > device (ie. host) can't see the buffers until the kick. > > > > Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> > > In the past I played with a patch like this, but I didn't see a > performance gain either way. Do you see any gain? No, but I haven't run it on real hardware. lguest may see a win with this in theory, since the virtqueue processing is fully async, so I'll run some tests. > I'm a bit concerned that with this patch, a buggy driver that > adds more than 2^16 descriptors without a kick > would seem to work sometimes. Let's add WARN_ON(vq->num_added > (1 << 16))? Hmm, I guess it could wait for the add to fail before doing a kick, but noone does that at the moment, so I've added a slight variant: WARN_ON(vq->num_added > vq->vring.num); Thanks, Rusty. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html