]> Pileus Git - ~andy/linux/blobdiff - arch/x86/kvm/svm.c
KVM: SVM: Move guest register save out of interrupts disabled section
[~andy/linux] / arch / x86 / kvm / svm.c
index 93e8120b80214d4cc2089daa859bce985bb41f02..80354965f7fd9cba61de2403f41a36684bc1f9e3 100644 (file)
@@ -3412,11 +3412,6 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
 #endif
                );
 
-       vcpu->arch.cr2 = svm->vmcb->save.cr2;
-       vcpu->arch.regs[VCPU_REGS_RAX] = svm->vmcb->save.rax;
-       vcpu->arch.regs[VCPU_REGS_RSP] = svm->vmcb->save.rsp;
-       vcpu->arch.regs[VCPU_REGS_RIP] = svm->vmcb->save.rip;
-
        load_host_msrs(vcpu);
        kvm_load_ldt(ldt_selector);
        loadsegment(fs, fs_selector);
@@ -3433,6 +3428,11 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
 
        stgi();
 
+       vcpu->arch.cr2 = svm->vmcb->save.cr2;
+       vcpu->arch.regs[VCPU_REGS_RAX] = svm->vmcb->save.rax;
+       vcpu->arch.regs[VCPU_REGS_RSP] = svm->vmcb->save.rsp;
+       vcpu->arch.regs[VCPU_REGS_RIP] = svm->vmcb->save.rip;
+
        sync_cr8_to_lapic(vcpu);
 
        svm->next_rip = 0;