qemu-devel
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]