diff options
author | gibbs <gibbs@FreeBSD.org> | 2002-08-31 06:46:37 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 2002-08-31 06:46:37 +0000 |
commit | b78a8f46b5113d8a9323ff33cd4ac3af78215eb6 (patch) | |
tree | 2b5498f8cc1bd30f9c11437e35320b5fc48cd061 /sys/dev/aic7xxx | |
parent | 50acf70bd75a3991263b58f1ccf02de752c6aa19 (diff) | |
download | FreeBSD-src-b78a8f46b5113d8a9323ff33cd4ac3af78215eb6.zip FreeBSD-src-b78a8f46b5113d8a9323ff33cd4ac3af78215eb6.tar.gz |
If interrupts are disabled on the card, don't bother running
our interrupt handler. Our handler was called due to a shared
interrupt, and the card's interrupts are explicitly disabled
to prevent entry into our interrupt handler.
Diffstat (limited to 'sys/dev/aic7xxx')
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx_inline.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx_inline.h b/sys/dev/aic7xxx/aic7xxx_inline.h index ca7d932..f594e78 100644 --- a/sys/dev/aic7xxx/aic7xxx_inline.h +++ b/sys/dev/aic7xxx/aic7xxx_inline.h @@ -37,7 +37,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_inline.h#33 $ + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_inline.h#38 $ * * $FreeBSD$ */ @@ -494,6 +494,15 @@ ahc_intr(struct ahc_softc *ahc) { u_int intstat; + if ((ahc->pause & INTEN) == 0) { + /* + * Our interrupt is not enabled on the chip + * and may be disabled for re-entrancy reasons, + * so just return. This is likely just a shared + * interrupt. + */ + return; + } /* * Instead of directly reading the interrupt status register, * infer the cause of the interrupt by checking our in-core |