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