On 16/01/2013 05:52, mdroth wrote:
On Thu, Jan 10, 2013 at 03:40:25PM +0100, Paolo Bonzini wrote:
virtio-s390 devices are not being reset when their bus is. To fix
this, add a reset method that forwards to virtio_reset. This is
only needed because of the "strange" modeling of virtio devices;
the ->vdev link is being handled manually rather than through qdev.
Signed-off-by: Paolo Bonzini <[email protected]>
Isn't this handled by virtio-refactoring ?
I mean if we have a virtio bus on this VirtIOS390Device like in this series:
http://www.mail-archive.com/[email protected]/msg149035.html
And make VirtIODevice an abstract device which connects on this bus we
can reset it with the normal way ?
Ping. This fix doesn't appear to be upstream yet and I'm also looking to get
this in for 1.3.1.
(hint: `patches search tag:unapplied to:qemu-stable` :)
---
hw/s390-virtio-bus.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/s390-virtio-bus.c b/hw/s390-virtio-bus.c
index 7e99175..1e3e4f0 100644
--- a/hw/s390-virtio-bus.c
+++ b/hw/s390-virtio-bus.c
@@ -505,6 +505,13 @@ static int s390_virtio_busdev_init(DeviceState *dev)
return _info->init(_dev);
}
+static void s390_virtio_busdev_reset(DeviceState *dev)
+{
+ VirtIOS390Device *_dev = (VirtIOS390Device *)dev;
+
+ virtio_reset(_dev->vdev);
+}
+
static void virtio_s390_device_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -512,6 +519,7 @@ static void virtio_s390_device_class_init(ObjectClass
*klass, void *data)
dc->init = s390_virtio_busdev_init;
dc->bus_type = TYPE_S390_VIRTIO_BUS;
dc->unplug = qdev_simple_unplug_cb;
+ dc->reset = s390_virtio_busdev_reset;
}
static TypeInfo virtio_s390_device_info = {
--
1.8.1