Commit 4082c98c authored by Daniel Wagner's avatar Daniel Wagner Committed by Jens Axboe
Browse files

nvme-pci: use block layer helpers to calculate num of queues



The calculation of the upper limit for queues does not depend solely on
the number of possible CPUs; for example, the isolcpus kernel
command-line option must also be considered.

To account for this, the block layer provides a helper function to
retrieve the maximum number of queues. Use it to set an appropriate
upper queue number limit.

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarDaniel Wagner <wagi@kernel.org>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/r/20250617-isolcpus-queue-counters-v1-3-13923686b54b@kernel.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 3f27c1de
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ static int io_queue_count_set(const char *val, const struct kernel_param *kp)
	int ret;

	ret = kstrtouint(val, 10, &n);
	if (ret != 0 || n > num_possible_cpus())
	if (ret != 0 || n > blk_mq_num_possible_queues(0))
		return -EINVAL;
	return param_set_uint(val, kp);
}
@@ -2629,7 +2629,8 @@ static unsigned int nvme_max_io_queues(struct nvme_dev *dev)
	 */
	if (dev->ctrl.quirks & NVME_QUIRK_SHARED_TAGS)
		return 1;
	return num_possible_cpus() + dev->nr_write_queues + dev->nr_poll_queues;
	return blk_mq_num_possible_queues(0) + dev->nr_write_queues +
		dev->nr_poll_queues;
}

static int nvme_setup_io_queues(struct nvme_dev *dev)