On Thu, Aug 21, 2025 at 01:44:20PM -0700, Keith Busch wrote: > + /* > + * The virtual boundary mask is not necessary for PCI controllers that > + * support SGL for DMA. It's only necessary when using PRP. Admin > + * queues only support PRP, and fabrics drivers currently don't report > + * what boundaries they require, so set the virtual boundary for > + * either. > + */ > + if (!nvme_ctrl_sgl_supported(ctrl) || admin || > + ctrl->ops->flags & NVME_F_FABRICS) > + lim->virt_boundary_mask = NVME_CTRL_PAGE_SIZE - 1; Fabrics itself never needs the virt boundary. And for TCP which is a software only transport I think we can just do away with it. For FC I suspect we can do away with it as well, as all the FC HBA support proper SGLs. For RDMA the standard MR methods do require the virtual boundary, but somewhat recent Mellanox / Nvidia hardware does not. No need for you to update all these, but I think having the transport advertise the capability is probably better than a bunch of random conditions in the core code.