Commit 4f97aa5a authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] Fix via686a/KX133 TSC failure

From: Chris Bajumpaa <cbajumpa@or8.net>

This patch fixes a problem with the TSC failing on via686a/KX133
motherboards either reverting to using the pit or deadlocking the machine
alltogether under heavy load.  (Specifically Abit KA7/KA7-100).

Message from the log:
Dec 18 18:20:37 grinder kernel: Losing too many ticks!
Dec 18 18:20:37 grinder kernel: TSC cannot be used as a timesource. (Are
you running with SpeedStep?)
Dec 18 18:20:37 grinder kernel: Falling back to a sane timesource.

The snippet of code that was missing from timer_tsc.c comes from
timer_pit.c.
parent 3116a3ac
...@@ -183,6 +183,18 @@ static void mark_offset_tsc(void) ...@@ -183,6 +183,18 @@ static void mark_offset_tsc(void)
count = inb_p(PIT_CH0); /* read the latched count */ count = inb_p(PIT_CH0); /* read the latched count */
count |= inb(PIT_CH0) << 8; count |= inb(PIT_CH0) << 8;
/*
* VIA686a test code... reset the latch if count > max + 1
* from timer_pit.c - cjb
*/
if (count > LATCH) {
outb_p(0x34, PIT_MODE);
outb_p(LATCH & 0xff, PIT_CH0);
outb(LATCH >> 8, PIT_CH0);
count = LATCH - 1;
}
spin_unlock(&i8253_lock); spin_unlock(&i8253_lock);
if (pit_latch_buggy) { if (pit_latch_buggy) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment