public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: george anzinger <george@mvista.com>
To: john stultz <johnstul@us.ibm.com>
Cc: lkml <linux-kernel@vger.kernel.org>
Subject: Re: [RFC][PATCH] linux-2.4.21-pre4_tsc-lost-tick_A0
Date: Thu, 30 Jan 2003 17:08:21 -0800	[thread overview]
Message-ID: <3E39CC85.D9A339D0@mvista.com> (raw)
In-Reply-To: 1043972238.19049.27.camel@w-jstultz2.beaverton.ibm.com

john stultz wrote:
> 
> All,
>         Occasionally due to hardware or software, its possible to miss multiple
> timer interrupts. This can cause small inconsistencies in time as well
> as time drifting behind other systems.
> 
> This patch checks each timer interrupt, using the TSC, if we have missed
> any ticks. Then if so, compensates jiffies for them. I have already
> submitted a patch for 2.4 which does this for the cyclone-timer based
> code, and I've been testing a version for 2.5 for all time sources (in
> -mm6, I believe).
> 
> Since this code affects more users then the cyclone-based version, I
> want to be more careful and get more testing in the 2.5 tree before I
> submit this. However, just so people wanting it can play with it and
> test it themselves, I wanted to send this out for comments.
> 
> I'm already somewhat cautious that loops_per_jiffy isn't going to cut it
> with this patch (I'm thinking fast_gettimeoffset_quotient would probably
> be better). So please let me know if you find any issues with this
> patch.

I think you are wondering about the "/", as am I.  Possibly
a while loop, or, something like
fast_gettimeoffset_quotient, but scaled to do jiffies
instead of micro seconds.  Still you SHOULD be doing this so
seldom that one wonders if the "/" is all that bad.

Another thing, possibly not so easily fixed given the
division between "arch" code and common code, but I would
like to see jiffies updated in only ONE place.  With this
patch it is updated in .../kernel/timer.c AND in
.../arch/kernel/time.c.  In the high-res-timers patch I made
the jiffies update an inline in an "arch" header file so I
could have the best of both worlds, i.e. update from common
code using arch resources (TSC, etc).

-g
> 
> diff -Nru a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c
> --- a/arch/i386/kernel/time.c   Thu Jan 30 16:03:19 2003
> +++ b/arch/i386/kernel/time.c   Thu Jan 30 16:03:19 2003
> @@ -657,6 +657,7 @@
>         if(use_cyclone)
>                 mark_timeoffset_cyclone();
>         else if (use_tsc) {
> +               unsigned long delta = last_tsc_low;
>                 /*
>                  * It is important that these two operations happen almost at
>                  * the same time. We do the RDTSC stuff first, since it's
> @@ -700,6 +701,13 @@
>                    momentarily as they flip back to zero */
>                 if (count == LATCH) {
>                         count--;
> +               }
> +
> +               /* lost tick compensation */
> +               delta = last_tsc_low - delta;
> +               if(delta >= 2*loops_per_jiffy){
> +                       delta = (delta/loops_per_jiffy)-1;
> +                       jiffies += delta;
>                 }
> 
>                 count = ((LATCH-1) - count) * TICK_SIZE;
> 

-- 
George Anzinger   george@mvista.com
High-res-timers: 
http://sourceforge.net/projects/high-res-timers/
Preemption patch:
http://www.kernel.org/pub/linux/kernel/people/rml

  reply	other threads:[~2003-01-31  0:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-31  0:17 [RFC][PATCH] linux-2.4.21-pre4_tsc-lost-tick_A0 john stultz
2003-01-31  1:08 ` george anzinger [this message]
2003-01-31  1:22   ` john stultz
2003-01-31  1:41     ` george anzinger
2003-01-31 20:19       ` john stultz

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=3E39CC85.D9A339D0@mvista.com \
    --to=george@mvista.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox