Patchwork [3.8.y.z,extended,stable] Patch "KVM: VMX: fix halt emulation while emulating invalid guest sate" has been added to staging queue

mail settings
Submitter Kamal Mostafa
Date May 22, 2013, 9:55 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/245740/
State New
Headers show


Kamal Mostafa - May 22, 2013, 9:55 p.m.
This is a note to let you know that I have just added a patch titled

    KVM: VMX: fix halt emulation while emulating invalid guest sate

to the linux-3.8.y-queue branch of the 3.8.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.8.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.8.y.z tree, see



From ea89e81bf579685a95fe16717ed9fec0e5457f34 Mon Sep 17 00:00:00 2001
From: Gleb Natapov <>
Date: Wed, 8 May 2013 18:38:44 +0300
Subject: KVM: VMX: fix halt emulation while emulating invalid guest sate

commit 8d76c49e9ffeee839bc0b7a3278a23f99101263e upstream.

The invalid guest state emulation loop does not check halt_request
which causes 100% cpu loop while guest is in halt and in invalid
state, but more serious issue is that this leaves halt_request set, so
random instruction emulated by vm86 #GP exit can be interpreted
as halt which causes guest hang. Fix both problems by handling
halt_request in emulation loop.

Reported-by: Tomas Papan <>
Tested-by: Tomas Papan <>
Reviewed-by: Paolo Bonzini <>
Signed-off-by: Gleb Natapov <>
Signed-off-by: Kamal Mostafa <>
 arch/x86/kvm/vmx.c | 6 ++++++
 1 file changed, 6 insertions(+)



diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 9120ae1..1b29ec6 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -5059,6 +5059,12 @@  static int handle_invalid_guest_state(struct kvm_vcpu *vcpu)
 			return 0;

+		if (vcpu->arch.halt_request) {
+			vcpu->arch.halt_request = 0;
+			ret = kvm_emulate_halt(vcpu);
+			goto out;
+		}
 		if (signal_pending(current))
 			goto out;
 		if (need_resched())