Interrupt storm detection

Alexander Leidinger Alexander at
Fri Jun 11 16:45:37 GMT 2004

On Fri, 11 Jun 2004 16:01:59 +0200
Ian FREISLICH <if at> wrote:

> > The DELAY(1) that I added to interrupt handling may have broken things
> > for devices that interrupt too much like lpt0 :-(.  DELAY(1) takes
> > quite a bit longer than 1 usec (more like 5 usec).  It looks like lpt0
> > takes 15-20 usec per interrupt and when 5 usec is added to this the
> > machine is transiently overloaded and doesn nothing except handle lpt0
> > interrupts until it complete a write, taking 20-25 usec each.  A
> > slightly slower machine might be overloaded even without the DELAY(1).
> Does a PII-266 constitute a slightly slower machine?

I've just seen this on my 1 GHz Athlon.

> > storm and the problem will recur.  I think it is possible for output
> > to lpt0 to transiently overload the machine -- it just takes a printer
> > has more than interrupt_storm_threshold bytes of buffering and can ack
> > each character that it receives as fast as the interrupt handler can
> > deliver them.  (Old driver timing bugs are also relevant here.  The
> Yes, it's a laser printer with 36Mb of memory and probably a faster
> CPU than server to which it's connected.

In my case it's a DeskJet 895 Cxi wich gets feeded by ghostscript (btw.
is someone able to print via usb? It doesn't work here anymore :-( ).

> > lpt interrupt handler has few clues about interrupt timing.  It waits
> > (for possibly too long) on entry but doesn't wait or even check for
> > another interrupt to arrive after it sends a character to the printer.
> > Thus getting another interrupt as soon as it returns is the usual case
> > if the printer hardware does the right things.)
> How easy would this be to fix?  It's possible that the routing might
> not return for quite a long time if it checks for an interrupt
> before it returns, or is this not a bad thing because because it's
> an interrupt thread and getting stuck in it won't hold up the whole
> system?

I had no problems working on the system while the printer sloooooowly
printed 2 pages.


           I'm available to get hired (preferred in .lu).                       Alexander @
  GPG fingerprint = C518 BC70 E67F 143F BE91  3365 79E2 9C60 B006 3FE7

More information about the freebsd-current mailing list