From: Avi Kivity Date: Tue, 15 Jan 2008 16:27:32 +0000 (+0200) Subject: KVM: Fix unbounded preemption latency X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=6c14280125a374d4c279a68276f97245e03e3f68;p=openwrt%2Fstaging%2Fblogic.git KVM: Fix unbounded preemption latency When preparing to enter the guest, if an interrupt comes in while preemption is disabled but interrupts are still enabled, we miss a preemption point. Fix by explicitly checking whether we need to reschedule. Signed-off-by: Thomas Gleixner Signed-off-by: Avi Kivity --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 77d57ff3d74e..f0493e7dcf0c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2535,6 +2535,13 @@ again: local_irq_disable(); + if (need_resched()) { + local_irq_enable(); + preempt_enable(); + r = 1; + goto out; + } + if (signal_pending(current)) { local_irq_enable(); preempt_enable();