* [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* Re: [PATCH v2] x86: Fix sched_clock_cpu for systems with unsynchronized TSC
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
1 sibling, 0 replies; 3+ messages in thread
From: Pallipadi, Venkatesh @ 2010-03-01 17:58 UTC (permalink / raw)
To: Dimitri Sivanich
Cc: linux-kernel@vger.kernel.org, H. Peter Anvin, Thomas Gleixner,
Ingo Molnar
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
On Mon, 2010-03-01 at 09:48 -0800, Dimitri Sivanich wrote:
> 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* [tip:sched/urgent] x86: Fix sched_clock_cpu for systems with unsynchronized TSC
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-bot for Dimitri Sivanich
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Dimitri Sivanich @ 2010-03-02 12:39 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, a.p.zijlstra, venkatesh.pallipadi, tglx,
sivanich, mingo
Commit-ID: 14be1f7454ea96ee614467a49cf018a1a383b189
Gitweb: http://git.kernel.org/tip/14be1f7454ea96ee614467a49cf018a1a383b189
Author: Dimitri Sivanich <sivanich@sgi.com>
AuthorDate: Mon, 1 Mar 2010 11:48:15 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Tue, 2 Mar 2010 13:36:11 +0100
x86: Fix sched_clock_cpu for systems with unsynchronized TSC
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>
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <20100301174815.GC8224@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/x86/kernel/cpu/intel.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 879666f..7e1cca1 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -70,7 +70,8 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
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 related [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.