From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [patch 03/18] x86: pvclock: remove pvclock_shadow_time Date: Tue, 30 Oct 2012 11:24:58 +0200 Message-ID: <508F9CEA.3020406@redhat.com> References: <20121024131340.742340256@redhat.com> <20121024131621.425527256@redhat.com> <508F9C7F.8010307@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, johnstul@us.ibm.com, jeremy@goop.org, glommer@parallels.com, zamsden@gmail.com, gleb@redhat.com, pbonzini@redhat.com To: Marcelo Tosatti Return-path: Received: from mx1.redhat.com ([209.132.183.28]:25406 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753925Ab2J3JZT (ORCPT ); Tue, 30 Oct 2012 05:25:19 -0400 In-Reply-To: <508F9C7F.8010307@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 10/30/2012 11:23 AM, Avi Kivity wrote: > On 10/24/2012 03:13 PM, Marcelo Tosatti wrote: >> Originally from Jeremy Fitzhardinge. >> >> We can copy the information directly from "struct pvclock_vcpu_time_info", >> remove pvclock_shadow_time. >> >> Signed-off-by: Marcelo Tosatti >> >> >> unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src) >> @@ -90,21 +54,20 @@ void pvclock_resume(void) >> >> cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) >> { >> - struct pvclock_shadow_time shadow; >> unsigned version; >> cycle_t ret, offset; >> u64 last; >> >> do { >> - version = pvclock_get_time_values(&shadow, src); >> + version = src->version; >> rdtsc_barrier(); >> - offset = pvclock_get_nsec_offset(&shadow); >> - ret = shadow.system_timestamp + offset; >> + offset = pvclock_get_nsec_offset(src); >> + ret = src->system_time + offset; >> rdtsc_barrier(); >> - } while (version != src->version); >> + } while ((src->version & 1) || version != src->version); >> >> if ((valid_flags & PVCLOCK_TSC_STABLE_BIT) && >> - (shadow.flags & PVCLOCK_TSC_STABLE_BIT)) >> + (src->flags & PVCLOCK_TSC_STABLE_BIT)) >> return ret; >> > > You're now reading PVCLOCK_TSC_STABLE outside the critical section. We > could have live migrated to a tsc-unstable host and had this flag cleared. > I see it's fixed in patch 5. So there's a window of two patches where this is broken. -- error compiling committee.c: too many arguments to function