summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Beck <beck@cvs.openbsd.org>2005-04-04 22:22:08 +0000
committerBob Beck <beck@cvs.openbsd.org>2005-04-04 22:22:08 +0000
commite34711b626d65ca1183eb7d50315f8188388775f (patch)
treed9bf5d4de52e120750656a662537b2ff7137314e
parent6baa13ce4e00828df38532fce0ad100016b95f2e (diff)
Fix interrupt sharing on bge, by checking the same way the linux
driver does. ok deraadt@, testing and ok krw@, markus@
-rw-r--r--sys/dev/pci/if_bge.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c
index 80874e43a4e..e83682db322 100644
--- a/sys/dev/pci/if_bge.c
+++ b/sys/dev/pci/if_bge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bge.c,v 1.56 2005/04/01 02:49:03 brad Exp $ */
+/* $OpenBSD: if_bge.c,v 1.57 2005/04/04 22:22:07 beck Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
* Copyright (c) 1997, 1998, 1999, 2001
@@ -2381,6 +2381,10 @@ bge_intr(xsc)
if (!(CSR_READ_4(sc, BGE_MISC_LOCAL_CTL) & BGE_MLC_INTR_STATE))
return (0);
#endif
+ if (!(sc->bge_rdata->bge_status_block.bge_status &
+ BGE_STATFLAG_UPDATED)) /* shared interrupt */
+ return(0);
+
/* Ack interrupt and stop others from occurring. */
CSR_WRITE_4(sc, BGE_MBX_IRQ0_LO, 1);