git: clock/tsc: Detect invariant TSC CPU synchronization
Sepherosa Ziehau
sephe at crater.dragonflybsd.org
Wed Jun 19 20:19:53 PDT 2013
commit dda44f1e92d93dc26b3445bdc61b11c3fda8733d
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date: Thu Jun 20 11:10:03 2013 +0800
clock/tsc: Detect invariant TSC CPU synchronization
The detected result could be used to determine whether TSC could be
used as cputimer or not, and could be used by other stuffs, e.g.
CoDel AQM packet time stamping.
- Only invariant TSC will be tested
- If there is only one CPU, then invariant TSC is always synchronized
- Only CPUs from Intel are tested (*)
The test is conducted using lwkt_cpusync interfaces:
BSP read the TSC, then ask APs to read TSC. If TSC read from any APs
is less then the BSP's TSC, the invariant TSC is not synchronized
across CPUs.
Currently the test runs ~100ms.
(*)
AMD family 15h model 00h-0fh may also have synchronized TSC across
CPUs as pointed out by vsrinivas@, however, according to AMD:
<Revision Guide for AMD Family 15h Models 00h-0Fh Processors
Rev. 3.18 October 2012>
759 One Core May Observe a Time Stamp Counter Skew
AMD family 15h model 00h-0fh is _not_ ready yet.
Summary of changes:
sys/platform/pc32/include/clock.h | 1 +
sys/platform/pc32/isa/clock.c | 86 ++++++++++++++++++++++++++++++
sys/platform/pc64/include/clock.h | 1 +
sys/platform/pc64/isa/clock.c | 86 ++++++++++++++++++++++++++++++
sys/platform/vkernel/include/clock.h | 1 +
sys/platform/vkernel/platform/init.c | 3 ++
sys/platform/vkernel/platform/systimer.c | 2 +
sys/platform/vkernel64/include/clock.h | 1 +
sys/platform/vkernel64/platform/init.c | 3 ++
sys/platform/vkernel64/platform/systimer.c | 2 +
10 files changed, 186 insertions(+)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/dda44f1e92d93dc26b3445bdc61b11c3fda8733d
--
DragonFly BSD source repository
More information about the Commits
mailing list