aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2013-08-12 12:21:36 +0300
committerMichael S. Tsirkin <mst@redhat.com>2013-08-12 12:25:17 +0300
commit3561ba14188b3c1e54246ed6db97896bbc082d2f (patch)
treeb919de94ea85f7f8f1b3a18a0043cb4d48bb26e4 /hw
parent6793dfd1b6a99a79b9f2e3c4d6625ccd6513f240 (diff)
downloadqemu-3561ba14188b3c1e54246ed6db97896bbc082d2f.zip
qemu-3561ba14188b3c1e54246ed6db97896bbc082d2f.tar.gz
qemu-3561ba14188b3c1e54246ed6db97896bbc082d2f.tar.bz2
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>
Diffstat (limited to 'hw')
-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 8f6ab13..9e336ad 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -762,6 +762,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));