Subject: Re: i386 isa interrupt latency
To: Chris G Demetriou <>
From: Ronald Khoo <>
List: port-i386
Date: 07/06/1995 15:43:57
> Is there any periodicity?  either in the time domain, or in the
> "bytes transferred" domain?

Apparently not.  My protocol analyser goes "in sync" and stays there
for a random amount of time between about a couple of seconds up to
perhaps 35 seconds (at 115200).  This is with NetBSD on the 486/33 256cache

> I assume that you're running this from single-user mode;

No kidding :-)

> 	(1) add a write to your protoboard at each place where
> 		splclock() and/or splhigh() are set.  when 
> 		they're set, cause an NMI and find out what's setting
> 		them.

That sounds like a lot of tracing

> 	(2) set things up so that if the interrupt line has been
> 		asserted and not acknowledged for time T, cause
> 		an NMI.

That sounds like much less work.

> once the kernel gets nailed by the NMI, it should drop you into
> DDB.  (if not, fix it!  8-)

Okay, looks like I'm going to get my first kernel with options DDB in it.
Now to see if I can figure out what to do with it ;-)

> If you're interested in doing more hardware-level investigation, i can
> probably come up with a few 'interesting' tests.

I'll try and schedule some time for (2) above first.  Sigh.
My boss is saying "free works, we'll use it instead".
So it might not be this month.

> "first you've gotta find it..."  8-)

Right.  I was hoping that someone already had :-(
So, you guys out there in mailing list land, if you have ANY wacky ideas
at all, please mail me :-)

> Also, are you seeing actually 115.2k _throughput_ through their TTYs?

Yes.  99% port utilisation figures from the protocol analyser.
That's with just one serial port firing.  With two, I think I'm
running into latency problems somewhere which drops it a couple of
points, but that all.

Chris, I'm not actually too worried about _throughput_ as long as the
interrupt gets serviced in time.  I can fix that problem by using a P90
instead of a 486.

What I can't tolerate is a missed interrupt causing a transmitter underrun
and a frame abort throwing away the last segment of a 1500 byte frame
too often.

I appreciate your quick reply.  Thanks.

/* +60 3 241 5232  | +44 181 371 1000 */