mirror of https://github.com/xemu-project/xemu.git
kvm: Set cpu_single_env only once
As we have thread-local cpu_single_env now and KVM uses exactly one thread per VCPU, we can drop the cpu_single_env updates from the loop and initialize this variable only once during setup. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
d1f8663660
commit
e479c207d7
1
cpus.c
1
cpus.c
|
@ -714,6 +714,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg)
|
|||
qemu_mutex_lock(&qemu_global_mutex);
|
||||
qemu_thread_get_self(env->thread);
|
||||
env->thread_id = qemu_get_thread_id();
|
||||
cpu_single_env = env;
|
||||
|
||||
r = kvm_init_vcpu(env);
|
||||
if (r < 0) {
|
||||
|
|
|
@ -1118,8 +1118,6 @@ int kvm_cpu_exec(CPUState *env)
|
|||
return EXCP_HLT;
|
||||
}
|
||||
|
||||
cpu_single_env = env;
|
||||
|
||||
do {
|
||||
if (env->kvm_vcpu_dirty) {
|
||||
kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE);
|
||||
|
@ -1136,13 +1134,11 @@ int kvm_cpu_exec(CPUState *env)
|
|||
*/
|
||||
qemu_cpu_kick_self();
|
||||
}
|
||||
cpu_single_env = NULL;
|
||||
qemu_mutex_unlock_iothread();
|
||||
|
||||
run_ret = kvm_vcpu_ioctl(env, KVM_RUN, 0);
|
||||
|
||||
qemu_mutex_lock_iothread();
|
||||
cpu_single_env = env;
|
||||
kvm_arch_post_run(env, run);
|
||||
|
||||
kvm_flush_coalesced_mmio_buffer();
|
||||
|
@ -1206,7 +1202,6 @@ int kvm_cpu_exec(CPUState *env)
|
|||
}
|
||||
|
||||
env->exit_request = 0;
|
||||
cpu_single_env = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue