diff mbox

kvm: vmx: Avoid a taken branch on the VM-entry path

Message ID 20180720214244.92077-1-pshier@google.com (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Shier July 20, 2018, 9:42 p.m. UTC
From: Jim Mattson <jmattson@google.com>

VMRESUME is much more common than VMLAUNCH, so put VMRESUME on the
fall-through path.

Signed-off-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Peter Shier <pshier@google.com>
---
 arch/x86/kvm/vmx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Wanpeng Li July 23, 2018, 2:04 a.m. UTC | #1
On Sat, 21 Jul 2018 at 05:44, Peter Shier <pshier@google.com> wrote:
>
> From: Jim Mattson <jmattson@google.com>
>
> VMRESUME is much more common than VMLAUNCH, so put VMRESUME on the
> fall-through path.
>
> Signed-off-by: Jim Mattson <jmattson@google.com>
> Signed-off-by: Peter Shier <pshier@google.com>

Reviewed-by: Wanpeng Li <wanpengli@tencent.com>

> ---
>  arch/x86/kvm/vmx.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 1689f433f3a08..33c5ec426206a 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -10064,10 +10064,10 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
>                 "mov %c[rcx](%0), %%" _ASM_CX " \n\t" /* kills %0 (ecx) */
>
>                 /* Enter guest mode */
> -               "jne 1f \n\t"
> -               __ex(ASM_VMX_VMLAUNCH) "\n\t"
> +               "je 1f\n\t"
> +               __ex(ASM_VMX_VMRESUME) "\n\t"
>                 "jmp 2f \n\t"
> -               "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
> +               "1: " __ex(ASM_VMX_VMLAUNCH) "\n\t"
>                 "2: "
>                 /* Save guest registers, load host registers, keep flags */
>                 "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
> --
> 2.18.0.233.g985f88cf7e-goog
David Hildenbrand July 30, 2018, 8:42 a.m. UTC | #2
On 20.07.2018 23:42, Peter Shier wrote:
> From: Jim Mattson <jmattson@google.com>
> 
> VMRESUME is much more common than VMLAUNCH, so put VMRESUME on the
> fall-through path.
> 
> Signed-off-by: Jim Mattson <jmattson@google.com>
> Signed-off-by: Peter Shier <pshier@google.com>
> ---
>  arch/x86/kvm/vmx.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 1689f433f3a08..33c5ec426206a 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -10064,10 +10064,10 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
>  		"mov %c[rcx](%0), %%" _ASM_CX " \n\t" /* kills %0 (ecx) */
>  
>  		/* Enter guest mode */
> -		"jne 1f \n\t"
> -		__ex(ASM_VMX_VMLAUNCH) "\n\t"
> +		"je 1f\n\t"
> +		__ex(ASM_VMX_VMRESUME) "\n\t"
>  		"jmp 2f \n\t"
> -		"1: " __ex(ASM_VMX_VMRESUME) "\n\t"
> +		"1: " __ex(ASM_VMX_VMLAUNCH) "\n\t"
>  		"2: "
>  		/* Save guest registers, load host registers, keep flags */
>  		"mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
> 

Reviewed-by: David Hildenbrand <david@redhat.com>
diff mbox

Patch

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 1689f433f3a08..33c5ec426206a 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -10064,10 +10064,10 @@  static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
 		"mov %c[rcx](%0), %%" _ASM_CX " \n\t" /* kills %0 (ecx) */
 
 		/* Enter guest mode */
-		"jne 1f \n\t"
-		__ex(ASM_VMX_VMLAUNCH) "\n\t"
+		"je 1f\n\t"
+		__ex(ASM_VMX_VMRESUME) "\n\t"
 		"jmp 2f \n\t"
-		"1: " __ex(ASM_VMX_VMRESUME) "\n\t"
+		"1: " __ex(ASM_VMX_VMLAUNCH) "\n\t"
 		"2: "
 		/* Save guest registers, load host registers, keep flags */
 		"mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"