diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/kernel/cpu/cyrix.c | 2 | ||||
-rw-r--r-- | arch/i386/kernel/tsc.c | 5 | ||||
-rw-r--r-- | arch/x86_64/kernel/time.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/tsc.c | 5 | ||||
-rw-r--r-- | arch/x86_64/kernel/tsc_sync.c | 2 |
5 files changed, 9 insertions, 7 deletions
diff --git a/arch/i386/kernel/cpu/cyrix.c b/arch/i386/kernel/cpu/cyrix.c index f0badfdd4e45..e77f8e1cf7aa 100644 --- a/arch/i386/kernel/cpu/cyrix.c +++ b/arch/i386/kernel/cpu/cyrix.c | |||
@@ -279,7 +279,7 @@ static void __cpuinit init_cyrix(struct cpuinfo_x86 *c) | |||
279 | */ | 279 | */ |
280 | if (vendor == PCI_VENDOR_ID_CYRIX && | 280 | if (vendor == PCI_VENDOR_ID_CYRIX && |
281 | (device == PCI_DEVICE_ID_CYRIX_5510 || device == PCI_DEVICE_ID_CYRIX_5520)) | 281 | (device == PCI_DEVICE_ID_CYRIX_5510 || device == PCI_DEVICE_ID_CYRIX_5520)) |
282 | mark_tsc_unstable(); | 282 | mark_tsc_unstable("cyrix 5510/5520 detected"); |
283 | } | 283 | } |
284 | #endif | 284 | #endif |
285 | c->x86_cache_size=16; /* Yep 16K integrated cache thats it */ | 285 | c->x86_cache_size=16; /* Yep 16K integrated cache thats it */ |
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index 6cb8f5336732..755209dc93e1 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c | |||
@@ -233,7 +233,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, void *data) | |||
233 | * TSC based sched_clock turns | 233 | * TSC based sched_clock turns |
234 | * to junk w/ cpufreq | 234 | * to junk w/ cpufreq |
235 | */ | 235 | */ |
236 | mark_tsc_unstable(); | 236 | mark_tsc_unstable("cpufreq changes"); |
237 | } | 237 | } |
238 | } | 238 | } |
239 | } | 239 | } |
@@ -281,11 +281,12 @@ static struct clocksource clocksource_tsc = { | |||
281 | CLOCK_SOURCE_MUST_VERIFY, | 281 | CLOCK_SOURCE_MUST_VERIFY, |
282 | }; | 282 | }; |
283 | 283 | ||
284 | void mark_tsc_unstable(void) | 284 | void mark_tsc_unstable(char *reason) |
285 | { | 285 | { |
286 | if (!tsc_unstable) { | 286 | if (!tsc_unstable) { |
287 | tsc_unstable = 1; | 287 | tsc_unstable = 1; |
288 | tsc_enabled = 0; | 288 | tsc_enabled = 0; |
289 | printk("Marking TSC unstable due to: %s.\n", reason); | ||
289 | /* Can be called before registration */ | 290 | /* Can be called before registration */ |
290 | if (clocksource_tsc.mult) | 291 | if (clocksource_tsc.mult) |
291 | clocksource_change_rating(&clocksource_tsc, 0); | 292 | clocksource_change_rating(&clocksource_tsc, 0); |
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c index 5f862e216a42..91c9066a380d 100644 --- a/arch/x86_64/kernel/time.c +++ b/arch/x86_64/kernel/time.c | |||
@@ -397,7 +397,7 @@ void __init time_init(void) | |||
397 | cpu_khz = tsc_calibrate_cpu_khz(); | 397 | cpu_khz = tsc_calibrate_cpu_khz(); |
398 | 398 | ||
399 | if (unsynchronized_tsc()) | 399 | if (unsynchronized_tsc()) |
400 | mark_tsc_unstable(); | 400 | mark_tsc_unstable("TSCs unsynchronized"); |
401 | 401 | ||
402 | if (cpu_has(&boot_cpu_data, X86_FEATURE_RDTSCP)) | 402 | if (cpu_has(&boot_cpu_data, X86_FEATURE_RDTSCP)) |
403 | vgetcpu_mode = VGETCPU_RDTSCP; | 403 | vgetcpu_mode = VGETCPU_RDTSCP; |
diff --git a/arch/x86_64/kernel/tsc.c b/arch/x86_64/kernel/tsc.c index 5c84992c676d..48f9a8e6aa91 100644 --- a/arch/x86_64/kernel/tsc.c +++ b/arch/x86_64/kernel/tsc.c | |||
@@ -111,7 +111,7 @@ static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, | |||
111 | 111 | ||
112 | tsc_khz = cpufreq_scale(tsc_khz_ref, ref_freq, freq->new); | 112 | tsc_khz = cpufreq_scale(tsc_khz_ref, ref_freq, freq->new); |
113 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) | 113 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) |
114 | mark_tsc_unstable(); | 114 | mark_tsc_unstable("cpufreq changes"); |
115 | } | 115 | } |
116 | 116 | ||
117 | set_cyc2ns_scale(tsc_khz_ref); | 117 | set_cyc2ns_scale(tsc_khz_ref); |
@@ -199,10 +199,11 @@ static struct clocksource clocksource_tsc = { | |||
199 | .vread = vread_tsc, | 199 | .vread = vread_tsc, |
200 | }; | 200 | }; |
201 | 201 | ||
202 | void mark_tsc_unstable(void) | 202 | void mark_tsc_unstable(char *reason) |
203 | { | 203 | { |
204 | if (!tsc_unstable) { | 204 | if (!tsc_unstable) { |
205 | tsc_unstable = 1; | 205 | tsc_unstable = 1; |
206 | printk("Marking TSC unstable due to %s\n", reason); | ||
206 | /* Change only the rating, when not registered */ | 207 | /* Change only the rating, when not registered */ |
207 | if (clocksource_tsc.mult) | 208 | if (clocksource_tsc.mult) |
208 | clocksource_change_rating(&clocksource_tsc, 0); | 209 | clocksource_change_rating(&clocksource_tsc, 0); |
diff --git a/arch/x86_64/kernel/tsc_sync.c b/arch/x86_64/kernel/tsc_sync.c index 72d444dede9b..355f5f506c81 100644 --- a/arch/x86_64/kernel/tsc_sync.c +++ b/arch/x86_64/kernel/tsc_sync.c | |||
@@ -138,7 +138,7 @@ void __cpuinit check_tsc_sync_source(int cpu) | |||
138 | printk("\n"); | 138 | printk("\n"); |
139 | printk(KERN_WARNING "Measured %Ld cycles TSC warp between CPUs," | 139 | printk(KERN_WARNING "Measured %Ld cycles TSC warp between CPUs," |
140 | " turning off TSC clock.\n", max_warp); | 140 | " turning off TSC clock.\n", max_warp); |
141 | mark_tsc_unstable(); | 141 | mark_tsc_unstable("check_tsc_sync_source failed"); |
142 | nr_warps = 0; | 142 | nr_warps = 0; |
143 | max_warp = 0; | 143 | max_warp = 0; |
144 | last_tsc = 0; | 144 | last_tsc = 0; |