[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 09/41] msix: port to vmstate
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 09/41] msix: port to vmstate |
Date: |
Wed, 2 Dec 2009 13:04:07 +0100 |
Signed-off-by: Juan Quintela <address@hidden>
---
hw/msix.c | 39 ++++++++++++++++++++++++++++++++-------
hw/msix.h | 1 +
2 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/hw/msix.c b/hw/msix.c
index 62865d0..f00256a 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -291,29 +291,54 @@ int msix_uninit(PCIDevice *dev)
return 0;
}
-void msix_save(PCIDevice *dev, QEMUFile *f)
+static void msix_pre_save(void *opaque)
{
+ PCIDevice *dev = opaque;
unsigned n = dev->msix_entries_nr;
+
dev->msix_entries_size = n * MSIX_ENTRY_SIZE;
dev->msix_pending_size = (n + 7) / 8;
-
- qemu_put_buffer(f, dev->msix_table_page, dev->msix_entries_size);
- qemu_put_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING,
dev->msix_pending_size);
}
/* Should be called after restoring the config space. */
-void msix_load(PCIDevice *dev, QEMUFile *f)
+static int msix_pre_load(void *opaque)
{
+ PCIDevice *dev = opaque;
unsigned n = dev->msix_entries_nr;
dev->msix_entries_size = n * MSIX_ENTRY_SIZE;
dev->msix_pending_size = (n + 7) / 8;
msix_free_irq_entries(dev);
- qemu_get_buffer(f, dev->msix_table_page, dev->msix_entries_size);
- qemu_get_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING,
dev->msix_pending_size);
+ return 0;
}
+const VMStateDescription vmstate_msix = {
+ .name = "msix",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .minimum_version_id_old = 1,
+ .pre_load = msix_pre_load,
+ .pre_save = msix_pre_save,
+ .fields = (VMStateField []) {
+ VMSTATE_PARTIAL_VBUFFER(msix_table_page, PCIDevice, msix_entries_size),
+ VMSTATE_SUB_VBUFFER(msix_table_page, PCIDevice, MSIX_PAGE_PENDING,
+ msix_pending_size),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
+void msix_save(PCIDevice *dev, QEMUFile *f)
+{
+ vmstate_save_state(f, &vmstate_msix, dev);
+}
+
+void msix_load(PCIDevice *dev, QEMUFile *f)
+{
+ vmstate_load_state(f, &vmstate_msix, dev, vmstate_msix.version_id);
+}
+
+
/* Does device support MSI-X? */
int msix_present(PCIDevice *dev)
{
diff --git a/hw/msix.h b/hw/msix.h
index a9f7993..a921a98 100644
--- a/hw/msix.h
+++ b/hw/msix.h
@@ -15,6 +15,7 @@ void msix_mmio_map(PCIDevice *pci_dev, int region_num,
int msix_uninit(PCIDevice *d);
+extern const VMStateDescription vmstate_msix;
void msix_save(PCIDevice *dev, QEMUFile *f);
void msix_load(PCIDevice *dev, QEMUFile *f);
--
1.6.5.2
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, (continued)
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Juan Quintela, 2009/12/02
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Michael S. Tsirkin, 2009/12/02
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Juan Quintela, 2009/12/02
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Michael S. Tsirkin, 2009/12/03
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Juan Quintela, 2009/12/03
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Michael S. Tsirkin, 2009/12/03
- [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Juan Quintela, 2009/12/03
- Re: [Qemu-devel] Re: [PATCH 06/41] virtio: Use DO_UPCAST instead of a cast, Avi Kivity, 2009/12/03
[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 <=
[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, 2009/12/02