[SCSI] lpfc 8.3.34: Fix number of IO channels to match CPUs
authorJames Smart <james.smart@emulex.com>
Tue, 14 Aug 2012 18:25:36 +0000 (14:25 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 14 Sep 2012 16:59:23 +0000 (17:59 +0100)
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/lpfc/lpfc_init.c

index d81fec832b98ebdc25935d945400dde09ee9ddd7..9ad7943414ddc2cd32a131ca199935dde182e3f1 100644 (file)
@@ -6542,6 +6542,9 @@ static int
 lpfc_sli4_queue_verify(struct lpfc_hba *phba)
 {
        int cfg_fcp_io_channel;
+       uint32_t cpu;
+       uint32_t i = 0;
+
 
        /*
         * Sanity check for configured queue parameters against the run-time
@@ -6551,6 +6554,17 @@ lpfc_sli4_queue_verify(struct lpfc_hba *phba)
        /* Sanity check on HBA EQ parameters */
        cfg_fcp_io_channel = phba->cfg_fcp_io_channel;
 
+       /* It doesn't make sense to have more io channels then CPUs */
+       for_each_online_cpu(cpu) {
+               i++;
+       }
+       if (i < cfg_fcp_io_channel) {
+               lpfc_printf_log(phba, KERN_WARNING, LOG_INIT,
+                               "3188 Reducing IO channels to match number of "
+                               "CPUs: from %d to %d\n", cfg_fcp_io_channel, i);
+               cfg_fcp_io_channel = i;
+       }
+
        if (cfg_fcp_io_channel >
            phba->sli4_hba.max_cfg_param.max_eq) {
                cfg_fcp_io_channel = phba->sli4_hba.max_cfg_param.max_eq;