Print this page
7813 mpt_sas does not like concurrent HBA resets
*** 600,611 ****
if (config_flags & MPTSAS_REQUEST_POOL_CMD)
mptsas_return_to_pool(mpt, cmd);
if (config_flags & MPTSAS_CMD_TIMEOUT) {
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) {
! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed");
}
}
return (rval);
}
--- 600,611 ----
if (config_flags & MPTSAS_REQUEST_POOL_CMD)
mptsas_return_to_pool(mpt, cmd);
if (config_flags & MPTSAS_CMD_TIMEOUT) {
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if ((mptsas_reset_handler(mpt)) == DDI_FAILURE) {
! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed");
}
}
return (rval);
}
*** 1201,1212 ****
*/
if (rval == FALSE) {
mptsas_log(mpt, CE_WARN, "mptsas_ioc_task_management failed "
"try to reset ioc to recovery!");
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if (mptsas_restart_ioc(mpt)) {
! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed");
rval = FAILED;
}
}
return (rval);
--- 1201,1212 ----
*/
if (rval == FALSE) {
mptsas_log(mpt, CE_WARN, "mptsas_ioc_task_management failed "
"try to reset ioc to recovery!");
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if (mptsas_reset_handler(mpt)) {
! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed");
rval = FAILED;
}
}
return (rval);
*** 1404,1415 ****
rvalue = 0;
(void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex,
drv_usectohz(60 * MICROSEC), TR_CLOCK_TICK);
if (!(cmd->cmd_flags & CFLAG_FINISHED)) {
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) {
! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed");
}
rvalue = -1;
}
mptsas_remove_cmd(mpt, cmd);
mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp);
--- 1404,1415 ----
rvalue = 0;
(void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex,
drv_usectohz(60 * MICROSEC), TR_CLOCK_TICK);
if (!(cmd->cmd_flags & CFLAG_FINISHED)) {
mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
! if ((mptsas_reset_handler(mpt)) == DDI_FAILURE) {
! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed");
}
rvalue = -1;
}
mptsas_remove_cmd(mpt, cmd);
mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp);