mirror of https://gitee.com/openkylin/qemu.git
kvm: synchronize state from cpu context
It is not safe to retrieve the KVM internal state of a given cpu while its potentially modifying it. Queue the request to run on cpu context, similarly to qemu-kvm. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
e82bcec25f
commit
2705d56a6a
10
kvm-all.c
10
kvm-all.c
|
@ -796,14 +796,22 @@ void kvm_flush_coalesced_mmio_buffer(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
void kvm_cpu_synchronize_state(CPUState *env)
|
||||
static void do_kvm_cpu_synchronize_state(void *_env)
|
||||
{
|
||||
CPUState *env = _env;
|
||||
|
||||
if (!env->kvm_vcpu_dirty) {
|
||||
kvm_arch_get_registers(env);
|
||||
env->kvm_vcpu_dirty = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void kvm_cpu_synchronize_state(CPUState *env)
|
||||
{
|
||||
if (!env->kvm_vcpu_dirty)
|
||||
run_on_cpu(env, do_kvm_cpu_synchronize_state, env);
|
||||
}
|
||||
|
||||
void kvm_cpu_synchronize_post_reset(CPUState *env)
|
||||
{
|
||||
kvm_arch_put_registers(env, KVM_PUT_RESET_STATE);
|
||||
|
|
Loading…
Reference in New Issue