summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2006-03-07 20:46:47 +0000
committerBrad Smith <brad@cvs.openbsd.org>2006-03-07 20:46:47 +0000
commit68f73480e8e568e1ed023872984f4b600f27a175 (patch)
tree4e1e2cabff8d888a52fb6bad9b506022ccb2eec0 /sys
parent3749e2909f3f8eb6df96f9a31f9189fb6562609e (diff)
Don't issue I2O_EXEC_IOP_CLEAR to AMI boards, since some
firmware revisions can't handle it. From ad NetBSD ok mickey@
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/i2o/iop.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/dev/i2o/iop.c b/sys/dev/i2o/iop.c
index 7239d9b417e..dd38ba203dd 100644
--- a/sys/dev/i2o/iop.c
+++ b/sys/dev/i2o/iop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: iop.c,v 1.27 2005/11/19 02:18:00 pedro Exp $ */
+/* $OpenBSD: iop.c,v 1.28 2006/03/07 20:46:46 brad Exp $ */
/* $NetBSD: iop.c,v 1.12 2001/03/21 14:27:05 ad Exp $ */
/*-
@@ -887,10 +887,18 @@ iop_shutdown(void *junk)
continue;
if ((sc->sc_flags & IOP_ONLINE) == 0)
continue;
+
iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_SYS_QUIESCE, IOP_ICTX,
0, 5000);
- iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_IOP_CLEAR, IOP_ICTX,
- 0, 1000);
+
+ if (letoh16(sc->sc_status.orgid) != I2O_ORG_AMI) {
+ /*
+ * Some AMI firmware revisions will go to sleep and
+ * never come back after this.
+ */
+ iop_simple_cmd(sc, I2O_TID_IOP, I2O_EXEC_IOP_CLEAR,
+ IOP_ICTX, 0, 1000);
+ }
}
/* Wait. Some boards could still be flushing, stupidly enough. */