KVM: SVM: Defer nmi processing until switch to host state is complete

If we stgi() too soon, nmis can reach the processor even though interrupts
are disabled, catching it in a half-switched state.  Delay the stgi() until
we're done switching.

Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
Avi Kivity 2007-11-07 17:14:18 +02:00
parent 70433389cc
commit 56ba47ddbd

View File

@ -1585,10 +1585,6 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
#endif
: "cc", "memory" );
local_irq_disable();
stgi();
if ((svm->vmcb->save.dr7 & 0xff))
load_db_regs(svm->host_db_regs);
@ -1605,6 +1601,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
reload_tss(vcpu);
local_irq_disable();
stgi();
svm->next_rip = 0;
}