KVM: Fix race between timer migration and vcpu migration
authorMarcelo Tosatti <mtosatti@redhat.com>
Fri, 6 Jun 2008 19:37:35 +0000 (16:37 -0300)
committerAvi Kivity <avi@qumranet.com>
Tue, 24 Jun 2008 09:16:52 +0000 (12:16 +0300)
commitd4acf7e7abe45457e751525a2a4d5b693dfdd597
tree2ff1cf6f59b0591ea39c0457705188d5f46cb118
parent62786b9e81a2dbe9c073a2ade52d33a2627d6d85
KVM: Fix race between timer migration and vcpu migration

A guest vcpu instance can be scheduled to a different physical CPU
between the test for KVM_REQ_MIGRATE_TIMER and local_irq_disable().

If that happens, the timer will only be migrated to the current pCPU on
the next exit, meaning that guest LAPIC timer event can be delayed until
a host interrupt is triggered.

Fix it by cancelling guest entry if any vcpu request is pending.  This
has the side effect of nicely consolidating vcpu->requests checks.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
arch/x86/kvm/x86.c