diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2015-04-27 17:00:33 -0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2015-07-09 15:20:39 +0200 |
commit | 291135b5da228e58900c120e12354cc0a23608e3 (patch) | |
tree | 6eed41ee609dc3dbd3a1509f0a5eccaed39229cf | |
parent | 7c39163e389e6e6e16965606fb5a26abcdb6ad73 (diff) | |
download | qemu-291135b5da228e58900c120e12354cc0a23608e3.zip qemu-291135b5da228e58900c120e12354cc0a23608e3.tar.gz qemu-291135b5da228e58900c120e12354cc0a23608e3.tar.bz2 |
cpu: Reorder cpu->as, cpu->thread_id, cpu->memory_dispatch init
Instead of initializing cpu->as, cpu->thread_id, and reloading memory
map while holding cpu_list_lock(), do it earlier, before locking the CPU
list and initializing cpu_index.
This allows the code handling cpu_index and global CPU list to be
isolated from the rest.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | exec.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -533,6 +533,12 @@ void cpu_exec_init(CPUArchState *env) CPUState *some_cpu; int cpu_index; +#ifndef CONFIG_USER_ONLY + cpu->as = &address_space_memory; + cpu->thread_id = qemu_get_thread_id(); + cpu_reload_memory_map(cpu); +#endif + #if defined(CONFIG_USER_ONLY) cpu_list_lock(); #endif @@ -541,11 +547,6 @@ void cpu_exec_init(CPUArchState *env) cpu_index++; } cpu->cpu_index = cpu_index; -#ifndef CONFIG_USER_ONLY - cpu->as = &address_space_memory; - cpu->thread_id = qemu_get_thread_id(); - cpu_reload_memory_map(cpu); -#endif QTAILQ_INSERT_TAIL(&cpus, cpu, node); #if defined(CONFIG_USER_ONLY) cpu_list_unlock(); |