summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authormjacob <mjacob@NetBSD.org>2001-10-06 20:33:24 +0000
committermjacob <mjacob@NetBSD.org>2001-10-06 20:33:24 +0000
commitdaf0329c3c97f41ef2ebe8ae1cb0085ec11d206a (patch)
treeae2445225cfc9373ec79681217c078f0b3aca27b /sys/dev
parentc1de913a5f1ebe11aacbd46f46b230da019ae79c (diff)
Respect QLogic's errata- read BIU_ISR even on the 2300
to see if there's an interrupt (avoids PCI parity errors which can occur on the 2312 if you access some registers from the host at the same time the RISC on the 2312 is accessing them).
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/isp_pci.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/pci/isp_pci.c b/sys/dev/pci/isp_pci.c
index ee309fc8485..326aa246d38 100644
--- a/sys/dev/pci/isp_pci.c
+++ b/sys/dev/pci/isp_pci.c
@@ -1,4 +1,4 @@
-/* $NetBSD: isp_pci.c,v 1.72 2001/09/01 07:12:25 mjacob Exp $ */
+/* $NetBSD: isp_pci.c,v 1.73 2001/10/06 20:33:24 mjacob Exp $ */
/*
* This driver, which is contained in NetBSD in the files:
*
@@ -707,6 +707,10 @@ isp_pci_rd_isr_2300(struct ispsoftc *isp, u_int16_t *isrp,
struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp;
u_int32_t r2hisr;
+ if (!(BXR2(pcs, IspVirt2Off(isp, BIU_ISR)) & BIU2100_ISR_RISC_INT)) {
+ *isrp = 0;
+ return (0);
+ }
r2hisr = bus_space_read_4(pcs->pci_st, pcs->pci_sh,
IspVirt2Off(pcs, BIU_R2HSTSLO));
isp_prt(isp, ISP_LOGDEBUG3, "RISC2HOST ISR 0x%x", r2hisr);