summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2013-08-12 12:21:36 +0300
committerMichael Roth <mdroth@linux.vnet.ibm.com>2013-08-13 10:04:40 -0500
commit58ef8c530ca5d265f575ef88e93c0214d5740b0a (patch)
treeee10702dd60c1b6e18561645692ee01770f1967a
parent8d676daf6d12fb5357da9ccd54ac7640dd7ea9f2 (diff)
downloadqemu-58ef8c530ca5d265f575ef88e93c0214d5740b0a.tar.gz
vhost: clear signalled_used_valid on vhost stop
When vhost device stops, its implementation synchronizes kernel state back to virtio.c so we can continue emulating the device in userspace. This patch ensures that virtio.c's signalled_used_valid flag is reset so that userspace does not suppress guest notifications due to stale signalled_used values. Cc: qemu-stable@nongnu.org Signed-off-by: Michael S. Tsirkin <mst@redhat.com> (cherry picked from commit 3561ba14188b3c1e54246ed6db97896bbc082d2f) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--hw/virtio/vhost.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index fbabf99f5e..0dabf263df 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -761,6 +761,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev,
fflush(stderr);
}
virtio_queue_set_last_avail_idx(vdev, idx, state.num);
+ virtio_queue_invalidate_signalled_used(vdev, idx);
assert (r >= 0);
cpu_physical_memory_unmap(vq->ring, virtio_queue_get_ring_size(vdev, idx),
0, virtio_queue_get_ring_size(vdev, idx));