diff options
author | James Smart <james.smart@emulex.com> | 2013-12-17 20:29:01 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2014-03-15 13:18:54 -0400 |
commit | 76f96b6dfddf7804b3d33ede60a0c63bae271361 (patch) | |
tree | ca13862c0953cb9b5288458b722ee2d465f58776 /drivers/scsi/lpfc | |
parent | 4b4f30ccbb5de164df041daf94bfc8be0023cd92 (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.c | 18 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 3 |
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; |