summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac/aac_debug.c
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>2000-12-27 13:14:56 +0000
committermsmith <msmith@FreeBSD.org>2000-12-27 13:14:56 +0000
commit7a963983ca75554cbd1b41ff45750211d765d5d2 (patch)
tree7a6c271549ef883f5519eb0f5ed94d46f87d2b1f /sys/dev/aac/aac_debug.c
parent798d2297a8b3e7fe2dec06b988b0a28f5ff483c6 (diff)
downloadFreeBSD-src-7a963983ca75554cbd1b41ff45750211d765d5d2.zip
FreeBSD-src-7a963983ca75554cbd1b41ff45750211d765d5d2.tar.gz
Major bugfix and minor update. This should resolve the current issues
with the driver locking up under load. - Restructure so that we use a static pool of commands/FIBs, rather than allocating them in clusters. The cluster allocation just made things more complicated, and allowed us to waste more memory in peak load situations. - Make queueing macros more like my other drivers. This adds queue stats for free. Add some debugging to take advantage of this. - Reimplement the periodic timeout scan. Kick the interrupt handler and the start routine every scan as well, just to be safe. Track busy commands properly. - Bring resource cleanup into line with resource allocation. We should now clean up correctly after a failed probe/unload/etc. - Try to start new commands when old ones are completed. We weren't doing this before, which could lead to deadlock when the controller was full. - Don't try to build a new command if we have found a deferred command. This could cause us to lose the deferred command. - Use diskerr() to report I/O errors. - Don't bail if the AdapterInfo structure is the wrong size. Some variation seems to be normal. We need to improve our handing of 2.x firmware sets. - Improve some comments in an attempt to try to make things clearer. - Restructure to avoid some warnings.
Diffstat (limited to 'sys/dev/aac/aac_debug.c')
-rw-r--r--sys/dev/aac/aac_debug.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/dev/aac/aac_debug.c b/sys/dev/aac/aac_debug.c
index 09293ad..3298502 100644
--- a/sys/dev/aac/aac_debug.c
+++ b/sys/dev/aac/aac_debug.c
@@ -44,6 +44,7 @@
#include <machine/bus.h>
#include <dev/aac/aacreg.h>
+#include <dev/aac/aac_ioctl.h>
#include <dev/aac/aacvar.h>
void aac_printstate0(void);
@@ -90,7 +91,16 @@ aac_print_queues(struct aac_softc *sc)
sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][AAC_PRODUCER_INDEX],
sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][AAC_CONSUMER_INDEX],
AAC_ADAP_HIGH_RESP_ENTRIES);
-
+ device_printf(sc->aac_dev, "AACQ_FREE %d/%d\n",
+ sc->aac_qstat[AACQ_FREE].q_length, sc->aac_qstat[AACQ_FREE].q_max);
+ device_printf(sc->aac_dev, "AACQ_BIO %d/%d\n",
+ sc->aac_qstat[AACQ_BIO].q_length, sc->aac_qstat[AACQ_BIO].q_max);
+ device_printf(sc->aac_dev, "AACQ_READY %d/%d\n",
+ sc->aac_qstat[AACQ_READY].q_length, sc->aac_qstat[AACQ_READY].q_max);
+ device_printf(sc->aac_dev, "AACQ_BUSY %d/%d\n",
+ sc->aac_qstat[AACQ_BUSY].q_length, sc->aac_qstat[AACQ_BUSY].q_max);
+ device_printf(sc->aac_dev, "AACQ_COMPLETE %d/%d\n",
+ sc->aac_qstat[AACQ_COMPLETE].q_length, sc->aac_qstat[AACQ_COMPLETE].q_max);
}
/********************************************************************************
OpenPOWER on IntegriCloud