* [PATCHv2 1/2] fix segfault in msix_save [not found] <cover.1246454826.git.mst@redhat.com> @ 2009-07-01 13:28 ` Michael S. Tsirkin 2009-07-01 13:28 ` [Qemu-devel] " Michael S. Tsirkin 1 sibling, 0 replies; 4+ messages in thread From: Michael S. Tsirkin @ 2009-07-01 13:28 UTC (permalink / raw) To: qemu-devel, avi, kvm, aliguori, kwolf This fixes segfault reported by Kevin Wolf, and simplifies the code in msix_save. Reported-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- hw/msix.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/msix.c b/hw/msix.c index 4ab6da6..98c62a5 100644 --- a/hw/msix.c +++ b/hw/msix.c @@ -284,11 +284,13 @@ int msix_uninit(PCIDevice *dev) void msix_save(PCIDevice *dev, QEMUFile *f) { - unsigned nentries = (pci_get_word(dev->config + PCI_MSIX_FLAGS) & - PCI_MSIX_FLAGS_QSIZE) + 1; - qemu_put_buffer(f, dev->msix_table_page, nentries * MSIX_ENTRY_SIZE); - qemu_put_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, - (nentries + 7) / 8); + unsigned n = dev->msix_entries_nr; + + if (!dev->cap_present & QEMU_PCI_CAP_MSIX) + return; + + 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); } /* Should be called after restoring the config space. */ -- 1.6.2.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCHv2 1/2] fix segfault in msix_save @ 2009-07-01 13:28 ` Michael S. Tsirkin 0 siblings, 0 replies; 4+ messages in thread From: Michael S. Tsirkin @ 2009-07-01 13:28 UTC (permalink / raw) To: qemu-devel, avi, kvm, aliguori, kwolf This fixes segfault reported by Kevin Wolf, and simplifies the code in msix_save. Reported-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- hw/msix.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/msix.c b/hw/msix.c index 4ab6da6..98c62a5 100644 --- a/hw/msix.c +++ b/hw/msix.c @@ -284,11 +284,13 @@ int msix_uninit(PCIDevice *dev) void msix_save(PCIDevice *dev, QEMUFile *f) { - unsigned nentries = (pci_get_word(dev->config + PCI_MSIX_FLAGS) & - PCI_MSIX_FLAGS_QSIZE) + 1; - qemu_put_buffer(f, dev->msix_table_page, nentries * MSIX_ENTRY_SIZE); - qemu_put_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, - (nentries + 7) / 8); + unsigned n = dev->msix_entries_nr; + + if (!dev->cap_present & QEMU_PCI_CAP_MSIX) + return; + + 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); } /* Should be called after restoring the config space. */ -- 1.6.2.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCHv2 2/2] qemu: remove control vector save [not found] <cover.1246454826.git.mst@redhat.com> @ 2009-07-01 13:28 ` Michael S. Tsirkin 2009-07-01 13:28 ` [Qemu-devel] " Michael S. Tsirkin 1 sibling, 0 replies; 4+ messages in thread From: Michael S. Tsirkin @ 2009-07-01 13:28 UTC (permalink / raw) To: qemu-devel, avi, kvm, aliguori, kwolf control vector is saved/restored by virtio-pci, it does not belong in virtio. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- hw/virtio.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/hw/virtio.c b/hw/virtio.c index 843be86..41e7ca2 100644 --- a/hw/virtio.c +++ b/hw/virtio.c @@ -626,9 +626,6 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f) qemu_put_be32(f, vdev->config_len); qemu_put_buffer(f, vdev->config, vdev->config_len); - if (vdev->nvectors) - qemu_put_be16s(f, &vdev->config_vector); - for (i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) { if (vdev->vq[i].vring.num == 0) break; -- 1.6.2.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCHv2 2/2] qemu: remove control vector save @ 2009-07-01 13:28 ` Michael S. Tsirkin 0 siblings, 0 replies; 4+ messages in thread From: Michael S. Tsirkin @ 2009-07-01 13:28 UTC (permalink / raw) To: qemu-devel, avi, kvm, aliguori, kwolf control vector is saved/restored by virtio-pci, it does not belong in virtio. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- hw/virtio.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/hw/virtio.c b/hw/virtio.c index 843be86..41e7ca2 100644 --- a/hw/virtio.c +++ b/hw/virtio.c @@ -626,9 +626,6 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f) qemu_put_be32(f, vdev->config_len); qemu_put_buffer(f, vdev->config, vdev->config_len); - if (vdev->nvectors) - qemu_put_be16s(f, &vdev->config_vector); - for (i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) { if (vdev->vq[i].vring.num == 0) break; -- 1.6.2.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-07-01 13:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.1246454826.git.mst@redhat.com>
2009-07-01 13:28 ` [PATCHv2 1/2] fix segfault in msix_save Michael S. Tsirkin
2009-07-01 13:28 ` [Qemu-devel] " Michael S. Tsirkin
2009-07-01 13:28 ` [PATCHv2 2/2] qemu: remove control vector save Michael S. Tsirkin
2009-07-01 13:28 ` [Qemu-devel] " Michael S. Tsirkin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.