From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
qemu-devel@nongnu.org
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>
Subject: Re: [PATCH 09/10] hw/core/machine: Use qemu_register_resettable for sysbus reset
Date: Wed, 21 Feb 2024 16:42:16 +0100 [thread overview]
Message-ID: <16ef6303-7527-4ab8-8a8c-62e6892963c1@linaro.org> (raw)
In-Reply-To: <20240220160622.114437-10-peter.maydell@linaro.org>
On 20/2/24 17:06, Peter Maydell wrote:
> 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>
> ---
> I believe that given we don't make much use of enter/exit phases
> currently that this is unlikely to cause unexpected regressions due
> to an accidental reset-order dependency that is no longer satisfied,
> but it's always possible...
> ---
> hw/core/machine.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index fb5afdcae4c..9ac5d5389a6 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -1577,14 +1577,13 @@ void qdev_machine_creation_done(void)
> /* TODO: once all bus devices are qdevified, this should be done
> * when bus is created by qdev.c */
> /*
> - * TODO: If we had a main 'reset container' that the whole system
> - * lived in, we could reset that using the multi-phase reset
> - * APIs. For the moment, we just reset the sysbus, which will cause
> + * This is where we arrange for the sysbus to be reset when the
> + * whole simulation is reset. In turn, resetting the sysbus will cause
> * all devices hanging off it (and all their child buses, recursively)
> * to be reset. Note that this will *not* reset any Device objects
> * which are not attached to some part of the qbus tree!
> */
> - qemu_register_reset(resettable_cold_reset_fn, sysbus_get_default());
> + qemu_register_resettable(OBJECT(sysbus_get_default()));
Correct, so:
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
But I'd rather move that call to main_system_bus_create() in
hw/core/sysbus.c, as it doesn't seem to be related to the
machine creation phases anymore. Maybe clearer to do in a
separate patch although.
> notifier_list_notify(&machine_init_done_notifiers, NULL);
>
next prev parent reply other threads:[~2024-02-21 15:47 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-20 16:06 [PATCH 00/10] reset: Make whole system three-phase-reset aware Peter Maydell
2024-02-20 16:06 ` [PATCH 01/10] hw/i386: Store pointers to IDE buses in PCMachineState Peter Maydell
2024-02-20 19:30 ` Richard Henderson
2024-02-21 13:07 ` Philippe Mathieu-Daudé
2024-02-21 13:51 ` Philippe Mathieu-Daudé
2024-02-26 13:54 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 02/10] hw/i386/pc: Do pc_cmos_init_late() from pc_machine_done() Peter Maydell
2024-02-20 19:31 ` Richard Henderson
2024-02-20 21:19 ` Peter Maydell
2024-02-20 23:10 ` Bernhard Beschow
2024-02-21 15:21 ` Philippe Mathieu-Daudé
2024-02-26 14:09 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 03/10] system/bootdevice: Don't unregister reset handler in restore_boot_order() Peter Maydell
2024-02-20 19:35 ` Richard Henderson
2024-02-26 14:16 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 04/10] include/qom/object.h: New OBJECT_DEFINE_SIMPLE_TYPE{, _WITH_INTERFACES} macros Peter Maydell
2024-02-20 19:40 ` Richard Henderson
2024-02-26 14:33 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 05/10] hw/core: Add documentation and license comments to reset.h Peter Maydell
2024-02-20 19:41 ` Richard Henderson
2024-02-26 14:27 ` Zhao Liu
2024-02-26 14:28 ` Peter Maydell
2024-02-20 16:06 ` [PATCH 06/10] hw/core: Add ResetContainer which holds objects implementing Resettable Peter Maydell
2024-02-20 19:43 ` Richard Henderson
2024-02-20 19:46 ` Richard Henderson
2024-02-20 21:20 ` Peter Maydell
2024-02-26 14:42 ` Peter Maydell
2024-02-21 15:34 ` Philippe Mathieu-Daudé
2024-02-21 16:09 ` Peter Maydell
2024-02-21 17:06 ` Philippe Mathieu-Daudé
2024-02-27 3:36 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 07/10] hw/core/reset: Add qemu_{register, unregister}_resettable() Peter Maydell
2024-02-20 19:59 ` Richard Henderson
2024-02-27 6:02 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 08/10] hw/core/reset: Implement qemu_register_reset via qemu_register_resettable Peter Maydell
2024-02-20 20:06 ` Richard Henderson
2024-02-27 6:18 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 09/10] hw/core/machine: Use qemu_register_resettable for sysbus reset Peter Maydell
2024-02-20 19:06 ` Philippe Mathieu-Daudé
2024-02-20 19:18 ` Peter Maydell
2024-02-20 20:09 ` Richard Henderson
2024-02-21 15:42 ` Philippe Mathieu-Daudé [this message]
2024-02-27 6:27 ` Zhao Liu
2024-02-20 16:06 ` [PATCH 10/10] docs/devel/reset: Update to discuss system reset Peter Maydell
2024-02-20 20:13 ` Richard Henderson
2024-02-27 6:30 ` Zhao Liu
2024-02-20 21:38 ` [PATCH 00/10] reset: Make whole system three-phase-reset aware Michael S. Tsirkin
2024-02-21 11:59 ` Mark Cave-Ayland
2024-02-26 14:50 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16ef6303-7527-4ab8-8a8c-62e6892963c1@linaro.org \
--to=philmd@linaro.org \
--cc=arei.gonglei@huawei.com \
--cc=berrange@redhat.com \
--cc=eduardo@habkost.net \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=wangyanan55@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).