]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: SVM: move VMLOAD/VMSAVE to C code
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 9 Feb 2021 12:10:43 +0000 (07:10 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 26 Feb 2021 13:36:06 +0000 (08:36 -0500)
Thanks to the new macros that handle exception handling for SVM
instructions, it is easier to just do the VMLOAD/VMSAVE in C.
This is safe, as shown by the fact that the host reload is
already done outside the assembly source.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm/svm.c
arch/x86/kvm/svm/vmenter.S

index 1c62d3ec7e5358c2804a41b3f652a9ecb3c18b01..a0df44f6c239ef9697030297191fb2cc2c16bd90 100644 (file)
@@ -3719,7 +3719,9 @@ static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu)
        } else {
                struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);
 
+               vmload(svm->vmcb_pa);
                __svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&vcpu->arch.regs);
+               vmsave(svm->vmcb_pa);
 
                vmload(__sme_page_pa(sd->save_area));
        }
index 6feb8c08f45abd9f56ab5e09c8348ad95102befc..343108bf0f8c85416001883685aa6ae738c499e8 100644 (file)
@@ -79,12 +79,6 @@ SYM_FUNC_START(__svm_vcpu_run)
 
        /* Enter guest mode */
        sti
-1:     vmload %_ASM_AX
-       jmp 3f
-2:     cmpb $0, kvm_rebooting
-       jne 3f
-       ud2
-       _ASM_EXTABLE(1b, 2b)
 
 3:     vmrun %_ASM_AX
        jmp 5f
@@ -93,13 +87,7 @@ SYM_FUNC_START(__svm_vcpu_run)
        ud2
        _ASM_EXTABLE(3b, 4b)
 
-5:     vmsave %_ASM_AX
-       jmp 7f
-6:     cmpb $0, kvm_rebooting
-       jne 7f
-       ud2
-       _ASM_EXTABLE(5b, 6b)
-7:
+5:
        cli
 
 #ifdef CONFIG_RETPOLINE