diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-03-03 11:36:09 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-03-03 13:21:53 +0000 |
commit | 576a94d8bcaa1bb07a81d9ffd2cf76095a66ad9a (patch) | |
tree | 879706ba4e400072ae763c7c520292a85d9fe4d7 /vl.c | |
parent | 3180aadb1f00fa0f0b47bccbcae5b1d47dc5ff74 (diff) | |
download | qemu-576a94d8bcaa1bb07a81d9ffd2cf76095a66ad9a.zip qemu-576a94d8bcaa1bb07a81d9ffd2cf76095a66ad9a.tar.gz qemu-576a94d8bcaa1bb07a81d9ffd2cf76095a66ad9a.tar.bz2 |
vl: take iothread lock very early
If the iothread lock isn't taken by the main thread, the RCU callbacks
might run concurrently with the main thread. QEMU's not ready for that.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Gonglei <arei.gonglei@huawei.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -2767,6 +2767,9 @@ int main(int argc, char **argv, char **envp) FILE *vmstate_dump_file = NULL; Error *main_loop_err = NULL; + qemu_init_cpu_loop(); + qemu_mutex_lock_iothread(); + atexit(qemu_run_exit_notifiers); error_set_progname(argv[0]); qemu_init_exec_dir(argv[0]); @@ -4102,9 +4105,6 @@ int main(int argc, char **argv, char **envp) os_set_line_buffering(); - qemu_init_cpu_loop(); - qemu_mutex_lock_iothread(); - #ifdef CONFIG_SPICE /* spice needs the timers to be initialized by this point */ qemu_spice_init(); |