repository: /home/dor/src/merge/kvm branch: trunk commit bf1e6da21722a4699ea3739e587f282b9a5db418 Author: Dor Laor <[EMAIL PROTECTED]> Date: Tue Mar 4 08:57:52 2008 -0500
Use specific avail/used ring structures This is more accurate than using page_size, as suggested by Anthony Liguori. Signed-off-by: Dor Laor <[EMAIL PROTECTED]> diff --git a/qemu/hw/virtio.c b/qemu/hw/virtio.c index 1367af1..c1095fc 100644 --- a/qemu/hw/virtio.c +++ b/qemu/hw/virtio.c @@ -203,8 +203,8 @@ void virtio_dev_save(QEMUFile *f, VirtIODevice *vdev) /* Save the descriptor ring instead of constantly mark them dirty */ qemu_put_buffer(f, (uint8_t*)vdev->vq[i].vring.desc, vdev->vq[i].vring.num * sizeof(VRingDesc)); - qemu_put_buffer(f, (uint8_t*)vdev->vq[i].vring.avail, TARGET_PAGE_SIZE); - qemu_put_buffer(f, (uint8_t*)vdev->vq[i].vring.used, TARGET_PAGE_SIZE); + qemu_put_buffer(f, (uint8_t*)vdev->vq[i].vring.avail, vdev->vq[i].vring.num * 2 + sizeof(VRingAvail)); + qemu_put_buffer(f, (uint8_t*)vdev->vq[i].vring.used, vdev->vq[i].vring.num * sizeof(VRingUsedElem) + sizeof(VRingUsed)); } } @@ -236,8 +236,8 @@ int virtio_dev_load(QEMUFile *f, VirtIODevice *vdev, int version_id) virtqueue_init(&vdev->vq[i], phys_ram_base + (vdev->vq[i].pfn << TARGET_PAGE_BITS)); qemu_get_buffer(f, (uint8_t*)vdev->vq[i].vring.desc, vdev->vq[i].vring.num * sizeof(VRingDesc)); - qemu_get_buffer(f, (uint8_t*)vdev->vq[i].vring.avail, TARGET_PAGE_SIZE); - qemu_get_buffer(f, (uint8_t*)vdev->vq[i].vring.used, TARGET_PAGE_SIZE); + qemu_get_buffer(f, (uint8_t*)vdev->vq[i].vring.avail, vdev->vq[i].vring.num * 2 + sizeof(VRingAvail)); + qemu_get_buffer(f, (uint8_t*)vdev->vq[i].vring.used, vdev->vq[i].vring.num * sizeof(VRingUsedElem) + sizeof(VRingUsed)); } return 0; ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel