OSDN Git Service

virtio: generation counter support
authorMichael S. Tsirkin <mst@redhat.com>
Thu, 4 Jun 2015 10:34:23 +0000 (12:34 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 10 Jun 2015 16:15:05 +0000 (18:15 +0200)
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/virtio-pci.c
hw/virtio/virtio.c
include/hw/virtio/virtio.h

index 8fc3c4e..7805bdd 100644 (file)
@@ -977,7 +977,7 @@ static uint64_t virtio_pci_common_read(void *opaque, hwaddr addr,
         val = vdev->status;
         break;
     case VIRTIO_PCI_COMMON_CFGGENERATION:
-        val = 0; /* TODO */
+        val = vdev->generation;
         break;
     case VIRTIO_PCI_COMMON_Q_SELECT:
         val = vdev->queue_sel;
index 8a6ebae..cae5eca 100644 (file)
@@ -930,6 +930,7 @@ void virtio_notify_config(VirtIODevice *vdev)
         return;
 
     vdev->isr |= 0x03;
+    vdev->generation++;
     virtio_notify_vector(vdev, vdev->config_vector);
 }
 
index df89913..b9e36f9 100644 (file)
@@ -78,6 +78,7 @@ struct VirtIODevice
     size_t config_len;
     void *config;
     uint16_t config_vector;
+    uint32_t generation;
     int nvectors;
     VirtQueue *vq;
     uint16_t device_id;