forked from Minki/linux
KVM: x86: Move TSC reset out of vmcb_init
The VMCB is reset whenever we receive a startup IPI, so Linux is setting TSC back to zero happens very late in the boot process and destabilizing the TSC. Instead, just set TSC to zero once at VCPU creation time. Why the separate patch? So git-bisect is your friend. Signed-off-by: Zachary Amsden <zamsden@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
58877679fd
commit
47008cd887
@ -766,7 +766,6 @@ static void init_vmcb(struct vcpu_svm *svm)
|
|||||||
|
|
||||||
control->iopm_base_pa = iopm_base;
|
control->iopm_base_pa = iopm_base;
|
||||||
control->msrpm_base_pa = __pa(svm->msrpm);
|
control->msrpm_base_pa = __pa(svm->msrpm);
|
||||||
control->tsc_offset = 0-native_read_tsc();
|
|
||||||
control->int_ctl = V_INTR_MASKING_MASK;
|
control->int_ctl = V_INTR_MASKING_MASK;
|
||||||
|
|
||||||
init_seg(&save->es);
|
init_seg(&save->es);
|
||||||
@ -902,6 +901,7 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
|
|||||||
svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT;
|
svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT;
|
||||||
svm->asid_generation = 0;
|
svm->asid_generation = 0;
|
||||||
init_vmcb(svm);
|
init_vmcb(svm);
|
||||||
|
svm->vmcb->control.tsc_offset = 0-native_read_tsc();
|
||||||
|
|
||||||
err = fx_init(&svm->vcpu);
|
err = fx_init(&svm->vcpu);
|
||||||
if (err)
|
if (err)
|
||||||
|
Loading…
Reference in New Issue
Block a user