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) {