Message ID | 20221104161513.2455862-7-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | reset: Remove some deprecated APIs | expand |
On 4.11.2022 17:15, Peter Maydell wrote: > In the vmbus code we currently use the legacy functions > qdev_reset_all() and qbus_reset_all(). These perform a recursive > reset, starting from either a qbus or a qdev. However they do not > permit any of the devices in the tree to use three-phase reset, > because device reset goes through the device_legacy_reset() function > that only calls the single DeviceClass::reset method. > > Switch to using the device_cold_reset() and bus_cold_reset() > functions. These also perform a recursive reset, where first the > children are reset and then finally the parent, but they use the new > (...in 2020...) Resettable mechanism, which supports both the old > style single-reset method and also the new 3-phase reset handling. > > This should be a no-behaviour-change commit which just reduces the > use of a deprecated API. > > Commit created with: > sed -i -e 's/qdev_reset_all/device_cold_reset/g;s/qbus_reset_all/bus_cold_reset/g' hw/hyperv/*.c > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > hw/hyperv/vmbus.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c > index 30bc04e1c4c..f345f310b0f 100644 > --- a/hw/hyperv/vmbus.c > +++ b/hw/hyperv/vmbus.c > @@ -1578,7 +1578,7 @@ static bool vmbus_initialized(VMBus *vmbus) > > static void vmbus_reset_all(VMBus *vmbus) > { > - qbus_reset_all(BUS(vmbus)); > + bus_cold_reset(BUS(vmbus)); > } > > static void post_msg(VMBus *vmbus, void *msgdata, uint32_t msglen) > @@ -2035,7 +2035,7 @@ static void vdev_reset_on_close(VMBusDevice *vdev) > } > > /* all channels closed -- reset device */ > - qdev_reset_all(DEVICE(vdev)); > + device_cold_reset(DEVICE(vdev)); > } > > static void handle_close_channel(VMBus *vmbus, vmbus_message_close_channel *msg, Resetting a guest with VMBus still works fine with this patch, so: Reviewed-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Thanks, Maciej
On 4/11/22 17:15, Peter Maydell wrote: > In the vmbus code we currently use the legacy functions > qdev_reset_all() and qbus_reset_all(). These perform a recursive > reset, starting from either a qbus or a qdev. However they do not > permit any of the devices in the tree to use three-phase reset, > because device reset goes through the device_legacy_reset() function > that only calls the single DeviceClass::reset method. > > Switch to using the device_cold_reset() and bus_cold_reset() > functions. These also perform a recursive reset, where first the > children are reset and then finally the parent, but they use the new > (...in 2020...) Resettable mechanism, which supports both the old > style single-reset method and also the new 3-phase reset handling. > > This should be a no-behaviour-change commit which just reduces the > use of a deprecated API. > > Commit created with: > sed -i -e 's/qdev_reset_all/device_cold_reset/g;s/qbus_reset_all/bus_cold_reset/g' hw/hyperv/*.c > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > hw/hyperv/vmbus.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index 30bc04e1c4c..f345f310b0f 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -1578,7 +1578,7 @@ static bool vmbus_initialized(VMBus *vmbus) static void vmbus_reset_all(VMBus *vmbus) { - qbus_reset_all(BUS(vmbus)); + bus_cold_reset(BUS(vmbus)); } static void post_msg(VMBus *vmbus, void *msgdata, uint32_t msglen) @@ -2035,7 +2035,7 @@ static void vdev_reset_on_close(VMBusDevice *vdev) } /* all channels closed -- reset device */ - qdev_reset_all(DEVICE(vdev)); + device_cold_reset(DEVICE(vdev)); } static void handle_close_channel(VMBus *vmbus, vmbus_message_close_channel *msg,
In the vmbus code we currently use the legacy functions qdev_reset_all() and qbus_reset_all(). These perform a recursive reset, starting from either a qbus or a qdev. However they do not permit any of the devices in the tree to use three-phase reset, because device reset goes through the device_legacy_reset() function that only calls the single DeviceClass::reset method. Switch to using the device_cold_reset() and bus_cold_reset() functions. These also perform a recursive reset, where first the children are reset and then finally the parent, but they use the new (...in 2020...) Resettable mechanism, which supports both the old style single-reset method and also the new 3-phase reset handling. This should be a no-behaviour-change commit which just reduces the use of a deprecated API. Commit created with: sed -i -e 's/qdev_reset_all/device_cold_reset/g;s/qbus_reset_all/bus_cold_reset/g' hw/hyperv/*.c Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/hyperv/vmbus.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)