aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/kvm_main.c
diff options
context:
space:
mode:
authorEddie Dong <eddie.dong@intel.com>2007-09-03 09:56:58 -0400
committerAvi Kivity <avi@qumranet.com>2007-10-13 04:18:26 -0400
commit1b9778dae71dc64d3678d766c0f1fbed79c80f9f (patch)
tree3196bbfe474119a849f35aefddb5e0922205850f /drivers/kvm/kvm_main.c
parent6e5d865c0b9679b00b5e5f0754c9fc2b6b9894d6 (diff)
KVM: Keep track of missed timer irq injections
APIC timer IRQ is set every time when a certain period expires at host time, but the guest may be descheduled at that time and thus the irq be overwritten by later fire. This patch keep track of firing irq numbers and decrease only when the IRQ is injected to guest or buffered in APIC. Signed-off-by: Yaozu (Eddie) Dong <Eddie.Dong@intel.com> Signed-off-by: Qing He <qing.he@intel.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/kvm_main.c')
-rw-r--r--drivers/kvm/kvm_main.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index d56964a6eb80..8f8bfc9160e3 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -283,6 +283,8 @@ EXPORT_SYMBOL_GPL(kvm_vcpu_init);
283void kvm_vcpu_uninit(struct kvm_vcpu *vcpu) 283void kvm_vcpu_uninit(struct kvm_vcpu *vcpu)
284{ 284{
285 kvm_mmu_destroy(vcpu); 285 kvm_mmu_destroy(vcpu);
286 if (vcpu->apic)
287 hrtimer_cancel(&vcpu->apic->timer.dev);
286 kvm_free_apic(vcpu->apic); 288 kvm_free_apic(vcpu->apic);
287 free_page((unsigned long)vcpu->pio_data); 289 free_page((unsigned long)vcpu->pio_data);
288 free_page((unsigned long)vcpu->run); 290 free_page((unsigned long)vcpu->run);