aboutsummaryrefslogtreecommitdiff
path: root/hw/s390-virtio.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2010-04-01 18:42:40 +0200
committerAurelien Jarno <aurelien@aurel32.net>2010-04-09 22:06:22 +0200
commitbaf0b55a9e57b909b1f8b0f732c0b10242867418 (patch)
treea700a4fea9c5a50eacea8a0052c4211c135720d6 /hw/s390-virtio.c
parent73cdf3f2c97703a89b026d3a42c1120ba05fe37d (diff)
Implement virtio reset
The guest may issue a RESET command for virtio. So far we didn't bother to implement it, but with my new bootloader we actually need it for Linux to get back to a safe state. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/s390-virtio.c')
-rw-r--r--hw/s390-virtio.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
index ad3386f607..c36a8b2336 100644
--- a/hw/s390-virtio.c
+++ b/hw/s390-virtio.c
@@ -99,10 +99,11 @@ int s390_virtio_hypercall(CPUState *env)
break;
case KVM_S390_VIRTIO_RESET:
{
- /* Virtio_reset resets the internal addresses, so we'd have to sync
- them up again. We don't want to reallocate a vring though, so let's
- just not reset. */
- /* virtio_reset(dev->vdev); */
+ VirtIOS390Device *dev;
+
+ dev = s390_virtio_bus_find_mem(s390_bus, mem);
+ virtio_reset(dev->vdev);
+ s390_virtio_device_sync(dev);
break;
}
case KVM_S390_VIRTIO_SET_STATUS: