From owner-svn-src-head@FreeBSD.ORG Mon Dec 14 14:18:43 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A109106566B; Mon, 14 Dec 2009 14:18:43 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 565398FC0C; Mon, 14 Dec 2009 14:18:43 +0000 (UTC) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id ED85B46B2E; Mon, 14 Dec 2009 09:18:42 -0500 (EST) Date: Mon, 14 Dec 2009 14:18:42 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Luigi Rizzo In-Reply-To: <200912141223.nBECNlDZ026381@svn.freebsd.org> Message-ID: References: <200912141223.nBECNlDZ026381@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r200510 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Dec 2009 14:18:43 -0000 On Mon, 14 Dec 2009, Luigi Rizzo wrote: > Properly fix callout handling by putting all the per-cpu info in > struct callout_cpu. From the comment in the file: > > + * There is one struct callout_cpu per cpu, holding all relevant > + * state for the callout processing thread on the individual CPU. > + * In particular: > + * cc_ticks is incremented once per tick in callout_cpu(). > + * It tracks the global 'ticks' but in a way that the individual > + * threads should not worry about races in the order in which > + * hardclock() and hardclock_cpu() run on the various CPUs. > + * cc_softclock is advanced in callout_cpu() to point to the > + * first entry in cc_callwheel that may need handling. In turn, > + * a softclock() is scheduled so it can serve the various entries i > + * such that cc_softclock <= i <= cc_ticks . > > Together with a smaller patch committed in september, this fixes a > bug that affects 8.0 with apps that rely on callouts to fire exactly > in the number of ticks specified (qemu among them). > Right now, callouts in 8.0 fire one tick late. > > This was discussed in september with JeffR and jhb Once this has burned in, is it something you would consider appropriate to be an errata note candidate? Robert N M Watson Computer Laboratory University of Cambridge