Subject: Re: isp(4) with Q-Logic 2340 suffers "stray interrupts" under load
To: NetBSD Kernel Technical Discussion List <tech-kern@NetBSD.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 03/28/2005 13:44:05
On Sun, Mar 27, 2005 at 04:20:55PM -0500, Greg A. Woods wrote:
> [...]
>
> It would be good to know why the card is sending these "stray"
> interrupts though and why the driver ignores or can't see them. Perhaps
> the ISR "fixes" (e.g. dec/ic/isp.c revision 1.97) were not quite complete?
>
> (It wouldn't hurt to know why the com(4) driver misses the occasional
> interrupt too!)
The com(4) and the isp(4) interrupt routine contain a loop, which will check
if another interrupt was raised while handling this one. I think there is a
race condition that can cause the interrupt controller to have a pending
interrupt which has already been handled by the loop in the interrupt handler.
This is harmless and probably can't be avoided (either we have pending
interrupts which have already been handled, or or may miss real interrupts),
but will cause the interrupt controller driver to think it's a spurious
interrupt.
--
Manuel Bouyer <bouyer@antioche.eu.org>
NetBSD: 26 ans d'experience feront toujours la difference
--