Signed-off-by: Andrew Morton --- arch/x86_64/kernel/time.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff -puN arch/x86_64/kernel/time.c~x86_64-mm-gh-sync-tsc arch/x86_64/kernel/time.c --- a/arch/x86_64/kernel/time.c~x86_64-mm-gh-sync-tsc +++ a/arch/x86_64/kernel/time.c @@ -943,15 +943,22 @@ __cpuinit int unsynchronized_tsc(void) if (apic_is_clustered_box()) return 1; #endif - /* Most intel systems have synchronized TSCs except for - multi node systems */ - if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) { + switch (boot_cpu_data.x86_vendor) { + case X86_VENDOR_INTEL: + /* Most intel systems have synchronized TSCs except for + multi node systems */ + #ifdef CONFIG_ACPI /* But TSC doesn't tick in C3 so don't use it there */ if (acpi_gbl_FADT.header.length > 0 && acpi_gbl_FADT.C3latency < 1000) return 1; #endif return 0; + case X86_VENDOR_AMD: + /* ??? C states */ + if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) + return 0; + break; } /* Assume multi socket systems are not synchronized */ _