Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 04 Jun 2014 13:50:11 -0400
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        Chris Torek <torek@torek.net>
Cc:        freebsd-hackers@freebsd.org, Alexander Motin <mav@freebsd.org>
Subject:   Re: kern.timecounter.smp_tsc_adjust
Message-ID:  <538F5C53.7060208@FreeBSD.org>
In-Reply-To: <201406041732.s54HWDlE032048@elf.torek.net>
References:  <201406041732.s54HWDlE032048@elf.torek.net>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 2014-06-04 13:32:13 -0400, Chris Torek wrote:
>> In any case, at least one, and maybe two, routines need their 
>> types changed (and maybe the TSC_READ macro as well).  Is it OK 
>> to just assume the upper 32 bits are in sync?
> 
> For whatever it may be worth, the following patch (to change 
> everything to 64 bits) is boot-tested and no longer crashes the 
> system that did crash with the unpatched version.  It also 
> successfully synchronized TSCs at least once (Intel based board 
> with the "invariant TSC" bit set, 40 CPUs).
> 
> Chris
> 
> x86/tsc: fix SMP TSC adjustment code
> 
> On SMP systems, if kern.timecounter.smp_tsc is set, the kernel 
> attempts to determine whether the TSCs on the processors are 
> sufficiently in-sync to be used for time counting.  If not, and 
> kern.timecounter.smp_tsc_adjust is set, we then attempt to adjust
> all the TSCs.
> 
> The adjustment code assumed we kept a full 64-bit value for each 
> TSC, but the data-gathering and comparison code used 32-bit values.
> As a result, if the timecounters were out of sync, the adjustment
> code could crash (depending on the number of CPUs).
> 
> This converts everything to full 64-bit values.
...

It was done on head almost two years ago:

http://svnweb.freebsd.org/changeset/base/239133

I guess mav forgot to MFC r239133 before r250772 (CC'ed):

http://svnweb.freebsd.org/changeset/base/250772

Jung-uk Kim
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBAgAGBQJTj1xTAAoJEHyflib82/FGhmwH/Rl6DY0mCYSn4IdWKpo+nZ+t
SmZzXiItNrwoQrOdYcLp9ocWqvPW3OsCN8sZBEyIpj/WCTkS0gXru6oKN6n0HBjx
EQrxI/SH9I/52JgnNZqbVBDS5AqQ0LKbqo6BsZjMl4b4xnHK/8yEKrNJnHRrnL0D
9zF2braQUrMPsIpzYuRB0k8UDWsa++6iAcPY+ovGdDT00WRawSXefChfU1MmTeCN
XNiX37hn2t4CKQV1sQVM1hP1D7PSuik5mQq1YX1bZRLkAk8G53U+v1akQ4R+PoK1
569CE/K0KLbwegVtBzSaHMNRhKALweF73yvajSEofEnL76x8QLkeU1Z2d8hP74g=
=L9LQ
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?538F5C53.7060208>