Re: [PATCH v4 1/5] kvm: vmx: Set IA32_TSC_AUX for legacy mode guests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 05, 2018 at 03:28:58PM -0800, Jim Mattson wrote:
> RDTSCP is supported in legacy mode as well as long mode. The
> IA32_TSC_AUX MSR should be set to the correct guest value before
> entering any guest that supports RDTSCP.

Not that it matters, but even the 64-bit case was wrong since it
was being gated by the (vmx->vcpu.arch.efer & EFER_SCE) check.

Reviewed-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx>

> 
> Fixes: 4e47c7a6d714 ("KVM: VMX: Add instruction rdtscp support for guest")
> Signed-off-by: Jim Mattson <jmattson@xxxxxxxxxx>
> Reviewed-by: Peter Shier <pshier@xxxxxxxxxx>
> Reviewed-by: Marc Orr <marcorr@xxxxxxxxxx>
> Reviewed-by: Liran Alon <liran.alon@xxxxxxxxxx>
> ---
>  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 c379d0bfdcba9..ad1753e8a85e5 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -3436,9 +3436,6 @@ static void setup_msrs(struct vcpu_vmx *vmx)
>  		index = __find_msr_index(vmx, MSR_CSTAR);
>  		if (index >= 0)
>  			move_msr_up(vmx, index, save_nmsrs++);
> -		index = __find_msr_index(vmx, MSR_TSC_AUX);
> -		if (index >= 0 && guest_cpuid_has(&vmx->vcpu, X86_FEATURE_RDTSCP))
> -			move_msr_up(vmx, index, save_nmsrs++);
>  		/*
>  		 * MSR_STAR is only needed on long mode guests, and only
>  		 * if efer.sce is enabled.
> @@ -3451,6 +3448,9 @@ static void setup_msrs(struct vcpu_vmx *vmx)
>  	index = __find_msr_index(vmx, MSR_EFER);
>  	if (index >= 0 && update_transition_efer(vmx, index))
>  		move_msr_up(vmx, index, save_nmsrs++);
> +	index = __find_msr_index(vmx, MSR_TSC_AUX);
> +	if (index >= 0 && guest_cpuid_has(&vmx->vcpu, X86_FEATURE_RDTSCP))
> +		move_msr_up(vmx, index, save_nmsrs++);
>  
>  	vmx->save_nmsrs = save_nmsrs;
>  	vmx->guest_msrs_dirty = true;
> -- 
> 2.20.0.rc1.387.gf8505762e3-goog
> 



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux