Virtio: introduce virtqueue_fill() and virtqueue_flush()
Split virtqueue_push() into two logical steps - adding an element
to the used ring and notifying the other side of added elements.
This is needed because with the mergeable receive buffers scheme we
will add buffers to the used ring as we copy the packet data into them
but we only want to notify the guest of the new buffers once all the
packet buffers are available.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>