On Tue, Aug 26, 2025 at 03:03:44PM +0200, Christoph Hellwig wrote: > On Mon, Aug 25, 2025 at 08:10:59AM -0600, Keith Busch wrote: > > > > PAGE_SIZEs, iommu granules, and virt boundaries are all power-of-two > > values, and PAGE_SIZE is always the largest (or tied for largest) of > > these. > > I just had an offlist conversation with someone trying to make a nvme > device with a virt boundary larger than PAGE_SIZE work. No idea > where that device came from. Currently, the virtual boundary is always compared to bv_offset, which is a page offset. If the virtual boundary is larger than a page, then we need something like "page_to_phys(bv.bv_page) + bv.bv_offset" every place we need to check against the virt boundary.