diff options
| author | mjacob <mjacob@NetBSD.org> | 2001-10-06 20:33:24 +0000 |
|---|---|---|
| committer | mjacob <mjacob@NetBSD.org> | 2001-10-06 20:33:24 +0000 |
| commit | daf0329c3c97f41ef2ebe8ae1cb0085ec11d206a (patch) | |
| tree | ae2445225cfc9373ec79681217c078f0b3aca27b /sys/dev | |
| parent | c1de913a5f1ebe11aacbd46f46b230da019ae79c (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.c | 6 |
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); |
