|
@@ -1098,7 +1098,7 @@ static int kvm_guest_time_update(struct kvm_vcpu *v)
|
|
|
|
|
|
/* Keep irq disabled to prevent changes to the clock */
|
|
/* Keep irq disabled to prevent changes to the clock */
|
|
local_irq_save(flags);
|
|
local_irq_save(flags);
|
|
- kvm_get_msr(v, MSR_IA32_TSC, &tsc_timestamp);
|
|
|
|
|
|
+ tsc_timestamp = kvm_x86_ops->read_l1_tsc(v);
|
|
kernel_ns = get_kernel_ns();
|
|
kernel_ns = get_kernel_ns();
|
|
this_tsc_khz = vcpu_tsc_khz(v);
|
|
this_tsc_khz = vcpu_tsc_khz(v);
|
|
if (unlikely(this_tsc_khz == 0)) {
|
|
if (unlikely(this_tsc_khz == 0)) {
|
|
@@ -2218,7 +2218,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
|
|
s64 tsc_delta;
|
|
s64 tsc_delta;
|
|
u64 tsc;
|
|
u64 tsc;
|
|
|
|
|
|
- kvm_get_msr(vcpu, MSR_IA32_TSC, &tsc);
|
|
|
|
|
|
+ tsc = kvm_x86_ops->read_l1_tsc(vcpu);
|
|
tsc_delta = !vcpu->arch.last_guest_tsc ? 0 :
|
|
tsc_delta = !vcpu->arch.last_guest_tsc ? 0 :
|
|
tsc - vcpu->arch.last_guest_tsc;
|
|
tsc - vcpu->arch.last_guest_tsc;
|
|
|
|
|
|
@@ -2242,7 +2242,7 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
|
|
{
|
|
{
|
|
kvm_x86_ops->vcpu_put(vcpu);
|
|
kvm_x86_ops->vcpu_put(vcpu);
|
|
kvm_put_guest_fpu(vcpu);
|
|
kvm_put_guest_fpu(vcpu);
|
|
- kvm_get_msr(vcpu, MSR_IA32_TSC, &vcpu->arch.last_guest_tsc);
|
|
|
|
|
|
+ vcpu->arch.last_guest_tsc = kvm_x86_ops->read_l1_tsc(vcpu);
|
|
}
|
|
}
|
|
|
|
|
|
static int is_efer_nx(void)
|
|
static int is_efer_nx(void)
|
|
@@ -5729,7 +5729,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
|
|
if (hw_breakpoint_active())
|
|
if (hw_breakpoint_active())
|
|
hw_breakpoint_restore();
|
|
hw_breakpoint_restore();
|
|
|
|
|
|
- kvm_get_msr(vcpu, MSR_IA32_TSC, &vcpu->arch.last_guest_tsc);
|
|
|
|
|
|
+ vcpu->arch.last_guest_tsc = kvm_x86_ops->read_l1_tsc(vcpu);
|
|
|
|
|
|
vcpu->mode = OUTSIDE_GUEST_MODE;
|
|
vcpu->mode = OUTSIDE_GUEST_MODE;
|
|
smp_wmb();
|
|
smp_wmb();
|