summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitsuru IWASAKI <iwasaki@FreeBSD.org>2008-02-15 13:55:23 +0000
committerMitsuru IWASAKI <iwasaki@FreeBSD.org>2008-02-15 13:55:23 +0000
commite06244ec031ff9edb03af579cb1a89eafb1130be (patch)
treea6a18109da5ba35b9d71f92a2da570b5f92086c1
parent765537c6f57d32afb7886b4758f805f7975a4676 (diff)
Notes
-rw-r--r--share/man/man4/ciss.46
-rw-r--r--sys/dev/ciss/ciss.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/share/man/man4/ciss.4 b/share/man/man4/ciss.4
index a896e4e61575..74e54e7b692d 100644
--- a/share/man/man4/ciss.4
+++ b/share/man/man4/ciss.4
@@ -84,6 +84,12 @@ drives) are only exposed as
devices.
Hot-insertion and removal of devices is supported but a bus
rescan might be necessary.
+.Pp
+The problem which adapter freezes with the message
+.Dq ADAPTER HEARTBEAT FAILED
+might be solved by updating the firmware and/or setting the
+.Va hw.ciss.nop_message_heartbeat
+tunable to non-zero at boot time.
.Sh HARDWARE
Controllers supported by the
.Nm
diff --git a/sys/dev/ciss/ciss.c b/sys/dev/ciss/ciss.c
index 9c9214955a6e..c71d0d9b5600 100644
--- a/sys/dev/ciss/ciss.c
+++ b/sys/dev/ciss/ciss.c
@@ -247,6 +247,9 @@ static struct cdevsw ciss_cdevsw = {
static unsigned int ciss_expose_hidden_physical = 0;
TUNABLE_INT("hw.ciss.expose_hidden_physical", &ciss_expose_hidden_physical);
+static unsigned int ciss_nop_message_heartbeat = 0;
+TUNABLE_INT("hw.ciss.nop_message_heartbeat", &ciss_nop_message_heartbeat);
+
/************************************************************************
* CISS adapters amazingly don't have a defined programming interface
* value. (One could say some very despairing things about PCI and
@@ -3099,7 +3102,7 @@ ciss_periodic(void *arg)
/*
* Send the NOP message and wait for a response.
*/
- if ((error = ciss_get_request(sc, &cr)) == 0) {
+ if (ciss_nop_message_heartbeat != 0 && (error = ciss_get_request(sc, &cr)) == 0) {
cc = CISS_FIND_COMMAND(cr);
cr->cr_complete = ciss_nop_complete;
cc->cdb.cdb_length = 1;