summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2006-09-25 22:44:57 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2006-09-25 22:44:57 +0000
commit4353a4b644ad53abdb9e6f53e83018c7fa3ca5dd (patch)
tree9515741a6ea0649dbb799539e1c53ff81698f3b4 /sys
parent676ed682e6f64c8658af38e697809cd89bb71a8b (diff)
enabling interrupts isnt a bug, so dont put XXX next to it.
only ack the interrupts we deal with in the interrupt handler. use the correct macros when setting the interrupt mask.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/arc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/pci/arc.c b/sys/dev/pci/arc.c
index e1c9f6a2f8b..f90d1b0a686 100644
--- a/sys/dev/pci/arc.c
+++ b/sys/dev/pci/arc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: arc.c,v 1.48 2006/08/28 05:36:00 dlg Exp $ */
+/* $OpenBSD: arc.c,v 1.49 2006/09/25 22:44:56 dlg Exp $ */
/*
* Copyright (c) 2006 David Gwynne <dlg@openbsd.org>
@@ -527,7 +527,7 @@ arc_attach(struct device *parent, struct device *self, void *aux)
child = config_found(self, &sc->sc_link, scsiprint);
sc->sc_scsibus = (struct scsibus_softc *)child;
- /* XXX enable interrupts */
+ /* enable interrupts */
arc_write(sc, ARC_REG_INTRMASK,
~(ARC_REG_INTRMASK_POSTQUEUE|ARC_REG_INTRSTAT_DOORBELL));
@@ -565,6 +565,7 @@ arc_intr(void *arg)
intrstat = arc_read(sc, ARC_REG_INTRSTAT);
if (intrstat == 0x0)
return (0);
+ intrstat &= ARC_REG_INTRSTAT_POSTQUEUE | ARC_REG_INTRSTAT_DOORBELL;
arc_write(sc, ARC_REG_INTRSTAT, intrstat);
if (intrstat & ARC_REG_INTRSTAT_DOORBELL) {
@@ -1486,7 +1487,7 @@ arc_unlock(struct arc_softc *sc)
s = splbio();
sc->sc_talking = 0;
arc_write(sc, ARC_REG_INTRMASK,
- ~(ARC_REG_INTRMASK_POSTQUEUE|ARC_REG_INTRSTAT_DOORBELL));
+ ~(ARC_REG_INTRMASK_POSTQUEUE|ARC_REG_INTRMASK_DOORBELL));
splx(s);
rw_exit_write(&sc->sc_lock);
}
@@ -1498,7 +1499,7 @@ arc_wait(struct arc_softc *sc)
s = splbio();
arc_write(sc, ARC_REG_INTRMASK,
- ~(ARC_REG_INTRMASK_POSTQUEUE|ARC_REG_INTRSTAT_DOORBELL));
+ ~(ARC_REG_INTRMASK_POSTQUEUE|ARC_REG_INTRMASK_DOORBELL));
if (tsleep(sc, PWAIT, "arcdb", hz) == EWOULDBLOCK)
arc_write(sc, ARC_REG_INTRMASK, ~ARC_REG_INTRMASK_POSTQUEUE);
splx(s);