Commit 4735b510 authored by Keith Busch's avatar Keith Busch
Browse files

nvme-pci: cap queue creation to used queues



If the user reduces the special queue count at runtime and resets the
controller, we need to reduce the number of queues and interrupts
requested accordingly rather than start with the pre-allocated queue
count.

Tested-by: default avatarKanchan Joshi <joshi.k@samsung.com>
Reviewed-by: default avatarKanchan Joshi <joshi.k@samsung.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent 166e31d7
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2902,7 +2902,13 @@ static int nvme_setup_io_queues(struct nvme_dev *dev)
	dev->nr_write_queues = write_queues;
	dev->nr_poll_queues = poll_queues;

	nr_io_queues = dev->nr_allocated_queues - 1;
	/*
	 * The initial number of allocated queue slots may be too large if the
	 * user reduced the special queue parameters. Cap the value to the
	 * number we need for this round.
	 */
	nr_io_queues = min(nvme_max_io_queues(dev),
			   dev->nr_allocated_queues - 1);
	result = nvme_set_queue_count(&dev->ctrl, &nr_io_queues);
	if (result < 0)
		return result;