From: george anzinger <george@mvista.com>
To: Volker Kuhlmann <hidden@paradise.net.nz>
Cc: Richard Zidlicky <rz@linux-m68k.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: kernel losing time
Date: Wed, 28 Aug 2002 09:24:18 -0700 [thread overview]
Message-ID: <3D6CF932.7D7C95F1@mvista.com> (raw)
In-Reply-To: 20020828013236.GA13595@paradise.net.nz
This bit of code was in 2.4.19 in
.../arch/i386/kernel/time.c
The suggestion (from the code) is that the PIT does not
reset to the proper value and that reprogramming it fixes
the problem. At the same time, this being in the interrupt
handler, it does generate at least one interrupt at or after
it fails to do the right thing.
Notes: 1.) This fix, each time it reprograms the PIT, will
loose (leak) a bit of time.
2.) The three I/O instructions to read the latch are
slow, AND this is done each interrupt.
3.) This version does not have a way to eliminate
the code on machines that don't have the problem.
4.) I reserve judgment on the comment that the spin
lock is not needed. It, I think, assumes that the PIT is
only accessed from the timer code, but this is not really
true (it ought to be true but is not :()
#if 0 /*
* SUBTLE: this is not necessary from here because
it's implicit in the
* write xtime_lock.
*/
spin_lock(&i8253_lock);
#endif
outb_p(0x00, 0x43); /* latch the count ASAP */
count = inb_p(0x40); /* read the latched count */
count |= inb(0x40) << 8;
/* VIA686a test code... reset the latch if count > max */
if (count > LATCH-1) {
static int last_whine;
outb_p(0x34, 0x43);
outb_p(LATCH & 0xff, 0x40);
outb(LATCH >> 8, 0x40);
count = LATCH - 1;
if(time_after(jiffies, last_whine))
{
printk(KERN_WARNING "probable hardware bug: clock timer
configuration lost - probably a VIA686a.\n");
printk(KERN_WARNING "probable hardware bug: restoring
chip configuration.\n");
last_whine = jiffies + HZ;
}
}
#if 0
spin_unlock(&i8253_lock);
#endif
--
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
next prev parent reply other threads:[~2002-08-28 16:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-25 10:55 kernel losing time Volker Kuhlmann
2002-08-25 11:01 ` Thunder from the hill
2002-08-25 11:47 ` Volker Kuhlmann
2002-08-25 21:55 ` erik
2002-08-25 22:02 ` Thunder from the hill
2002-08-26 7:30 ` Vojtech Pavlik
2002-08-26 0:05 ` Alan Cox
2002-08-26 1:13 ` Volker Kuhlmann
2002-08-26 10:15 ` Alan Cox
2002-08-26 10:27 ` Richard Zidlicky
2002-08-28 1:32 ` Volker Kuhlmann
2002-08-28 16:24 ` george anzinger [this message]
2002-08-26 3:05 ` erik
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=3D6CF932.7D7C95F1@mvista.com \
--to=george@mvista.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=hidden@paradise.net.nz \
--cc=linux-kernel@vger.kernel.org \
--cc=rz@linux-m68k.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