summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2001-10-06 19:19:24 +0000
committermjacob <mjacob@FreeBSD.org>2001-10-06 19:19:24 +0000
commit9c76564553e32b45ebeec58fe24e5ad190e053ac (patch)
tree8d40db6fd9bb62f5673edd2674b938a65d022525
parent255e13a69a10a6b2a2477549e48f524b81ab22f5 (diff)
downloadFreeBSD-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.c2
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);
OpenPOWER on IntegriCloud