nvme-pci: update sqsize when adjusting the queue depth
authorChristoph Hellwig <hch@lst.de>
Sun, 25 Dec 2022 10:32:32 +0000 (11:32 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 26 Dec 2022 19:10:51 +0000 (12:10 -0700)
Update the core sqsize field in addition to the PCIe-specific
q_depth field as the core tagset allocation helpers rely on it.

Fixes: 0da7feaa5913 ("nvme-pci: use the tagset alloc/free helpers")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Hugh Dickins <hughd@google.com>
Link: https://lore.kernel.org/r/20221225103234.226794-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/pci.c

index 804b6a6..b13bacc 100644 (file)
@@ -2333,10 +2333,12 @@ static int nvme_setup_io_queues(struct nvme_dev *dev)
        if (dev->cmb_use_sqes) {
                result = nvme_cmb_qdepth(dev, nr_io_queues,
                                sizeof(struct nvme_command));
-               if (result > 0)
+               if (result > 0) {
                        dev->q_depth = result;
-               else
+                       dev->ctrl.sqsize = result - 1;
+               } else {
                        dev->cmb_use_sqes = false;
+               }
        }
 
        do {
@@ -2537,7 +2539,6 @@ static int nvme_pci_enable(struct nvme_dev *dev)
 
        dev->q_depth = min_t(u32, NVME_CAP_MQES(dev->ctrl.cap) + 1,
                                io_queue_depth);
-       dev->ctrl.sqsize = dev->q_depth - 1; /* 0's based queue depth */
        dev->db_stride = 1 << NVME_CAP_STRIDE(dev->ctrl.cap);
        dev->dbs = dev->bar + 4096;
 
@@ -2578,7 +2579,7 @@ static int nvme_pci_enable(struct nvme_dev *dev)
                dev_warn(dev->ctrl.device, "IO queue depth clamped to %d\n",
                         dev->q_depth);
        }
-
+       dev->ctrl.sqsize = dev->q_depth - 1; /* 0's based queue depth */
 
        nvme_map_cmb(dev);