| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Peter Zijlstra <peterz@infradead.org> |
| Date: Thu, 13 Apr 2017 14:56:44 +0200 |
| Subject: x86/tsc: Provide 'tsc=unstable' boot parameter |
| |
| From: Peter Zijlstra <peterz@infradead.org> |
| |
| |
| [ Upstream commit 8309f86cd41e8714526867177facf7a316d9be53 ] |
| |
| Since the clocksource watchdog will only detect broken TSC after the |
| fact, all TSC based clocks will likely have observed non-continuous |
| values before/when switching away from TSC. |
| |
| Therefore only thing to fully avoid random clock movement when your |
| BIOS randomly mucks with TSC values from SMI handlers is reporting the |
| TSC as unstable at boot. |
| |
| Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Mike Galbraith <efault@gmx.de> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Cc: linux-kernel@vger.kernel.org |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kernel/tsc.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/arch/x86/kernel/tsc.c |
| +++ b/arch/x86/kernel/tsc.c |
| @@ -366,6 +366,8 @@ static int __init tsc_setup(char *str) |
| tsc_clocksource_reliable = 1; |
| if (!strncmp(str, "noirqtime", 9)) |
| no_sched_irq_time = 1; |
| + if (!strcmp(str, "unstable")) |
| + mark_tsc_unstable("boot parameter"); |
| return 1; |
| } |
| |