Print this page
First attempt at pulling 4310 fix from Andy Giles tree
@@ -9854,10 +9854,30 @@
"after fault was detected");
}
}
/*
+ * If we set the "please reset me" flag, then reset.
+ */
+ if (mpt->m_softstate & MPTSAS_SS_RESET_INWATCH) {
+ doorbell = ddi_get32(mpt->m_datap,
+ &mpt->m_reg->Doorbell);
+ mptsas_log(mpt, CE_WARN, "MPT Forced Reset, "
+ "doorbell: %04x", doorbell);
+ mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
+ if (mpt->m_softstate & MPTSAS_SS_MUR_INWATCH)
+ mpt->m_softstate |= MPTSAS_SS_MSG_UNIT_RESET;
+ mpt->m_softstate &= ~(MPTSAS_SS_RESET_INWATCH|
+ MPTSAS_SS_MUR_INWATCH);
+ if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) {
+ mptsas_log(mpt, CE_WARN, "Reset failed"
+ "after fault was detected");
+ }
+ }
+
+
+ /*
* For now, always call mptsas_watchsubr.
*/
mptsas_watchsubr(mpt);
if (mpt->m_options & MPTSAS_OPT_PM) {