linux/arch
Andi Kleen 51fc97b935 x86: allow TSC clock source on AMD Fam10h and some cleanup
After a lot of discussions with AMD it turns out that TSC
on Fam10h CPUs is synchronized when the CONSTANT_TSC cpuid bit is set.
Or rather that if there are ever systems where that is not
true it would be their BIOS' task to disable the bit.

So finally use TSC gettimeofday on Fam10h by default.

Or rather it is always used now on CPUs where the AMD
specific CONSTANT_TSC bit is set.

This gives a nice speed bost for gettimeofday() on these systems
which tends to be by far the most common v/syscall.

On a Fam10h system here TSC gtod uses about 20% of the CPU time of
acpi_pm based gtod(). This was measured on 32bit, on 64bit
it is even better because TSC gtod() can use a vsyscall
and stay in ring 3, which acpi_pm doesn't.

The Intel check simply checks for CONSTANT_TSC too without hardcoding
Intel vendor. This is equivalent on 64bit because all 64bit capable Intel
CPUs will have CONSTANT_TSC set.

On Intel there is no CPU supplied CONSTANT_TSC bit currently,
but we synthesize one based on hardcoded knowledge which steppings
have p-state invariant TSC.

So the new logic is now: On CPUs which have the AMD specific
CONSTANT_TSC bit set or on Intel CPUs which are new enough
to be known to have p-state invariant TSC always use
TSC based gettimeofday()

Cc: lenb@kernel.org

Signed-off-by: Andi Kleen <ak@suse.de>

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:32:40 +01:00
..
alpha remove __attribute_used__ 2008-01-28 23:21:18 +01:00
arm spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
avr32 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
blackfin all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
cris all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
frv Remove references to "make dep" 2008-01-28 23:22:13 +01:00
h8300 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
ia64 spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
m32r spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
m68k all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
m68knommu all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
mips spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
parisc spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
powerpc spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
ppc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25 2008-01-29 22:54:01 +11:00
s390 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sh all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sparc all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sparc64 spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
um UML: remove remaining FASTCALL uses 2008-01-30 13:31:14 +01:00
v850 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
x86 x86: allow TSC clock source on AMD Fam10h and some cleanup 2008-01-30 13:32:40 +01:00
xtensa Remove references to "make dep" 2008-01-28 23:22:13 +01:00
.gitignore arch: Ignore arch/i386 and arch/x86_64 2008-01-19 21:29:39 -08:00