diff options
author | mjacob <mjacob@FreeBSD.org> | 2001-10-06 19:19:24 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2001-10-06 19:19:24 +0000 |
commit | 9c76564553e32b45ebeec58fe24e5ad190e053ac (patch) | |
tree | 8d40db6fd9bb62f5673edd2674b938a65d022525 | |
parent | 255e13a69a10a6b2a2477549e48f524b81ab22f5 (diff) | |
download | FreeBSD-src-9c76564553e32b45ebeec58fe24e5ad190e053ac.zip FreeBSD-src-9c76564553e32b45ebeec58fe24e5ad190e053ac.tar.gz |
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
C accessing them).
MFC after: 1 day
-rw-r--r-- | sys/dev/isp/isp_pci.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c index 2914504..73cdb54 100644 --- a/sys/dev/isp/isp_pci.c +++ b/sys/dev/isp/isp_pci.c @@ -835,6 +835,8 @@ 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)) == 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); |