[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 4/7] [s390] reset avail and used index on reboot
From: |
Christian Borntraeger |
Subject: |
[Qemu-devel] [PATCH 4/7] [s390] reset avail and used index on reboot |
Date: |
Mon, 23 Apr 2012 11:52:22 +0200 |
From: Jens Freimann <address@hidden>
reset the guest vring avail/used idx fields, otherwise it's possible
that old values remain in memory which would cause a reboot to fail
with a "Guest moved used index" message
Signed-off-by: Jens Freimann <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
hw/s390-virtio-bus.c | 7 +++++++
hw/s390-virtio-bus.h | 2 ++
2 files changed, 9 insertions(+)
diff --git a/hw/s390-virtio-bus.c b/hw/s390-virtio-bus.c
index 74419b3..084bac1 100644
--- a/hw/s390-virtio-bus.c
+++ b/hw/s390-virtio-bus.c
@@ -225,6 +225,7 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
{
VirtIOS390Bus *bus = DO_UPCAST(VirtIOS390Bus, bus, dev->qdev.parent_bus);
ram_addr_t cur_offs;
+ target_phys_addr_t idx_addr;
uint8_t num_vq;
int i;
@@ -250,6 +251,12 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
vring = s390_virtio_next_ring(bus);
virtio_queue_set_addr(dev->vdev, i, vring);
virtio_queue_set_vector(dev->vdev, i, i);
+ idx_addr = virtio_queue_get_avail_addr(dev->vdev, i) +
+ VIRTIO_VRING_AVAIL_IDX_OFFS;
+ stw_phys(idx_addr, 0);
+ idx_addr = virtio_queue_get_used_addr(dev->vdev, i) +
+ VIRTIO_VRING_USED_IDX_OFFS;
+ stw_phys(idx_addr, 0);
stq_be_phys(vq + VIRTIO_VQCONFIG_OFFS_ADDRESS, vring);
stw_be_phys(vq + VIRTIO_VQCONFIG_OFFS_NUM,
virtio_queue_get_num(dev->vdev, i));
}
diff --git a/hw/s390-virtio-bus.h b/hw/s390-virtio-bus.h
index 0e60bc0..8deec1e 100644
--- a/hw/s390-virtio-bus.h
+++ b/hw/s390-virtio-bus.h
@@ -34,6 +34,8 @@
#define VIRTIO_VQCONFIG_LEN 24
#define VIRTIO_RING_LEN (TARGET_PAGE_SIZE * 3)
+#define VIRTIO_VRING_AVAIL_IDX_OFFS 2
+#define VIRTIO_VRING_USED_IDX_OFFS 2
#define S390_DEVICE_PAGES 512
#define VIRTIO_PARAM_MASK 0xff
--
1.7.9.6
- [Qemu-devel] [PATCH 0/7] Fixes for s390, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 2/7] [s390] fix error handling on kernel and initrd failures, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 5/7] [s390] support reboot for kvm on s390, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 6/7] [s390] remove default cdrom, sd-card and floppy support, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 1/7] [s390] fix kernel_commandline handling, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 3/7] [s390] reboot: reset device pages on reboot, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 7/7] [s390] dont call system_shutdown on disabled wait, Christian Borntraeger, 2012/04/23
- [Qemu-devel] [PATCH 4/7] [s390] reset avail and used index on reboot,
Christian Borntraeger <=
- Re: [Qemu-devel] [PATCH 4/7] [s390] reset avail and used index on reboot, Jens Freimann, 2012/04/26
Re: [Qemu-devel] [PATCH 0/7] Fixes for s390, Alexander Graf, 2012/04/26