hw/s390x/ipl: replace deprecated qdev_reset_all registration

Replace deprecated qdev_reset_all by resettable_cold_reset_fn for
the ipl registration in the main reset handlers.

This does not impact the behavior for the following reasons:
+ at this point resettable just call the old reset methods of devices
  and buses in the same order than qdev/qbus.
+ resettable handlers registered with qemu_register_reset are
  serialized; there is no interleaving.
+ eventual explicit calls to legacy reset API (device_reset or
  qdev/qbus_reset) inside this reset handler will not be masked out
  by resettable mechanism; they do not go through resettable api.

Signed-off-by: Damien Hedde <damien.hedde@greensocs.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200123132823.1117486-12-damien.hedde@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Damien Hedde 2020-01-30 16:02:05 +00:00 committed by Peter Maydell
parent 751b4b7b4b
commit cd45c506c8
1 changed files with 9 additions and 1 deletions

View File

@ -237,7 +237,15 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp)
*/
ipl->compat_start_addr = ipl->start_addr;
ipl->compat_bios_start_addr = ipl->bios_start_addr;
qemu_register_reset(qdev_reset_all_fn, dev);
/*
* Because this Device is not on any bus in the qbus tree (it is
* not a sysbus device and it's not on some other bus like a PCI
* bus) it will not be automatically reset by the 'reset the
* sysbus' hook registered by vl.c like most devices. So we must
* manually register a reset hook for it.
* TODO: there should be a better way to do this.
*/
qemu_register_reset(resettable_cold_reset_fn, dev);
error:
error_propagate(errp, err);
}