From: Samuel Jones Date: Tue, 25 Oct 2016 07:22:34 +0000 (+0200) Subject: nvme-rdma: force queue size to respect controller capability X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=76c08bf46a2891c80e854813c636bdce1f7d1ca4;p=linux-beck.git nvme-rdma: force queue size to respect controller capability Queue size needs to respect the Maximum Queue Entries Supported advertised by the controller in its Capability register. Signed-off-by: Samuel Jones Reviewed-by: Christoph Hellwig [sagig: fixed queue_size adjustment according to Daniel Verkamp comment] Signed-off-by: Sagi Grimberg --- diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index ff1b340606b2..d1df4a5eb1e6 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c @@ -1904,6 +1904,14 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, opts->queue_size = ctrl->ctrl.maxcmd; } + if (opts->queue_size > ctrl->ctrl.sqsize + 1) { + /* warn if sqsize is lower than queue_size */ + dev_warn(ctrl->ctrl.device, + "queue_size %zu > ctrl sqsize %u, clamping down\n", + opts->queue_size, ctrl->ctrl.sqsize + 1); + opts->queue_size = ctrl->ctrl.sqsize + 1; + } + if (opts->nr_io_queues) { ret = nvme_rdma_create_io_queues(ctrl); if (ret)