Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Jun 1996 01:02:49 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, j@uriah.heep.sax.de
Cc:        davidg@Root.COM, freebsd-current@FreeBSD.org, jkh@time.cdrom.com
Subject:   Re: 6/14/96 kernel won't boot
Message-ID:  <199606151502.BAA16190@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> change the DELAY(10)'s to DELAY(1000)'s and reduce the counts
>> proportionally, but this is only easy in part of the reset code -
>> there are some DELAY(10)'s in kbd_wait(), and it's more important
>> for the delays to be right in the main code.

>Hmm, shouldn't they be at least DELAY(20)'s or so?  I suspect one of
>the reasons why some of the keyboards broke with the old code (which
>was my main reason to change it) is that the new i586+ machines are
>too fast so the assumed overhead for small DELAY's turned almost into
>nop's.

The old code waited forever, and the main code is more vulnerable to
too-short delays than the reset code.

DELAY(n) only guarantees to delay for >= (n - 20)us, so expecting
DELAY(10) to delay for 10us isn't good.  In practice, the minumum
delay is a few microseconds unless you have very fast i8254 registers.
DELAY(10) takes about 4us on my ASUS P133, mostly for accessing the
i8254.  TImeouts are usually many times larger than necessary so no 
problems are caused by reducing them by a factor of < 10.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199606151502.BAA16190>