All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] x86: Fix sched_clock_cpu for systems with unsynchronized TSC
@ 2010-03-01 17:48 Dimitri Sivanich
  2010-03-01 17:58 ` Pallipadi, Venkatesh
  2010-03-02 12:39 ` [tip:sched/urgent] " tip-bot for Dimitri Sivanich
  0 siblings, 2 replies; 3+ messages in thread
From: Dimitri Sivanich @ 2010-03-01 17:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: H. Peter Anvin, venkatesh.pallipadi, Thomas Gleixner, Ingo Molnar

On UV systems, the TSC is not synchronized across blades.  The
sched_clock_cpu() function is returning values that can go backwards 
(I've seen as much as 8 seconds) when switching between cpus.

As each cpu comes up, early_init_intel() will currently set the
sched_clock_stable flag true.  When mark_tsc_unstable() runs, it clears
the flag, but this only occurs once (the first time a cpu comes up whose
TSC is not synchronized with cpu 0).  After this, early_init_intel() will
set the flag again as the next cpu comes up.

Only set sched_clock_stable if tsc has not been marked unstable.

Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>

---

Only affects x86 arch.

 arch/x86/kernel/cpu/intel.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux/arch/x86/kernel/cpu/intel.c
===================================================================
--- linux.orig/arch/x86/kernel/cpu/intel.c
+++ linux/arch/x86/kernel/cpu/intel.c
@@ -70,7 +70,8 @@ static void __cpuinit early_init_intel(s
 	if (c->x86_power & (1 << 8)) {
 		set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
 		set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
-		sched_clock_stable = 1;
+		if (!check_tsc_unstable())
+			sched_clock_stable = 1;
 	}
 
 	/*

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-03-02 12:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-01 17:48 [PATCH v2] x86: Fix sched_clock_cpu for systems with unsynchronized TSC Dimitri Sivanich
2010-03-01 17:58 ` Pallipadi, Venkatesh
2010-03-02 12:39 ` [tip:sched/urgent] " tip-bot for Dimitri Sivanich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.