Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 May 2007 17:30:20 GMT
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 119290 for review
Message-ID:  <200705051730.l45HUKQT053170@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=119290

Change 119290 by mjacob@mjexp on 2007/05/05 17:30:20

	Second part of fix- isp_reinit shouldn't be called where it
	could sleep.

Affected files ...

.. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#23 edit

Differences ...

==== //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#23 (text+ko) ====

@@ -3478,9 +3478,8 @@
                     "Internal Firmware Error on bus %d @ RISC Address 0x%x",
                     mbox6, mbox1);
 #ifdef	ISP_FW_CRASH_DUMP
-		/*
-		 * XXX: really need a thread to do this right.
-		 */
+		mbox1 = isp->isp_osinfo.mbox_sleep_ok;
+		isp->isp_osinfo.mbox_sleep_ok = 0;
 		if (IS_FC(isp)) {
 			FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT;
 			FCPARAM(isp)->isp_loopstate = LOOP_NIL;
@@ -3488,8 +3487,14 @@
 			isp_fw_dump(isp);
 		}
 		isp_reinit(isp);
+		isp->isp_osinfo.mbox_sleep_ok = mbox1;
+#else
+		mbox1 = isp->isp_osinfo.mbox_sleep_ok;
+		isp->isp_osinfo.mbox_sleep_ok = 0;
+		isp_reinit(isp);
+		isp->isp_osinfo.mbox_sleep_ok = mbox1;
+#endif
 		isp_async(isp, ISPASYNC_FW_RESTARTED, NULL);
-#endif
 		break;
 	}
 	case ISPASYNC_UNHANDLED_RESPONSE:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705051730.l45HUKQT053170>