On Mon, Aug 25, 2025 at 06:46:50AM -0700, Christoph Hellwig wrote: > On Thu, Aug 21, 2025 at 01:44:19PM -0700, Keith Busch wrote: > > Also use the chance to document why all this is PAGE_SIZE based and > not based on either the iommu granule size or the virt boundary. This is a good opportunity to double check my assumptions: 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. If that's accurate, storing the lowest page offset is sufficient to cover all the boundary masks. If that's not accurate, then this kind of falls apart. I didn't find anything enforcing this assumption, but I can't imagine it would make sense for a device to require the virtual boundary be larger than the page size. It'd be difficult to do IO to that. I also know the iommu granule may be differant than PAGE_SIZE too, but it's always the smaller of the two if they are not the same.