Message ID | 1357828825-2414-1-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
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 <pbonzini@redhat.com> 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 > >
Am 10.01.2013 15:40, schrieb Paolo Bonzini: > 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 <pbonzini@redhat.com> > --- > 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; Underscore alert. ;) What about naming the arg d and the variable dev? Andreas > + > + 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 = {
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 <pbonzini@redhat.com> 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/qemu-devel@nongnu.org/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 >> >>
Il 16/01/2013 09:42, KONRAD Frédéric ha scritto: >> >>> 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 <pbonzini@redhat.com> > 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/qemu-devel@nongnu.org/msg149035.html Well, not in 1.3.1. :) Paolo
Il 16/01/2013 06:27, Andreas Färber ha scritto: > Am 10.01.2013 15:40, schrieb Paolo Bonzini: >> 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 <pbonzini@redhat.com> >> --- >> 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; > > Underscore alert. ;) What about naming the arg d and the variable dev? True, but the file uses this convention throughout. Paolo
Am 16.01.2013 11:10, schrieb Paolo Bonzini: > Il 16/01/2013 06:27, Andreas Färber ha scritto: >> Am 10.01.2013 15:40, schrieb Paolo Bonzini: >>> 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 <pbonzini@redhat.com> >>> --- >>> 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; >> >> Underscore alert. ;) What about naming the arg d and the variable dev? > > True, but the file uses this convention throughout. Then I'm beginning to understand why Fred's patchset is so large... Andreas
Il 10/01/2013 15:40, Paolo Bonzini ha scritto: > 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 <pbonzini@redhat.com> > --- > 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 = { > Alex, you missed this. Paolo
On 19.01.2013, at 15:10, Paolo Bonzini wrote: > Il 10/01/2013 15:40, Paolo Bonzini ha scritto: >> 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 <pbonzini@redhat.com> >> --- >> 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 = { >> > > Alex, you missed this. Yeah, sorry. It's not going to be my last s390 pull request before 1.4 :) Alex
On 10.01.2013, at 15:40, 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 <pbonzini@redhat.com> Thanks, applied to s390-next. Alex
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 = {
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 <pbonzini@redhat.com> --- hw/s390-virtio-bus.c | 8 ++++++++ 1 file changed, 8 insertions(+)