On Wed, Apr 23, 2025 at 08:58:51AM -0600, Keith Busch wrote: > On Wed, Apr 23, 2025 at 11:13:14AM +0300, Leon Romanovsky wrote: > > +static bool nvme_try_setup_sgl_simple(struct nvme_dev *dev, struct request *req, > > + struct nvme_rw_command *cmnd, > > + struct blk_dma_iter *iter) > > +{ > > + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); > > + struct bio_vec bv = req_bvec(req); > > + > > + if (IS_ENABLED(CONFIG_PCI_P2PDMA) && (req->cmd_flags & REQ_P2PDMA)) > > + return false; > > + > > + if ((bv.bv_offset & (NVME_CTRL_PAGE_SIZE - 1)) + bv.bv_len > > > + NVME_CTRL_PAGE_SIZE * 2) > > + return false; > > We don't need this check for SGLs. If we have a single segment, we can > put it in a single SG element no matter how large it is. Absolutely, removed it and updated my dma-split-wip branch. Thanks