[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 15/41] virtio: remove save/load_queue for virtio
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 15/41] virtio: remove save/load_queue for virtio |
Date: |
Wed, 2 Dec 2009 13:04:13 +0100 |
It was used only for PCI virtio devices, state that explicitely
Signed-off-by: Juan Quintela <address@hidden>
---
hw/virtio-pci.c | 24 ++++++------------------
hw/virtio.c | 22 ++++++++++++++++------
hw/virtio.h | 4 ++--
3 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 45d0adc..12f3961 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -151,28 +151,18 @@ const VMStateDescription vmstate_virtio_pci_config = {
}
};
-static void virtio_pci_save_queue(void * opaque, int n, QEMUFile *f)
+bool virtio_pci_msix_present(void *opaque)
{
VirtIOPCIProxy *proxy = opaque;
- if (msix_present(&proxy->pci_dev))
- qemu_put_be16(f, virtio_queue_vector(proxy->vdev, n));
-}
+ return msix_present(&proxy->pci_dev);
+}
-static int virtio_pci_load_queue(void * opaque, int n, QEMUFile *f)
+int virtio_pci_msix_vector_use(void *opaque, unsigned vector)
{
VirtIOPCIProxy *proxy = opaque;
- uint16_t vector;
- if (msix_present(&proxy->pci_dev)) {
- qemu_get_be16s(f, &vector);
- } else {
- vector = VIRTIO_NO_VECTOR;
- }
- virtio_queue_set_vector(proxy->vdev, n, vector);
- if (vector != VIRTIO_NO_VECTOR) {
- return msix_vector_use(&proxy->pci_dev, vector);
- }
- return 0;
+
+ return msix_vector_use(&proxy->pci_dev, vector);
}
static void virtio_pci_reset(DeviceState *d)
@@ -402,8 +392,6 @@ static void virtio_write_config(PCIDevice *pci_dev,
uint32_t address,
static const VirtIOBindings virtio_pci_bindings = {
.notify = virtio_pci_notify,
- .save_queue = virtio_pci_save_queue,
- .load_queue = virtio_pci_load_queue,
};
static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
diff --git a/hw/virtio.c b/hw/virtio.c
index c136005..b565bf9 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -643,8 +643,10 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
qemu_put_be32(f, vdev->vq[i].vring.num);
qemu_put_be64(f, vdev->vq[i].pa);
qemu_put_be16s(f, &vdev->vq[i].last_avail_idx);
- if (vdev->binding->save_queue)
- vdev->binding->save_queue(vdev->binding_opaque, i, f);
+ if (vdev->type == VIRTIO_PCI &&
+ virtio_pci_msix_present(vdev->binding_opaque)) {
+ qemu_put_be16s(f, &vdev->vq[i].vector);
+ }
}
}
@@ -676,10 +678,18 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f)
if (vdev->vq[i].pa) {
virtqueue_init(&vdev->vq[i]);
}
- if (vdev->binding->load_queue) {
- ret = vdev->binding->load_queue(vdev->binding_opaque, i, f);
- if (ret)
- return ret;
+ if (vdev->type == VIRTIO_PCI) {
+ if (virtio_pci_msix_present(vdev->binding_opaque)) {
+ qemu_get_be16s(f, &vdev->vq[i].vector);
+ } else {
+ vdev->vq[i].vector = VIRTIO_NO_VECTOR;
+ }
+ if (vdev->vq[i].vector != VIRTIO_NO_VECTOR) {
+ ret = virtio_pci_msix_vector_use(vdev->binding_opaque,
+ vdev->vq[i].vector);
+ if (ret)
+ return ret;
+ }
}
}
diff --git a/hw/virtio.h b/hw/virtio.h
index 9d2e2cc..91a6c10 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -78,8 +78,6 @@ typedef struct VirtQueueElement
typedef struct {
void (*notify)(void * opaque, uint16_t vector);
- void (*save_queue)(void * opaque, int n, QEMUFile *f);
- int (*load_queue)(void * opaque, int n, QEMUFile *f);
} VirtIOBindings;
#define VIRTIO_PCI_QUEUE_MAX 16
@@ -176,5 +174,7 @@ void virtio_net_exit(VirtIODevice *vdev);
/* virtio-pci. */
extern const VMStateDescription vmstate_virtio_pci_config;
+bool virtio_pci_msix_present(void *opaque);
+int virtio_pci_msix_vector_use(void *opaque, unsigned vector);
#endif
--
1.6.5.2
- [Qemu-devel] [PATCH 08/41] msix: Store sizes that we send/receive, (continued)
- [Qemu-devel] [PATCH 08/41] msix: Store sizes that we send/receive, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 09/41] msix: port to vmstate, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 10/41] qemu/pci: document msix_entries_nr field, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 11/41] virtio: Introduce type field to distingish between PCI and Syborg, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 12/41] virtio-pci: port pci config to vmstate, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 13/41] msix: msix_load/save are not needed anymore, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 14/41] virtio: remove save/load_config for virtio, Juan Quintela, 2009/12/02
- [Qemu-devel] [PATCH 15/41] virtio: remove save/load_queue for virtio,
Juan Quintela <=
[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