From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zachary Amsden Subject: Re: [PATCH 3/6] KVM: X86: Make tsc_delta calculation a function of guest tsc Date: Mon, 18 Apr 2011 17:02:35 -0700 Message-ID: <4DACD11B.4080200@redhat.com> References: <1301042691-22929-1-git-send-email-joerg.roedel@amd.com> <1301042691-22929-4-git-send-email-joerg.roedel@amd.com> <4DA9BF2D.7010804@web.de> <20110417120656.GT18463@8bytes.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Jan Kiszka , Joerg Roedel , Avi Kivity , Marcelo Tosatti , kvm@vger.kernel.org To: Joerg Roedel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:7546 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751353Ab1DSACq (ORCPT ); Mon, 18 Apr 2011 20:02:46 -0400 In-Reply-To: <20110417120656.GT18463@8bytes.org> Sender: kvm-owner@vger.kernel.org List-ID: > > On Sat, Apr 16, 2011 at 06:09:17PM +0200, Jan Kiszka wrote: > >> On 2011-03-25 09:44, Joerg Roedel wrote: >> > >>> + tsc_delta = !vcpu->arch.last_guest_tsc ? 0 : >>> + tsc - vcpu->arch.last_guest_tsc; >>> > >> This patch appears to cause troubles to Linux guests on TSC clocksource >> and APIC highres timer. The first boot after qemu start is always fine, >> but after a reboot the guest timer appears to fire incorrectly or even >> not at all. >> >> Was this patch tested with a guest reboot scenario as well? Does it >> account for the TSC being reset to 0 on reboot? >> > Hmm, probably the last_guest_tsc is not updated correctly in this > scenario. I will have a look tomorrow. > > Joerg > > To avoid this problem, when the TSC is reset, the overshoot protection where last_guest_tsc is used is specifically disabled: /* Reset of TSC must disable overshoot protection below */ vcpu->arch.hv_clock.tsc_timestamp = 0; vcpu->arch.last_tsc_write = data; vcpu->arch.last_tsc_nsec = ns; You can probably use the same test - last_guest_tsc is only valid if tsc_timestamp above != 0. Zach