diff options
author | 2006-03-07 20:46:46 +0000 | |
---|---|---|
committer | 2006-03-07 20:46:46 +0000 | |
commit | 165ec50bdb4c68eb3ccc64aff6a0a9e683981295 (patch) | |
tree | d6c4d2e29ea7fe5888efaab56e6cf1c1b965f74b | |
parent | Remove COMPAT_1x stuff inherited from NetBSD, which does not apply to us. (diff) | |
download | wireguard-openbsd-165ec50bdb4c68eb3ccc64aff6a0a9e683981295.tar.xz wireguard-openbsd-165ec50bdb4c68eb3ccc64aff6a0a9e683981295.zip |
Don't issue I2O_EXEC_IOP_CLEAR to AMI boards, since some
firmware revisions can't handle it.
From ad NetBSD
ok mickey@
-rw-r--r-- | sys/dev/i2o/iop.c | 14 |
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. */ |