summaryrefslogtreecommitdiff
path: root/sys/arch/sgi/xbow
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-05-21 16:26:16 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-05-21 16:26:16 +0000
commit6b517ac9c7d902cc4a2675055b234d29dca1ab46 (patch)
treedb87f013e589508f79e06da4cd8ee503570336ca /sys/arch/sgi/xbow
parent17de17646f8e68cae61a0906428351c5e9571d69 (diff)
Do not attempt the interrupt deadlock workaround on IP30 yet, since the
IP27 logic will obviously not work there.
Diffstat (limited to 'sys/arch/sgi/xbow')
-rw-r--r--sys/arch/sgi/xbow/xbridge.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/arch/sgi/xbow/xbridge.c b/sys/arch/sgi/xbow/xbridge.c
index 3cf2bdd4565..aa28a9f078b 100644
--- a/sys/arch/sgi/xbow/xbridge.c
+++ b/sys/arch/sgi/xbow/xbridge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xbridge.c,v 1.19 2009/05/15 17:18:16 miod Exp $ */
+/* $OpenBSD: xbridge.c,v 1.20 2009/05/21 16:26:15 miod Exp $ */
/*
* Copyright (c) 2008, 2009 Miodrag Vallat.
@@ -214,7 +214,7 @@ xbridge_attach(struct device *parent, struct device *self, void *aux)
0, BRIDGE_PCI_MEM_SPACE_LENGTH - 1,
M_DEVBUF, NULL, 0, EX_NOWAIT);
- if (!ISSET(sc->sc_flags, XBRIDGE_FLAGS_XBRIDGE) &&
+ if (ISSET(sc->sc_flags, XBRIDGE_FLAGS_XBRIDGE) ||
xaa->xaa_revision >= 4) {
/* Unrestricted I/O mappings in the large window */
bcopy(xaa->xaa_long_tag, sc->sc_io_bus_space,
@@ -721,9 +721,14 @@ xbridge_intr_handler(void *v)
BRIDGE_INT_FORCE_PIN(xi->xi_intrbit), 1);
} else {
if (bus_space_read_4(sc->sc_iot, sc->sc_regh,
- BRIDGE_ISR) & (1 << xi->xi_intrbit))
- IP27_RHUB_PI_S(nasid, 0, HUB_IR_CHANGE,
- HUB_IR_SET | xi->xi_intrsrc);
+ BRIDGE_ISR) & (1 << xi->xi_intrbit)) {
+ if (sys_config.system_type == SGI_OCTANE) {
+ /* XXX what to do there? */
+ } else {
+ IP27_RHUB_PI_S(nasid, 0, HUB_IR_CHANGE,
+ HUB_IR_SET | xi->xi_intrsrc);
+ }
+ }
}
return 1;