virtio: correctly initialize vm_running
authorJason Wang <jasowang@redhat.com>
Wed, 18 May 2011 05:57:37 +0000 (13:57 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 12 Jun 2011 07:33:38 +0000 (10:33 +0300)
Current vm_running was not explicitly initialized and its value was changed by
vm state notifier, this may confuse the virtio device being hotplugged such as
virtio-net with vhost backend as it may think the vm was not running. Solve this
by initialize this value explicitly in virtio_common_init().

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio.c

index a6518606c3e4fe639b2dcc46b820b492ded33d87..36b8f3599b5fcd807c640510b35640b72f687e9a 100644 (file)
@@ -787,6 +787,7 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
     vdev->queue_sel = 0;
     vdev->config_vector = VIRTIO_NO_VECTOR;
     vdev->vq = qemu_mallocz(sizeof(VirtQueue) * VIRTIO_PCI_QUEUE_MAX);
+    vdev->vm_running = vm_running;
     for(i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
         vdev->vq[i].vector = VIRTIO_NO_VECTOR;
         vdev->vq[i].vdev = vdev;