> On 9 Nov 2018, at 19:35, Jim Mattson <jmattson@xxxxxxxxxx> wrote: > > Let the guest read the IA32_TSC MSR with the generic RDMSR instruction > as well as the specific RDTSC(P) instructions. Note that the hardware > applies the TSC multiplier and offset (when applicable) to the result of > RDMSR(IA32_TSC), just as it does to the result of RDTSC(P). Yep. This is explicitly specified in Intel SDM 25.3 CHANGES TO INSTRUCTIONS BEHAVIOR IN VMX NON-ROOT OPERATION at the RDMSR bullet. > > Signed-off-by: Jim Mattson <jmattson@xxxxxxxxxx> > Reviewed-by: Peter Shier <pshier@xxxxxxxxxx> > Reviewed-by: Marc Orr <marcorr@xxxxxxxxxx> > --- > arch/x86/kvm/vmx.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index ccc6a01eb4f4..b9602d000fbf 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -11521,6 +11521,7 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) > goto free_msrs; > > msr_bitmap = vmx->vmcs01.msr_bitmap; > + vmx_disable_intercept_for_msr(msr_bitmap, MSR_IA32_TSC, MSR_TYPE_R); > vmx_disable_intercept_for_msr(msr_bitmap, MSR_FS_BASE, MSR_TYPE_RW); > vmx_disable_intercept_for_msr(msr_bitmap, MSR_GS_BASE, MSR_TYPE_RW); > vmx_disable_intercept_for_msr(msr_bitmap, MSR_KERNEL_GS_BASE, MSR_TYPE_RW); > -- > 2.19.1.930.g4563a0d9d0-goog > Reviewed-by: Liran Alon <liran.alon@xxxxxxxxxx>