From 5e7a576dbee5cef13e02991c116ee6688002869c Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Thu, 18 Oct 2007 15:19:01 +0200 Subject: [PATCH] --- yaml --- r: 72132 b: refs/heads/master c: 0552f73b9a81d39d50b71a5c06cf36efff80b6fd h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/kvm/kvm_main.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 6d9314ce33d5..6ccb93772cd1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e62417bf317504c0b85e0d7abd236f334f54eaf +refs/heads/master: 0552f73b9a81d39d50b71a5c06cf36efff80b6fd diff --git a/trunk/drivers/kvm/kvm_main.c b/trunk/drivers/kvm/kvm_main.c index af2d288c881d..8c458f262872 100644 --- a/trunk/drivers/kvm/kvm_main.c +++ b/trunk/drivers/kvm/kvm_main.c @@ -2054,12 +2054,21 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) kvm_x86_ops->run(vcpu, kvm_run); - kvm_guest_exit(); vcpu->guest_mode = 0; local_irq_enable(); ++vcpu->stat.exits; + /* + * We must have an instruction between local_irq_enable() and + * kvm_guest_exit(), so the timer interrupt isn't delayed by + * the interrupt shadow. The stat.exits increment will do nicely. + * But we need to prevent reordering, hence this barrier(): + */ + barrier(); + + kvm_guest_exit(); + preempt_enable(); /*