]> git.baikalelectronics.ru Git - kernel.git/commit
virtio: expose added descriptors immediately.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 12 Jan 2012 05:14:43 +0000 (15:44 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 12 Jan 2012 05:14:43 +0000 (15:44 +1030)
commit91c29160a2c6187ce938c9f235f1c2dd06e519e0
treedd680789368f78aae6fcfb521fe55d868eff3b5f
parente459258e899067407b2e3b33a421b27009c90b1e
virtio: expose added descriptors immediately.

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.

In the unusual (but now possible) case where a driver does add_buf()
and get_buf() without doing a kick, we do need to insert one before
our counter wraps.  Otherwise we could wrap num_added, and later on
not realize that we have passed the marker where we should have
kicked.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio_ring.c