| From c46053bbcbf9a6a1e5e3ef611c1ed396647a6310 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 9 Apr 2021 20:12:55 +0200 |
| Subject: nvme-pci: don't simple map sgl when sgls are disabled |
| |
| From: Niklas Cassel <niklas.cassel@wdc.com> |
| |
| [ Upstream commit e51183be1fa96dc6d3cd11b3c25a0f595807315e ] |
| |
| According to the module parameter description for sgl_threshold, |
| a value of 0 means that SGLs are disabled. |
| |
| If SGLs are disabled, we should respect that, even for the case |
| where the request is made up of a single physical segment. |
| |
| Fixes: 297910571f08 ("nvme-pci: optimize mapping single segment requests using SGLs") |
| Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/host/pci.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c |
| index 999378fb4d76..0cf84aa1c320 100644 |
| --- a/drivers/nvme/host/pci.c |
| +++ b/drivers/nvme/host/pci.c |
| @@ -852,7 +852,7 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req, |
| return nvme_setup_prp_simple(dev, req, |
| &cmnd->rw, &bv); |
| |
| - if (iod->nvmeq->qid && |
| + if (iod->nvmeq->qid && sgl_threshold && |
| dev->ctrl.sgls & ((1 << 0) | (1 << 1))) |
| return nvme_setup_sgl_simple(dev, req, |
| &cmnd->rw, &bv); |
| -- |
| 2.30.2 |
| |