aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2015-06-04 12:34:23 +0200
committerMichael S. Tsirkin <mst@redhat.com>2015-06-10 18:15:05 +0200
commitb8f059081d93f1802480059d1d49fe5c1d32f60c (patch)
tree1e066b355ef4f9a013e18aac4c2840f0fa1bee24
parentdfb8e184db758bff275f94f7aa634300886cfe21 (diff)
virtio: generation counter support
Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--hw/virtio/virtio-pci.c2
-rw-r--r--hw/virtio/virtio.c1
-rw-r--r--include/hw/virtio/virtio.h1
3 files changed, 3 insertions, 1 deletions
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 8fc3c4ea9b..7805bddc74 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -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;
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 8a6ebae368..cae5ecab19 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -930,6 +930,7 @@ void virtio_notify_config(VirtIODevice *vdev)
return;
vdev->isr |= 0x03;
+ vdev->generation++;
virtio_notify_vector(vdev, vdev->config_vector);
}
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index df8991357f..b9e36f95d3 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -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;