Hi!

I've found a bug in my VIA SuperSouth (vt82c686a) chip (ISA bridge
revision 0x12, silicon rev CD) on my FIC VA-503A rev 1.2:

When there is heavy disk activity (several tars running concurrently on
UDMA66 drive, or tar'ing from one UDMA66 drive to another over two
channels), the system time, namely gettimeofday() goes crazy - now and
then it advances the time about 1:20 for a fraction of a second and then
changes back to normal time.

This causes X to blank the screen when it should not, squid to terminate
connections with a 'timeout' randomly and other nice effects.

This is because the system timer (i8253) counter is reset to a wrong
value. Possible causes include temperature problems (although the chip
ambient temp is OK), or some crosstalk stuff within the chip.

Now I'd like to know if I have a faulty chip, faulty motherboard or
whether this problem exists in more chips as well.

If anyone owning a motherboard with the vt82c686a chip (VIA with UDMA66
and audio), could test this, I'd appreciate that.

Attached is a patch that makes the problems go away by reprogramming the
chip in the problematic case.

-- 
Vojtech Pavlik
SuSE Labs
diff -urN linux-test10-pre5-old/arch/i386/kernel/time.c linux/arch/i386/kernel/time.c
--- linux-test10-pre5-old/arch/i386/kernel/time.c       Wed Oct 25 12:05:22 2000
+++ linux/arch/i386/kernel/time.c       Thu Oct 26 15:29:23 2000
@@ -492,6 +492,14 @@
 
                count = inb_p(0x40);    /* read the latched count */
                count |= inb(0x40) << 8;
+
+               if (count > LATCH-1) {
+                       outb_p(0x34, 0x43);
+                       outb_p(LATCH & 0xff, 0x40);
+                       outb(LATCH >> 8, 0x40);
+                       count = LATCH - 1;
+               }
+
                spin_unlock(&i8253_lock);
 
                count = ((LATCH-1) - count) * TICK_SIZE;

Reply via email to