diff options
| author | Matt Jacob <mjacob@FreeBSD.org> | 2002-08-17 17:23:15 +0000 |
|---|---|---|
| committer | Matt Jacob <mjacob@FreeBSD.org> | 2002-08-17 17:23:15 +0000 |
| commit | 8a5f89b96d9afd57d1e47251a291040690e5b7cb (patch) | |
| tree | 7fa14beeb04ddaee6b9382672616c2a4393dd1b3 /sys/dev | |
| parent | fc3bbaaa8b1136805cb3868a4f4cd8afb7df7c85 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/isp/isp_freebsd.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index 25d5976661f2c..b6580dce4f6e0 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -3040,7 +3040,19 @@ isp_async(struct ispsoftc *isp, ispasync_t cmd, void *arg) isp_prt(isp, ISP_LOGERR, "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. + */ + if (IS_FC(isp)) { + FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; + FCPARAM(isp)->isp_loopstate = LOOP_NIL; + isp_freeze_loopdown(isp, "f/w crash"); + isp_fw_dump(isp); + } isp_reinit(isp); + isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); +#endif break; } case ISPASYNC_UNHANDLED_RESPONSE: |
