From: Andy Whitcroft <apw@shadowen.org>
To: john stultz <johnstul@us.ibm.com>
Cc: linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH] timer tsc ensure we allow for initial tsc and tsc sync
Date: Mon, 30 Jan 2006 13:30:24 +0000 [thread overview]
Message-ID: <43DE14F0.5070208@shadowen.org> (raw)
In-Reply-To: <1138399887.14289.107.camel@cog.beaverton.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 535 bytes --]
john stultz wrote:
> There's a test patch in there that maybe you could try?
Yep this one also seems to fix it. It also looks like a more general
solution than mine. I've attached the patch here so that its recorded
with this. I've added some description to the top. Tests ok on the
machine which was showing issues for me. Help yourself to a:
Acked-by: Andy Whitcroft <apw@shadowen.org>
If you are happy with it I for one would like to see it in -mm. Perhaps
you could sign it off and send it to Andrew for inclusion.
-apw
[-- Attachment #2: jstultz-suppress-lost-tick-processing-till-after-timers-are-up-and-synchronised --]
[-- Type: text/plain, Size: 1912 bytes --]
From: John Stultz <johnstul@us.ibm.com>
Suppress lost tick detection until we are fully initialised.
This prevents any modifications to the high resolution timers
from causing non-linearities in the flow of time. For example on
an SMP system we resyncronise the TSC values for all processors.
This results in a TSC reset which will be seen as a huge apparent
tick loss. This can cause premature expiry of timers and in extreme
cases can cause the soft lockup detection to fire.
Acked-by: Andy Whitcroft <apw@shadowen.org>
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c
--- a/arch/i386/kernel/timers/timer_tsc.c
+++ b/arch/i386/kernel/timers/timer_tsc.c
@@ -45,6 +45,15 @@ static unsigned long last_tsc_high; /* m
static unsigned long long monotonic_base;
static seqlock_t monotonic_lock = SEQLOCK_UNLOCKED;
+/* Avoid compensating for lost ticks before TSCs are synched */
+static int detect_lost_ticks;
+static int __init start_lost_tick_compensation(void)
+{
+ detect_lost_ticks = 1;
+ return 0;
+}
+late_initcall(start_lost_tick_compensation);
+
/* convert from cycles(64bits) => nanoseconds (64bits)
* basic equation:
* ns = cycles / (freq / ns_per_sec)
@@ -196,7 +205,8 @@ static void mark_offset_tsc_hpet(void)
/* lost tick compensation */
offset = hpet_readl(HPET_T0_CMP) - hpet_tick;
- if (unlikely(((offset - hpet_last) > hpet_tick) && (hpet_last != 0))) {
+ if (unlikely(((offset - hpet_last) > hpet_tick) && (hpet_last != 0))
+ && detect_lost_ticks) {
int lost_ticks = (offset - hpet_last) / hpet_tick;
jiffies_64 += lost_ticks;
}
@@ -419,7 +429,7 @@ static void mark_offset_tsc(void)
delta += delay_at_last_interrupt;
lost = delta/(1000000/HZ);
delay = delta%(1000000/HZ);
- if (lost >= 2) {
+ if (lost >= 2 && detect_lost_ticks) {
jiffies_64 += lost-1;
/* sanity check to ensure we're not always losing ticks */
next prev parent reply other threads:[~2006-01-30 13:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-20 12:53 [PATCH] timer tsc ensure we allow for initial tsc and tsc sync Andy Whitcroft
2006-01-27 22:11 ` john stultz
2006-01-30 13:30 ` Andy Whitcroft [this message]
2006-01-31 23:21 ` Andrew Morton
2006-01-31 23:28 ` john stultz
2006-01-31 23:40 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43DE14F0.5070208@shadowen.org \
--to=apw@shadowen.org \
--cc=akpm@osdl.org \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.