[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 20/41] virtio: abstract test for save/load values
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 20/41] virtio: abstract test for save/load values |
Date: |
Wed, 2 Dec 2009 13:04:18 +0100 |
Signed-off-by: Juan Quintela <address@hidden>
---
hw/virtio.c | 27 ++++++++++++++++++++-------
1 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/hw/virtio.c b/hw/virtio.c
index 2b36cad..5497716 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -615,6 +615,20 @@ void virtio_notify_config(VirtIODevice *vdev)
virtio_notify_vector(vdev, vdev->config_vector);
}
+static bool is_virtio_pci(void *opaque, int version_id)
+{
+ VirtIODevice *vdev = opaque;
+
+ return vdev->type == VIRTIO_PCI;
+}
+
+static bool is_virtio_msix(void *opaque, int version_id)
+{
+ VirtIODevice *vdev = opaque;
+ return (vdev->type == VIRTIO_PCI) &&
+ virtio_pci_msix_present(vdev->binding_opaque);
+}
+
static void virtio_pre_save(void *opaque)
{
VirtIODevice *vdev = opaque;
@@ -633,7 +647,7 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
virtio_pre_save(vdev);
- if (vdev->type == VIRTIO_PCI)
+ if (is_virtio_pci(vdev, 1))
vmstate_save_state(f, &vmstate_virtio_pci_config,
vdev->binding_opaque);
qemu_put_8s(f, &vdev->status);
@@ -649,8 +663,7 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
qemu_put_be32s(f, &vdev->vq[i].vring.num);
qemu_put_be64s(f, &vdev->vq[i].pa);
qemu_put_be16s(f, &vdev->vq[i].last_avail_idx);
- if (vdev->type == VIRTIO_PCI &&
- virtio_pci_msix_present(vdev->binding_opaque)) {
+ if (is_virtio_msix(vdev, 1)) {
qemu_put_be16s(f, &vdev->vq[i].vector);
}
}
@@ -682,11 +695,12 @@ static int virtio_post_load(void *opaque, int version_id)
return 0;
}
+
int virtio_load(VirtIODevice *vdev, QEMUFile *f)
{
int i, ret;
- if (vdev->type == VIRTIO_PCI) {
+ if (is_virtio_pci(vdev, 1)) {
ret = vmstate_load_state(f, &vmstate_virtio_pci_config,
vdev->binding_opaque,
vmstate_virtio_pci_config.version_id);
if (ret)
@@ -707,9 +721,8 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f)
qemu_get_be64s(f, &vdev->vq[i].pa);
qemu_get_be16s(f, &vdev->vq[i].last_avail_idx);
- if (vdev->type == VIRTIO_PCI &&
- virtio_pci_msix_present(vdev->binding_opaque)) {
- qemu_get_be16s(f, &vdev->vq[i].vector);
+ if (is_virtio_msix(vdev, 1)) {
+ qemu_get_be16s(f, &vdev->vq[i].vector);
}
}
virtio_post_load(vdev, 1);
--
1.6.5.2
- [Qemu-devel] [PATCH 16/41] virtio: Add num_pci_queues field, (continued)
- [Qemu-devel] [PATCH 16/41] virtio: Add num_pci_queues field, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 17/41] virtio: split virtio_post_load() from virtio_load(), Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 18/41] virtio: change config_len type to int32_t, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 21/41] virtio: port to vmstate, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 19/41] virtio: use the right types for VirtQueue elements, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 20/41] virtio: abstract test for save/load values,
Juan Quintela <=
- [Qemu-devel] [PATCH 22/41] virtio-net: change tx_timer_active to uint32_t, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 23/41] virtio-net: change mergeable_rx_bufs to uint32_t, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 24/41] virtio-net: use type checking version of qemu_put/get-*, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 25/41] virtio-net: MAC_TABLE_ENTRIES has never been bigger, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 26/41] virtio-net: we know vlans size at compile time, make it static, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 27/41] virtio-net: abstract vlans operations, Juan Quintela, 2009/12/02