.. | .. |
---|
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", |
---|