Subject: serial port silo overflow repair
To: None <tech-kern@NetBSD.ORG>
From: Erik E. Fair <fair@clock.org>
List: tech-kern
Date: 07/28/1997 22:41:13
We've had a recurring problem with serial port "silo overflow" conditions
happening in various versions of NetBSD on various platforms which we've
not dealt with in a systematic way. A friend of mine who once worked on the
Amiga DOS suggested a way to find those places in our kernel that are
locking out serial interrupts for "too long", thus causing "silo overflows":

Every time a silo overflow occurs, the serial interrupt handler should
report not only that it did happen, but also where the program counter was
when it did (i.e. pick the PC off the stack and print it). He also
recommended reporting the PC for "near full" silo conditions, to find the
marginal cases. Since the interrupt will be posted just after interrupts
are enabled again, the PC should be at the end of the offending code
section(s). Armed with this information, we can tune the kernel better (and
in the end, it should be more responsive to a whole host of events, not
just serial interrupts).

In principle, this information should be easy to get at, since the clock
interrupt routine does it to count CPU idle time (by comparing the PC
against the location in locore.s where the CPU will be spinning when there
is nothing to run).

	Erik <fair@clock.org>