diff mbox

freedesktop bug id: 100548, bisected to sched/clock commit

Message ID 20170413114803.poziwglvrzbmtmvb@hirez.programming.kicks-ass.net (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Zijlstra April 13, 2017, 11:48 a.m. UTC
On Wed, Apr 12, 2017 at 05:49:53PM +0300, Martin Peres wrote:

> Good to know. Is there a way to disable this behaviour, as a workaround for
> our CI system until a proper fix lands? We already pushed locally the revert
> for this patch, but that may affect other platforms which do not exhibit the
> problem.

Blergh, so the patch is correct, but the __gtod_offset calculation is
fed with absolute crap numbers due to 'circumstances' and then using it
ends up being worse than not using it.

Something like the below could be a work-around, but let me see if I
can't fix things better.

---
 arch/x86/kernel/tsc.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Martin Peres April 13, 2017, 12:30 p.m. UTC | #1
On 13/04/17 14:48, Peter Zijlstra wrote:
> On Wed, Apr 12, 2017 at 05:49:53PM +0300, Martin Peres wrote:
>
>> Good to know. Is there a way to disable this behaviour, as a workaround for
>> our CI system until a proper fix lands? We already pushed locally the revert
>> for this patch, but that may affect other platforms which do not exhibit the
>> problem.
>
> Blergh, so the patch is correct, but the __gtod_offset calculation is
> fed with absolute crap numbers due to 'circumstances' and then using it
> ends up being worse than not using it.

Thanks for taking this bug seriously!

>
> Something like the below could be a work-around, but let me see if I
> can't fix things better.

Yeah, this should be a last-resort.

Thanks,
Martin
diff mbox

Patch

diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 714dfba..8ab883a 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -374,6 +374,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;
 }