| From 0122c24b3c8d6f8a7c7bd9b6f3515cc38b853b43 Mon Sep 17 00:00:00 2001 |
| From: Zachary Amsden <zamsden@redhat.com> |
| Date: Thu, 19 Aug 2010 22:07:19 -1000 |
| Subject: [PATCH] KVM: x86: Move TSC reset out of vmcb_init |
| |
| commit 47008cd887c1836bcadda123ba73e1863de7a6c4 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| arch/x86/kvm/svm.c | 2 +- |
| 1 files changed, 1 insertions(+), 1 deletions(-) |
| |
| diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c |
| index 508e136..80453d4 100644 |
| --- a/arch/x86/kvm/svm.c |
| +++ b/arch/x86/kvm/svm.c |
| @@ -632,7 +632,6 @@ static void init_vmcb(struct vcpu_svm *svm) |
| |
| control->iopm_base_pa = iopm_base; |
| control->msrpm_base_pa = __pa(svm->msrpm); |
| - control->tsc_offset = 0-native_read_tsc(); |
| control->int_ctl = V_INTR_MASKING_MASK; |
| |
| init_seg(&save->es); |
| @@ -766,6 +765,7 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) |
| svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT; |
| svm->asid_generation = 0; |
| init_vmcb(svm); |
| + svm->vmcb->control.tsc_offset = 0-native_read_tsc(); |
| |
| fx_init(&svm->vcpu); |
| svm->vcpu.arch.apic_base = 0xfee00000 | MSR_IA32_APICBASE_ENABLE; |
| -- |
| 1.7.0.4 |
| |