qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 08/41] msix: Store sizes that we send/receive


From: Juan Quintela
Subject: [Qemu-devel] [PATCH 08/41] msix: Store sizes that we send/receive
Date: Wed, 2 Dec 2009 13:04:06 +0100

VMstate send buffers in bytes ammonts, not bits or MSIX_ENTRY_SIZE
multiples

Signed-off-by: Juan Quintela <address@hidden>
---
 hw/msix.c |   13 +++++++++----
 hw/pci.h  |    2 ++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/hw/msix.c b/hw/msix.c
index 8dca9fd..62865d0 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -294,9 +294,11 @@ int msix_uninit(PCIDevice *dev)
 void msix_save(PCIDevice *dev, QEMUFile *f)
 {
     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, n * MSIX_ENTRY_SIZE);
-    qemu_put_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, (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. */
@@ -304,9 +306,12 @@ void msix_load(PCIDevice *dev, QEMUFile *f)
 {
     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, n * MSIX_ENTRY_SIZE);
-    qemu_get_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, (n + 7) / 8);
+    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);
 }

 /* Does device support MSI-X? */
diff --git a/hw/pci.h b/hw/pci.h
index 0baf69b..c67cc70 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -241,6 +241,8 @@ struct PCIDevice {
     uint32_t msix_bar_size;
     /* Version id needed for VMState */
     int32_t version_id;
+    int32_t msix_entries_size;
+    int32_t msix_pending_size;
 };

 PCIDevice *pci_register_device(PCIBus *bus, const char *name,
-- 
1.6.5.2





reply via email to

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