From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: RFC: VMX: initialize TSC offset relative to vm creation time Date: Mon, 27 Oct 2008 21:42:59 -0200 Message-ID: <20081027234259.GA21753@dmt.cnet> References: <20080910205842.GA12514@dmt.cnet> <48CB47A6.1050301@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm-devel , "David S. Ahern" , Chris Wright , Glauber de Oliveira Costa To: Avi Kivity Return-path: Received: from mx2.redhat.com ([66.187.237.31]:58796 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751571AbYJ0Xo3 (ORCPT ); Mon, 27 Oct 2008 19:44:29 -0400 Content-Disposition: inline In-Reply-To: <48CB47A6.1050301@qumranet.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sat, Sep 13, 2008 at 07:55:02AM +0300, Avi Kivity wrote: > Marcelo Tosatti wrote: > > VMX initializes the TSC offset for each vcpu at different times, and > > also reinitializes it for vcpus other than 0 on APIC SIPI message. > > > > This bug causes the TSC's to appear unsynchronized in the guest, even if > > the host is good. > > > > Older Linux kernels don't handle the situation very well, so > > gettimeofday is likely to go backwards in time: > > > > http://www.mail-archive.com/kvm@vger.kernel.org/msg02955.html > > http://sourceforge.net/tracker/index.php?func=detail&aid=2025534&group_id=180599&atid=893831 > > > > Fix it by initializating the offset of each vcpu relative to vm creation > > time, and moving it from vmx_vcpu_reset to vmx_vcpu_setup, out of the > > APIC MP init path. > > > > > > > > This is good in principle, but we need to detect if we're on a multiple > board host (or a host with unsynced tscs) and do something else in that > case. I think this is a separate, and difficult, problem. For instance older Linux guests that correct the TSC across CPU's are broken at the moment in the unsynced TSC case. That is, the fact that KVM does not handle unsynced TSC's on the host is not an argument against this patch which clearly fixes a bug. Take commit 019960ae9933161c2809fa4ee608ba30d9639fd2 for example.