clear PF_VCPU in kvm_guest_exit() and move kvm_guest_exit() after local_irq_enable(). According comments from Avi, we can clear PF_VCPU in kvm_guest_exit if we move it after local_irq_enable(). http://lkml.org/lkml/2007/10/15/114 To simplify s390 port, we don't clear it in account_system_time(). http://lkml.org/lkml/2007/10/15/183 Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net> --- drivers/kvm/kvm.h | 1 + drivers/kvm/kvm_main.c | 3 ++- kernel/sched.c | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h index e9dbf67..e8b4902 100644 --- a/drivers/kvm/kvm.h +++ b/drivers/kvm/kvm.h @@ -677,6 +677,7 @@ static inline void kvm_guest_enter(void) static inline void kvm_guest_exit(void) { + current->flags &= ~PF_VCPU; } static inline int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t gva, diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index 87275be..a9db477 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c @@ -2194,12 +2194,13 @@ again: kvm_x86_ops->run(vcpu, kvm_run); - kvm_guest_exit(); vcpu->guest_mode = 0; local_irq_enable(); ++vcpu->stat.exits; + kvm_guest_exit(); + preempt_enable(); /* diff --git a/kernel/sched.c b/kernel/sched.c index b27ab3e..57fac22 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -3315,7 +3315,6 @@ void account_system_time(struct task_struct *p, int hardirq_offset, #ifdef CONFIG_GUEST_ACCOUNTING if (p->flags & PF_VCPU) { account_guest_time(p, cputime); - p->flags &= ~PF_VCPU; return; } #endif -- 1.5.2.4 -
| Linus Torvalds | Re: LSM conversion to static interface |
| Ingo Molnar | [patch 03/13] syslets: generic kernel bits |
| Ingo Molnar | Re: [PATCH 6/6] sched: disabled rt-bandwidth by default |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
git: | |
| David Miller | [GIT]: Networking |
| Gregory Haskins | [RFC PATCH 00/17] virtual-bus |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
