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