I'm looking for the remaining victims of the dreaded "microuptime
went backwards" message.

If you can reliably reproduce the problem, please contact me, so
we can arrange for some very detailed tracing to try to find out
what exactly is going on.  I have not been able to trigger the
problem in my lab in a long time.

If you see the message only occationally, please try the attached
patch and let me know if this changes the picture.  The patch is
not meant as a fix, but it might reduce the impact of this condition
considerably when it happens.  Basically by reducing the width of
the timecounter the magnitude of the hit we take if the timecounter
goes backwards is reduced from about an hour to approx 110msec.

Reducing the width to less than 17 bits starts to run the risk of
ambiguity due to clock rollover.

This patch may not be safe with PCAUDIO.


Index: clock.c
RCS file: /home/ncvs/src/sys/i386/isa/clock.c,v
retrieving revision 1.155
diff -u -r1.155 clock.c
--- clock.c     2000/07/30 21:05:22     1.155
+++ clock.c     2000/09/04 16:34:16
@@ -194,7 +194,7 @@
 static struct timecounter i8254_timecounter = {
        i8254_get_timecount,    /* get_timecount */
        0,                      /* no poll_pps */
-       ~0u,                    /* counter_mask */
+       0x1ffff,                /* counter_mask */
        0,                      /* frequency */
        "i8254"                 /* name */

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
[EMAIL PROTECTED]         | TCP/IP since RFC 956
FreeBSD coreteam member | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to