summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>2002-08-31 06:46:37 +0000
committergibbs <gibbs@FreeBSD.org>2002-08-31 06:46:37 +0000
commitb78a8f46b5113d8a9323ff33cd4ac3af78215eb6 (patch)
tree2b5498f8cc1bd30f9c11437e35320b5fc48cd061 /sys/dev/aic7xxx
parent50acf70bd75a3991263b58f1ccf02de752c6aa19 (diff)
downloadFreeBSD-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.h11
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
OpenPOWER on IntegriCloud