hw/core/machine: Use qemu_register_resettable for sysbus reset
commit0441e35f95fd8658967138062f8c10fe594e9559
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 20 Feb 2024 16:06:21 +0000 (20 16:06 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 27 Feb 2024 13:01:42 +0000 (27 13:01 +0000)
tree7462af83ea541fff9460af9f6acf385f13e649ba
parent71b3ea373bc3b8e3e656d1e8c390896e21c31c0b
hw/core/machine: Use qemu_register_resettable for sysbus reset

Move the reset of the sysbus (and thus all devices and buses anywhere
on the qbus tree) from qemu_register_reset() to qemu_register_resettable().

This is a behaviour change: because qemu_register_resettable() is
aware of three-phase reset, this now means that:
 * 'enter' phase reset methods of devices and buses are called
   before any legacy reset callbacks registered with qemu_register_reset()
 * 'exit' phase reset methods of devices and buses are called
   after any legacy qemu_register_reset() callbacks

Put another way, a qemu_register_reset() callback is now correctly
ordered in the 'hold' phase along with any other 'hold' phase methods.

The motivation for doing this is that we will now be able to resolve
some reset-ordering issues using the three-phase mechanism, because
the 'exit' phase is always after the 'hold' phase, even when the
'hold' phase function was registered with qemu_register_reset().

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20240220160622.114437-10-peter.maydell@linaro.org
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
hw/core/machine.c