qemu-e2k/hw/virtio
Vincenzo Maffione be1fea9bc2 virtio: read avail_idx from VQ only when necessary
The virtqueue_pop() implementation needs to check if the avail ring
contains some pending buffers. To perform this check, it is not
always necessary to fetch the avail_idx in the VQ memory, which is
expensive. This patch introduces a shadow variable tracking avail_idx
and modifies virtio_queue_empty() to access avail_idx in physical
memory only when necessary.

Signed-off-by: Vincenzo Maffione <v.maffione@gmail.com>
Message-Id: <b617d6459902773d9f4ab843bfaca764f5af8eda.1450218353.git.v.maffione@gmail.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-02-06 20:44:08 +02:00
..
dataplane vring: slim down allocation of VirtQueueElements 2016-02-06 20:44:08 +02:00
Makefile.objs dataplane: endianness-aware accesses 2015-02-16 15:07:16 +00:00
vhost-backend.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
vhost-user.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
vhost.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-balloon.c virtio: move allocation to virtqueue_pop/vring_pop 2016-02-06 20:39:07 +02:00
virtio-bus.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-mmio.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-pci.c virtio: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-pci.h 9pfs: introduce V9fsVirtioState 2016-01-12 11:04:14 +05:30
virtio-rng.c virtio: move allocation to virtqueue_pop/vring_pop 2016-02-06 20:39:07 +02:00
virtio.c virtio: read avail_idx from VQ only when necessary 2016-02-06 20:44:08 +02:00