aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2013-12-17 20:29:01 -0500
committerJames Bottomley <JBottomley@Parallels.com>2014-03-15 13:18:54 -0400
commit76f96b6dfddf7804b3d33ede60a0c63bae271361 (patch)
treeca13862c0953cb9b5288458b722ee2d465f58776 /drivers/scsi/lpfc
parent4b4f30ccbb5de164df041daf94bfc8be0023cd92 (diff)
[SCSI] lpfc 8.3.44: Fixed IO hang when in msi mode.
Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc')
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c18
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c3
2 files changed, 20 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index b2ede05a5f0a..0b08188598cd 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -4782,6 +4782,24 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
4782 &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB); 4782 &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB);
4783 if (err) { 4783 if (err) {
4784 atomic_dec(&ndlp->cmd_pending); 4784 atomic_dec(&ndlp->cmd_pending);
4785 lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
4786 "3376 FCP could not issue IOCB err %x"
4787 "FCP cmd x%x <%d/%d> "
4788 "sid: x%x did: x%x oxid: x%x "
4789 "Data: x%x x%x x%x x%x\n",
4790 err, cmnd->cmnd[0],
4791 cmnd->device ? cmnd->device->id : 0xffff,
4792 cmnd->device ? cmnd->device->lun : 0xffff,
4793 vport->fc_myDID, ndlp->nlp_DID,
4794 phba->sli_rev == LPFC_SLI_REV4 ?
4795 lpfc_cmd->cur_iocbq.sli4_xritag : 0xffff,
4796 lpfc_cmd->cur_iocbq.iocb.ulpContext,
4797 lpfc_cmd->cur_iocbq.iocb.ulpIoTag,
4798 lpfc_cmd->cur_iocbq.iocb.ulpTimeout,
4799 (uint32_t)
4800 (cmnd->request->timeout / 1000));
4801
4802
4785 goto out_host_busy_free_buf; 4803 goto out_host_busy_free_buf;
4786 } 4804 }
4787 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) { 4805 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 8f580fda443f..838e5b991851 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -8032,7 +8032,8 @@ lpfc_sli4_scmd_to_wqidx_distr(struct lpfc_hba *phba)
8032 struct lpfc_vector_map_info *cpup; 8032 struct lpfc_vector_map_info *cpup;
8033 int chann, cpu; 8033 int chann, cpu;
8034 8034
8035 if (phba->cfg_fcp_io_sched == LPFC_FCP_SCHED_BY_CPU) { 8035 if (phba->cfg_fcp_io_sched == LPFC_FCP_SCHED_BY_CPU
8036 && phba->cfg_fcp_io_channel > 1) {
8036 cpu = smp_processor_id(); 8037 cpu = smp_processor_id();
8037 if (cpu < phba->sli4_hba.num_present_cpu) { 8038 if (cpu < phba->sli4_hba.num_present_cpu) {
8038 cpup = phba->sli4_hba.cpu_map; 8039 cpup = phba->sli4_hba.cpu_map;