| .. | .. |
|---|
| 167 | 167 | /* check if ISP abort is active and return cmd with timeout */ |
|---|
| 168 | 168 | if ((test_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags) || |
|---|
| 169 | 169 | test_bit(ISP_ABORT_RETRY, &base_vha->dpc_flags) || |
|---|
| 170 | | - test_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags)) && |
|---|
| 170 | + test_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags) || |
|---|
| 171 | + ha->flags.eeh_busy) && |
|---|
| 171 | 172 | !is_rom_cmd(mcp->mb[0])) { |
|---|
| 172 | 173 | ql_log(ql_log_info, vha, 0x1005, |
|---|
| 173 | 174 | "Cmd 0x%x aborted with timeout since ISP Abort is pending\n", |
|---|
| .. | .. |
|---|
| 268 | 269 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
|---|
| 269 | 270 | |
|---|
| 270 | 271 | wait_time = jiffies; |
|---|
| 271 | | - atomic_inc(&ha->num_pend_mbx_stage3); |
|---|
| 272 | 272 | if (!wait_for_completion_timeout(&ha->mbx_intr_comp, |
|---|
| 273 | 273 | mcp->tov * HZ)) { |
|---|
| 274 | 274 | ql_dbg(ql_dbg_mbx, vha, 0x117a, |
|---|
| .. | .. |
|---|
| 283 | 283 | spin_unlock_irqrestore(&ha->hardware_lock, |
|---|
| 284 | 284 | flags); |
|---|
| 285 | 285 | atomic_dec(&ha->num_pend_mbx_stage2); |
|---|
| 286 | | - atomic_dec(&ha->num_pend_mbx_stage3); |
|---|
| 287 | 286 | rval = QLA_ABORTED; |
|---|
| 288 | 287 | goto premature_exit; |
|---|
| 289 | 288 | } |
|---|
| .. | .. |
|---|
| 293 | 292 | ha->flags.mbox_busy = 0; |
|---|
| 294 | 293 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
|---|
| 295 | 294 | atomic_dec(&ha->num_pend_mbx_stage2); |
|---|
| 296 | | - atomic_dec(&ha->num_pend_mbx_stage3); |
|---|
| 297 | 295 | rval = QLA_ABORTED; |
|---|
| 298 | 296 | goto premature_exit; |
|---|
| 299 | 297 | } |
|---|
| 300 | | - atomic_dec(&ha->num_pend_mbx_stage3); |
|---|
| 301 | 298 | |
|---|
| 302 | 299 | if (time_after(jiffies, wait_time + 5 * HZ)) |
|---|
| 303 | 300 | ql_log(ql_log_warn, vha, 0x1015, "cmd=0x%x, waited %d msecs\n", |
|---|