On Fri, Feb 10, 2012 at 18:31, Jan Kiszka <jan.kiszka@xxxxxxxxxxx> wrote: > 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. I don't think this is correct. Maybe you missed the part that sets cpu_single_env to NULL, which I think is to annoy broken code that assumes that some CPU state is always globally available. This is not true for monitor context. > Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > --- > cpus.c | 1 + > kvm-all.c | 5 ----- > 2 files changed, 1 insertions(+), 5 deletions(-) > > diff --git a/cpus.c b/cpus.c > index f45a438..d0c8340 100644 > --- a/cpus.c > +++ b/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) { > diff --git a/kvm-all.c b/kvm-all.c > index c4babda..e2cbc03 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -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; > } > > -- > 1.7.3.4 > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html