aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/s390x/ipl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index ca8e7db..7773499 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -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);
}