]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme-pci: do not try to add queue maps at runtime
authorKeith Busch <kbusch@kernel.org>
Tue, 10 Feb 2026 18:38:09 +0000 (10:38 -0800)
committerKeith Busch <kbusch@kernel.org>
Fri, 13 Feb 2026 14:47:59 +0000 (06:47 -0800)
The block layer allocates the set's maps once. We can't add special
purpose queues at runtime if they weren't allocated at initialization
time.

Tested-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/pci.c

index c63efa49132f9da9a4e2b012f0eeeb116ef966bc..0c1a8d7aa1c0bd1cf9a3991062820e42a1e14ddf 100644 (file)
@@ -2902,6 +2902,18 @@ static int nvme_setup_io_queues(struct nvme_dev *dev)
        dev->nr_write_queues = write_queues;
        dev->nr_poll_queues = poll_queues;
 
+       if (dev->ctrl.tagset) {
+               /*
+                * The set's maps are allocated only once at initialization
+                * time. We can't add special queues later if their mq_map
+                * wasn't preallocated.
+                */
+               if (dev->ctrl.tagset->nr_maps < 3)
+                       dev->nr_poll_queues = 0;
+               if (dev->ctrl.tagset->nr_maps < 2)
+                       dev->nr_write_queues = 0;
+       }
+
        /*
         * The initial number of allocated queue slots may be too large if the
         * user reduced the special queue parameters. Cap the value to the