aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2009-08-31 12:09:49 +0300
committerAvi Kivity <avi@redhat.com>2009-08-31 12:34:43 +0300
commit54d2473ed6e9733b508a2dcc589435779e2cc7f0 (patch)
tree44c276f2a691a4eb7c4d1bc96daaeb917dbf7b52 /hw
parentMerge branch 'upstream-merge' (diff)
downloadqemu-kvm-54d2473ed6e9733b508a2dcc589435779e2cc7f0.tar.gz
qemu-kvm-54d2473ed6e9733b508a2dcc589435779e2cc7f0.tar.bz2
qemu-kvm-54d2473ed6e9733b508a2dcc589435779e2cc7f0.zip
Fix mpstate reloads
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/apic.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/apic.c b/hw/apic.c
index 18db3be4e..68e5de379 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -488,6 +488,7 @@ void apic_init_reset(CPUState *env)
if (!s)
return;
+ cpu_synchronize_state(env);
s->tpr = 0;
s->spurious_vec = 0xff;
s->log_dest = 0;
@@ -507,6 +508,10 @@ void apic_init_reset(CPUState *env)
s->wait_for_sipi = 1;
env->halted = !(s->apicbase & MSR_IA32_APICBASE_BSP);
+#ifdef KVM_CAP_MP_STATE
+ env->mp_state
+ = env->halted ? KVM_MP_STATE_INIT_RECEIVED : KVM_MP_STATE_RUNNABLE;
+#endif
}
static void apic_startup(APICState *s, int vector_num)