Commit 7531b47c authored by Uros Bizjak's avatar Uros Bizjak Committed by Paolo Bonzini

KVM/SVM: Move vmenter.S exception fixups out of line

Avoid jump by moving exception fixups out of line.

Cc: Sean Christopherson <seanjc@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarUros Bizjak <ubizjak@gmail.com>
Message-Id: <20210226125621.111723-1-ubizjak@gmail.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent bb4cdf3a
...@@ -80,15 +80,9 @@ SYM_FUNC_START(__svm_vcpu_run) ...@@ -80,15 +80,9 @@ SYM_FUNC_START(__svm_vcpu_run)
/* Enter guest mode */ /* Enter guest mode */
sti sti
3: vmrun %_ASM_AX 1: vmrun %_ASM_AX
jmp 5f
4: cmpb $0, kvm_rebooting
jne 5f
ud2
_ASM_EXTABLE(3b, 4b)
5: 2: cli
cli
#ifdef CONFIG_RETPOLINE #ifdef CONFIG_RETPOLINE
/* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */ /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
...@@ -155,6 +149,13 @@ SYM_FUNC_START(__svm_vcpu_run) ...@@ -155,6 +149,13 @@ SYM_FUNC_START(__svm_vcpu_run)
#endif #endif
pop %_ASM_BP pop %_ASM_BP
ret ret
3: cmpb $0, kvm_rebooting
jne 2b
ud2
_ASM_EXTABLE(1b, 3b)
SYM_FUNC_END(__svm_vcpu_run) SYM_FUNC_END(__svm_vcpu_run)
/** /**
...@@ -174,18 +175,15 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) ...@@ -174,18 +175,15 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run)
#endif #endif
push %_ASM_BX push %_ASM_BX
/* Enter guest mode */ /* Move @vmcb to RAX. */
mov %_ASM_ARG1, %_ASM_AX mov %_ASM_ARG1, %_ASM_AX
/* Enter guest mode */
sti sti
1: vmrun %_ASM_AX 1: vmrun %_ASM_AX
jmp 3f
2: cmpb $0, kvm_rebooting
jne 3f
ud2
_ASM_EXTABLE(1b, 2b)
3: cli 2: cli
#ifdef CONFIG_RETPOLINE #ifdef CONFIG_RETPOLINE
/* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */ /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
...@@ -205,4 +203,11 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) ...@@ -205,4 +203,11 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run)
#endif #endif
pop %_ASM_BP pop %_ASM_BP
ret ret
3: cmpb $0, kvm_rebooting
jne 2b
ud2
_ASM_EXTABLE(1b, 3b)
SYM_FUNC_END(__svm_sev_es_vcpu_run) SYM_FUNC_END(__svm_sev_es_vcpu_run)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment