lpfc 8.3.39: Fixed system panic during EEH recovery due to midlayer acting on outstanding I/O
Subsystems (2)
PATCH 16/22 lpfc 8.3.39: Fixed system panic during EEH recovery due to midlayer acting on outstanding I/O
Fixed system panic during EEH recovery due to midlayer acting on outstanding I/O
Signed-off-by James Smart <[email protected]>
---
lpfc_init.c | 12 ++++++------ lpfc_sli.c | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-)
drivers/scsi/lpfc/lpfc_init.c +6 -6
@@ -9314,15 +9314,15 @@ lpfc_sli_prep_dev_for_reset(struct lpfc_/* Block all SCSI devices' I/Os on the host */ lpfc_scsi_dev_block (phba); +/* Flush all driver's outstanding SCSI I/Os as we are to reset */ +lpfc_sli_flush_fcp_rings (phba); +/* stop all timers */ lpfc_stop_hba_timers (phba);/* Disable interrupt and pci device */ lpfc_sli_disable_intr (phba);pci_disable_device (phba->pcidev); - -/* Flush all driver's outstanding SCSI I/Os as we are to reset */ -lpfc_sli_flush_fcp_rings (phba); }/**
@@ -10067,6 +10067,9 @@ lpfc_sli4_prep_dev_for_reset(struct lpfc/* Block all SCSI devices' I/Os on the host */ lpfc_scsi_dev_block (phba); +/* Flush all driver's outstanding SCSI I/Os as we are to reset */ +lpfc_sli_flush_fcp_rings (phba); +/* stop all timers */ lpfc_stop_hba_timers (phba);
@@ -10074,9 +10077,6 @@ lpfc_sli4_prep_dev_for_reset(struct lpfclpfc_sli4_disable_intr (phba);lpfc_sli4_queue_destroy (phba);pci_disable_device (phba->pcidev); - -/* Flush all driver's outstanding SCSI I/Os as we are to reset */ -lpfc_sli_flush_fcp_rings (phba); }/**
drivers/scsi/lpfc/lpfc_sli.c +4 -0
@@ -8452,10 +8452,14 @@ __lpfc_sli_issue_iocb_s4(struct lpfc_hbaif ((piocb->iocb_flag &LPFC_IO_FCP ) || (piocb->iocb_flag &LPFC_USE_FCPWQIDX )) { +if (unlikely (!phba->sli4_hba.fcp_wq)) +return IOCB_ERROR ;if (lpfc_sli4_wq_put (phba->sli4_hba.fcp_wq[piocb->fcp_wqidx], &wqe))return IOCB_ERROR ; }else { +if (unlikely (!phba->sli4_hba.els_wq)) +return IOCB_ERROR ;if (lpfc_sli4_wq_put (phba->sli4_hba.els_wq, &wqe))return IOCB_ERROR ; }