[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] Fix duplicate device reset
From: |
Isaku Yamahata |
Subject: |
Re: [Qemu-devel] [PATCH] Fix duplicate device reset |
Date: |
Tue, 19 Jul 2011 11:39:10 +0900 |
User-agent: |
Mutt/1.5.19 (2009-01-05) |
Thank you for addressing this. Similar patches were proposed and
weren't merged unfortunately.
The reason why the qdev_register_reset() in vl.c is to keep the reset order.
The reset for main_system_bus shouldn't registered by qbus_create_inplace().
But the check, bus != main_system_bus, doesn't work as intended because
main_system_bus is NULL in early qdev creation.
So there are possible ways for the fix.
- Don't care the reset order
your patch +
remove "if (bus != main_system_bus)" in qbus_create_inplace()
- keep the reset order
- instantiate main_system_bus early.
So the check, bus != main_system_bus in qbus_create_inplace(), will work.
or
- fix the check, bus != main_system_bus in qbus_create_inplace(), somehow
thanks,
On Mon, Jul 18, 2011 at 10:22:26PM +0200, Stefan Weil wrote:
> qbus_reset_all_fn was registered twice, so a lot of device reset
> functions were also called twice when QEMU started.
>
> It is sufficient to call sysbus_get_default() which will
> register qbus_reset_all_fn.
>
> Signed-off-by: Stefan Weil <address@hidden>
> ---
> vl.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index fcd7395..fb2f6db 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3301,7 +3301,7 @@ int main(int argc, char **argv, char **envp)
>
> /* TODO: once all bus devices are qdevified, this should be done
> * when bus is created by qdev.c */
> - qemu_register_reset(qbus_reset_all_fn, sysbus_get_default());
> + sysbus_get_default();
> qemu_run_machine_init_done_notifiers();
>
> qemu_system_reset(VMRESET_SILENT);
> --
> 1.7.2.5
>
--
yamahata