From owner-svn-src-all@FreeBSD.ORG Wed Mar 16 05:57:58 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 337871065670; Wed, 16 Mar 2011 05:57:58 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail07.syd.optusnet.com.au (mail07.syd.optusnet.com.au [211.29.132.188]) by mx1.freebsd.org (Postfix) with ESMTP id C03978FC08; Wed, 16 Mar 2011 05:57:57 +0000 (UTC) Received: from c122-107-125-80.carlnfd1.nsw.optusnet.com.au (c122-107-125-80.carlnfd1.nsw.optusnet.com.au [122.107.125.80]) by mail07.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p2G5vrvZ027103 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 16 Mar 2011 16:57:54 +1100 Date: Wed, 16 Mar 2011 16:57:53 +1100 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Maxim Dounin In-Reply-To: <20110316004503.GM99496@mdounin.ru> Message-ID: <20110316164727.Y4107@besplex.bde.org> References: <201103152145.p2FLjAlt060256@svn.freebsd.org> <20110316004503.GM99496@mdounin.ru> 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, Jung-uk Kim Subject: Re: svn commit: r219679 - head/sys/i386/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Mar 2011 05:57:58 -0000 On Wed, 16 Mar 2011, Maxim Dounin wrote: > On Tue, Mar 15, 2011 at 09:45:10PM +0000, Jung-uk Kim wrote: > >> Author: jkim >> Date: Tue Mar 15 21:45:10 2011 >> New Revision: 219679 >> URL: http://svn.freebsd.org/changeset/base/219679 >> >> Log: >> Partially revert r219672. After r198295, kernel need to seed randomness as >> ... >> Modified: head/sys/i386/include/cpu.h >> ============================================================================== >> --- head/sys/i386/include/cpu.h Tue Mar 15 21:34:10 2011 (r219678) >> +++ head/sys/i386/include/cpu.h Tue Mar 15 21:45:10 2011 (r219679) >> @@ -69,10 +69,14 @@ void swi_vm(void *); >> static __inline uint64_t >> get_cyclecount(void) >> { >> +#if defined(I486_CPU) || defined(KLD_MODULE) >> struct bintime bt; >> >> binuptime(&bt); >> return ((uint64_t)bt.sec << 56 | bt.frac >> 8); >> +#else >> + return (rdtsc()); >> +#endif > > This isn't really different as long as GENERIC kernel used, as > GENERIC defines I486_CPU. Also, the KLD_MODULE case is broken. This restores the ifdefs but not the tsc_present check in the old version. The ifdefs are not sort of necessary, but they seem to have been bogus in the old version. Just checking a runtime variable like tsc_present would have worked provided the variable existed. tsc.c is standard so the variable existed even if I486_CPU or KLD_MODULE was defined. I think TSC support was standard even when get_cyclecount() was first committed and had an I386_CPU ifdef, so the ifdef was always bogus. The ifdef gave a micro-optimization in some cases, but it was a very tiny one (avoid a perfectly predictable branch). Bruce