Message ID | 20190729145654.14644-15-damien.hedde@greensocs.com |
---|---|
State | New |
Headers | show |
Series | Multi-phase reset mechanism | expand |
On Mon, 29 Jul 2019 16:56:35 +0200 Damien Hedde <damien.hedde@greensocs.com> wrote: > Replace deprecated qdev_reset_all by device_reset_warm. > > This does not impact the behavior. Not so sure about that; see below. > > Signed-off-by: Damien Hedde <damien.hedde@greensocs.com> > --- > hw/s390x/s390-virtio-ccw.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index 5b6a9a4e55..1d6b966817 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -104,7 +104,7 @@ static void subsystem_reset(void) > for (i = 0; i < ARRAY_SIZE(reset_dev_types); i++) { > dev = DEVICE(object_resolve_path_type("", reset_dev_types[i], NULL)); > if (dev) { > - qdev_reset_all(dev); > + device_reset_warm(dev); > } > } > } This resets various different devices: - the diag288 watchdog, which does not have kids - the flic also seems fine (both non-kvm and kvm versions) - the sclp event facility, however, does have kids: - I'm a bit unsure about the sclp cpu hotplug thing; it does not have a ->reset function, though - the quiesce event does have a ->reset callback; so presumably this is already called in a different path - the css bridge is basically the root of all things css; its ->reset function currently calls css_reset(), which resets some state of the css per se, but does not call down into the device tree - might we end up with calling some stuff twice for devices in the css? Would be good if someone else from the s390 folks could take a look, just to make sure I'm not confused here.
On 8/8/19 12:50 PM, Cornelia Huck wrote: > On Mon, 29 Jul 2019 16:56:35 +0200 > Damien Hedde <damien.hedde@greensocs.com> wrote: > >> Replace deprecated qdev_reset_all by device_reset_warm. >> >> This does not impact the behavior. > > Not so sure about that; see below. In this case, qdev_reset_all is used. The qdev subtree is already reset. device_reset_* does keep the same children-then-parent call order for the legacy reset method. This is why the behavior is unchanged. I will add this point in the commit message of this patch (and also in other qdev/qbus_reset_all replacement patches) so it will be more clear. -- Damien
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 5b6a9a4e55..1d6b966817 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -104,7 +104,7 @@ static void subsystem_reset(void) for (i = 0; i < ARRAY_SIZE(reset_dev_types); i++) { dev = DEVICE(object_resolve_path_type("", reset_dev_types[i], NULL)); if (dev) { - qdev_reset_all(dev); + device_reset_warm(dev); } } }
Replace deprecated qdev_reset_all by device_reset_warm. This does not impact the behavior. Signed-off-by: Damien Hedde <damien.hedde@greensocs.com> --- hw/s390x/s390-virtio-ccw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)