summaryrefslogtreecommitdiffstats
path: root/sys/dev/mfi
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2011-11-09 21:53:49 +0000
committerdelphij <delphij@FreeBSD.org>2011-11-09 21:53:49 +0000
commit8e06d9e08e0ba646624564499631f71633de7e1c (patch)
tree7c9530d477f19f15f647269d8139fc102af2052b /sys/dev/mfi
parent5eb7ebdde2c240460e198d21c86c2ce565d08582 (diff)
downloadFreeBSD-src-8e06d9e08e0ba646624564499631f71633de7e1c.zip
FreeBSD-src-8e06d9e08e0ba646624564499631f71633de7e1c.tar.gz
Do a dummy read to flush the interrupt ACK that we just performed,
ensuring that everything is really, truly consistent. This fixes certain cases where one will see various: mfi0: COMMAND 0xffffffXXXXXXXXXX TIMEOUT AFTER XX SECONDS MFC after: 3 days Submitted by: scottl Ok'ed by: jhb
Diffstat (limited to 'sys/dev/mfi')
-rw-r--r--sys/dev/mfi/mfi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/mfi/mfi.c b/sys/dev/mfi/mfi.c
index 2161338..aa52b36 100644
--- a/sys/dev/mfi/mfi.c
+++ b/sys/dev/mfi/mfi.c
@@ -932,6 +932,12 @@ mfi_intr(void *arg)
if (sc->mfi_check_clear_intr(sc))
return;
+ /*
+ * Do a dummy read to flush the interrupt ACK that we just performed,
+ * ensuring that everything is really, truly consistent.
+ */
+ (void)sc->mfi_read_fw_status(sc);
+
pi = sc->mfi_comms->hw_pi;
ci = sc->mfi_comms->hw_ci;
mtx_lock(&sc->mfi_io_lock);
OpenPOWER on IntegriCloud