| From mtosatti@redhat.com Fri Oct 29 15:21:28 2010 |
| From: Zachary Amsden <zamsden@redhat.com> |
| Date: Thu, 28 Oct 2010 16:48:15 -0200 |
| Subject: [PATCH 7/8] KVM: x86: Move TSC reset out of vmcb_init |
| To: greg@kroah.com |
| Cc: avi@redhat.com, mtosatti@redhat.com, stable@kernel.org, Zachary Amsden <zamsden@redhat.com> |
| Message-ID: <20101028185028.133694655@amt.cnet> |
| Content-Disposition: inline; filename=0007-KVM-x86-Move-TSC-reset-out-of-vmcb_init.patch |
| |
| From: Zachary Amsden <zamsden@redhat.com> |
| |
| 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: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/x86/kvm/svm.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/x86/kvm/svm.c |
| +++ b/arch/x86/kvm/svm.c |
| @@ -621,7 +621,6 @@ static void init_vmcb(struct vcpu_svm *s |
| |
| 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); |
| @@ -754,6 +753,7 @@ static struct kvm_vcpu *svm_create_vcpu( |
| 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.fpu_active = 1; |