scsi: ibmvfc: Limit max hw queues by num_online_cpus()
authorTyrel Datwyler <tyreld@linux.ibm.com>
Thu, 21 Sep 2023 22:54:27 +0000 (17:54 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 22 Sep 2023 02:14:20 +0000 (22:14 -0400)
An LPAR could potentially be configured with a small logical cpu count that
is less then the default hardware queue max. Ensure that we don't allocate
more hw queues than available cpus.

Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
Link: https://lore.kernel.org/r/20230921225435.3537728-4-tyreld@linux.ibm.com
Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ibmvscsi/ibmvfc.c

index 6d66a416c44e344eeffd5e82d044dbc4edbdcf27..2bfeeb9ace01855228e835d53b7d2b13c049bacd 100644 (file)
@@ -6261,7 +6261,8 @@ static int ibmvfc_probe(struct vio_dev *vdev, const struct vio_device_id *id)
        struct Scsi_Host *shost;
        struct device *dev = &vdev->dev;
        int rc = -ENOMEM;
-       unsigned int max_scsi_queues = IBMVFC_MAX_SCSI_QUEUES;
+       unsigned int online_cpus = num_online_cpus();
+       unsigned int max_scsi_queues = min((unsigned int)IBMVFC_MAX_SCSI_QUEUES, online_cpus);
 
        ENTER;
        shost = scsi_host_alloc(&driver_template, sizeof(*vhost));