aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/admin-guide/kernel-parameters.txt4
-rw-r--r--arch/x86/kernel/tsc.c5
-rw-r--r--arch/x86/lib/delay.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 420bb17440fd..58e69ec8b7a0 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4740,6 +4740,10 @@
4740 [x86] unstable: mark the TSC clocksource as unstable, this 4740 [x86] unstable: mark the TSC clocksource as unstable, this
4741 marks the TSC unconditionally unstable at bootup and 4741 marks the TSC unconditionally unstable at bootup and
4742 avoids any further wobbles once the TSC watchdog notices. 4742 avoids any further wobbles once the TSC watchdog notices.
4743 [x86] nowatchdog: disable clocksource watchdog. Used
4744 in situations with strict latency requirements (where
4745 interruptions from clocksource watchdog are not
4746 acceptable).
4743 4747
4744 turbografx.map[2|3]= [HW,JOY] 4748 turbografx.map[2|3]= [HW,JOY]
4745 TurboGraFX parallel port interface 4749 TurboGraFX parallel port interface
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 3fae23834069..aab0c82e0a0d 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -283,6 +283,7 @@ int __init notsc_setup(char *str)
283__setup("notsc", notsc_setup); 283__setup("notsc", notsc_setup);
284 284
285static int no_sched_irq_time; 285static int no_sched_irq_time;
286static int no_tsc_watchdog;
286 287
287static int __init tsc_setup(char *str) 288static int __init tsc_setup(char *str)
288{ 289{
@@ -292,6 +293,8 @@ static int __init tsc_setup(char *str)
292 no_sched_irq_time = 1; 293 no_sched_irq_time = 1;
293 if (!strcmp(str, "unstable")) 294 if (!strcmp(str, "unstable"))
294 mark_tsc_unstable("boot parameter"); 295 mark_tsc_unstable("boot parameter");
296 if (!strcmp(str, "nowatchdog"))
297 no_tsc_watchdog = 1;
295 return 1; 298 return 1;
296} 299}
297 300
@@ -1349,7 +1352,7 @@ static int __init init_tsc_clocksource(void)
1349 if (tsc_unstable) 1352 if (tsc_unstable)
1350 goto unreg; 1353 goto unreg;
1351 1354
1352 if (tsc_clocksource_reliable) 1355 if (tsc_clocksource_reliable || no_tsc_watchdog)
1353 clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY; 1356 clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;
1354 1357
1355 if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3)) 1358 if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3))
diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c
index f5b7f1b3b6d7..b7375dc6898f 100644
--- a/arch/x86/lib/delay.c
+++ b/arch/x86/lib/delay.c
@@ -162,7 +162,7 @@ void __delay(unsigned long loops)
162} 162}
163EXPORT_SYMBOL(__delay); 163EXPORT_SYMBOL(__delay);
164 164
165void __const_udelay(unsigned long xloops) 165noinline void __const_udelay(unsigned long xloops)
166{ 166{
167 unsigned long lpj = this_cpu_read(cpu_info.loops_per_jiffy) ? : loops_per_jiffy; 167 unsigned long lpj = this_cpu_read(cpu_info.loops_per_jiffy) ? : loops_per_jiffy;
168 int d0; 168 int d0;