Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/arch



Module Name:    src
Committed By:   ad
Date:           Sat May 10 16:12:33 UTC 2008

Modified Files:
        src/sys/arch/amd64/amd64: amd64func.S autoconf.c cpufunc.S genassym.cf
            identcpu.c ipifuncs.c procfs_machdep.c
        src/sys/arch/amd64/include: cpu.h
        src/sys/arch/i386/i386: autoconf.c cpufunc.S genassym.cf i386func.S
            identcpu.c ipifuncs.c pmc.c powernow_k7.c procfs_machdep.c
        src/sys/arch/i386/include: cpu.h
        src/sys/arch/x86/include: cpu_counter.h
        src/sys/arch/x86/isa: clock.c
        src/sys/arch/x86/x86: cpu.c tsc.c tsc.h

Log Message:
Improve x86 tsc handling:

- Ditch the cross-CPU calibration stuff. It didn't work properly, and it's
  near impossible to synchronize the CPUs in a running system, because bus
  traffic will interfere with any calibration attempt, messing up the
  timings.

- Only enable the TSC on CPUs where we are sure it does not drift. If we are
  On a known good CPU, give the TSC high timecounter quality, making it the
  default.

- When booting CPUs, detect TSC skew and account for it. Most Intel MP
  systems have synchronized counters, but that need not be true if the
  system has a complicated bus structure. As far as I know, AMD systems
  do not have synchronized TSCs and so we need to handle skew.

- While an AP is waiting to be set running, try and make the TSC drift by
  entering a reduced power state. If we detect drift, ensure that the TSC
  does not get a high timecounter quality. This should not happen and is
  only for safety.

- Make cpu_counter() stuff LKM safe.


To generate a diff of this commit:
cvs rdiff -r1.5 -r1.6 src/sys/arch/amd64/amd64/amd64func.S
cvs rdiff -r1.19 -r1.20 src/sys/arch/amd64/amd64/autoconf.c
cvs rdiff -r1.10 -r1.11 src/sys/arch/amd64/amd64/cpufunc.S
cvs rdiff -r1.30 -r1.31 src/sys/arch/amd64/amd64/genassym.cf
cvs rdiff -r1.38 -r1.39 src/sys/arch/amd64/amd64/identcpu.c
cvs rdiff -r1.18 -r1.19 src/sys/arch/amd64/amd64/ipifuncs.c
cvs rdiff -r1.7 -r1.8 src/sys/arch/amd64/amd64/procfs_machdep.c
cvs rdiff -r1.52 -r1.53 src/sys/arch/amd64/include/cpu.h
cvs rdiff -r1.91 -r1.92 src/sys/arch/i386/i386/autoconf.c
cvs rdiff -r1.9 -r1.10 src/sys/arch/i386/i386/cpufunc.S
cvs rdiff -r1.68 -r1.69 src/sys/arch/i386/i386/genassym.cf
cvs rdiff -r1.11 -r1.12 src/sys/arch/i386/i386/i386func.S
cvs rdiff -r1.92 -r1.93 src/sys/arch/i386/i386/identcpu.c
cvs rdiff -r1.26 -r1.27 src/sys/arch/i386/i386/ipifuncs.c
cvs rdiff -r1.15 -r1.16 src/sys/arch/i386/i386/pmc.c
cvs rdiff -r1.30 -r1.31 src/sys/arch/i386/i386/powernow_k7.c
cvs rdiff -r1.27 -r1.28 src/sys/arch/i386/i386/procfs_machdep.c
cvs rdiff -r1.170 -r1.171 src/sys/arch/i386/include/cpu.h
cvs rdiff -r1.3 -r1.4 src/sys/arch/x86/include/cpu_counter.h
cvs rdiff -r1.28 -r1.29 src/sys/arch/x86/isa/clock.c
cvs rdiff -r1.37 -r1.38 src/sys/arch/x86/x86/cpu.c
cvs rdiff -r1.15 -r1.16 src/sys/arch/x86/x86/tsc.c
cvs rdiff -r1.3 -r1.4 src/sys/arch/x86/x86/tsc.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Home | Main Index | Thread Index | Old Index