Commit db10ad04 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 timer updates from Ingo Molnar:
 "Two changes: an LTO improvement, plus the new 'nowatchdog' boot option
  to disable the clocksource watchdog"

* 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/timer: Don't inline __const_udelay()
  x86/tsc: Add option to disable tsc clocksource watchdog
parents ba3934de 81423c37
...@@ -4740,6 +4740,10 @@ ...@@ -4740,6 +4740,10 @@
[x86] unstable: mark the TSC clocksource as unstable, this [x86] unstable: mark the TSC clocksource as unstable, this
marks the TSC unconditionally unstable at bootup and marks the TSC unconditionally unstable at bootup and
avoids any further wobbles once the TSC watchdog notices. avoids any further wobbles once the TSC watchdog notices.
[x86] nowatchdog: disable clocksource watchdog. Used
in situations with strict latency requirements (where
interruptions from clocksource watchdog are not
acceptable).
turbografx.map[2|3]= [HW,JOY] turbografx.map[2|3]= [HW,JOY]
TurboGraFX parallel port interface TurboGraFX parallel port interface
......
...@@ -283,6 +283,7 @@ int __init notsc_setup(char *str) ...@@ -283,6 +283,7 @@ int __init notsc_setup(char *str)
__setup("notsc", notsc_setup); __setup("notsc", notsc_setup);
static int no_sched_irq_time; static int no_sched_irq_time;
static int no_tsc_watchdog;
static int __init tsc_setup(char *str) static int __init tsc_setup(char *str)
{ {
...@@ -292,6 +293,8 @@ static int __init tsc_setup(char *str) ...@@ -292,6 +293,8 @@ static int __init tsc_setup(char *str)
no_sched_irq_time = 1; no_sched_irq_time = 1;
if (!strcmp(str, "unstable")) if (!strcmp(str, "unstable"))
mark_tsc_unstable("boot parameter"); mark_tsc_unstable("boot parameter");
if (!strcmp(str, "nowatchdog"))
no_tsc_watchdog = 1;
return 1; return 1;
} }
...@@ -1349,7 +1352,7 @@ static int __init init_tsc_clocksource(void) ...@@ -1349,7 +1352,7 @@ static int __init init_tsc_clocksource(void)
if (tsc_unstable) if (tsc_unstable)
goto unreg; goto unreg;
if (tsc_clocksource_reliable) if (tsc_clocksource_reliable || no_tsc_watchdog)
clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY; clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;
if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3)) if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3))
......
...@@ -162,7 +162,7 @@ void __delay(unsigned long loops) ...@@ -162,7 +162,7 @@ void __delay(unsigned long loops)
} }
EXPORT_SYMBOL(__delay); EXPORT_SYMBOL(__delay);
void __const_udelay(unsigned long xloops) noinline void __const_udelay(unsigned long xloops)
{ {
unsigned long lpj = this_cpu_read(cpu_info.loops_per_jiffy) ? : loops_per_jiffy; unsigned long lpj = this_cpu_read(cpu_info.loops_per_jiffy) ? : loops_per_jiffy;
int d0; int d0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment