On 2022-01-20 15:27, Keith Busch wrote:
On Thu, Jan 20, 2022 at 02:56:02PM +0100, Christoph Hellwig wrote:
- on the input side to dma mapping the bio_vecs (or phyrs) are chained
as bios or whatever the containing structure is. These already exist
and have infrastructure at least in the block layer
- on the output side I plan for two options:
1) we have a sane IOMMU and everyting will be coalesced into a
single dma_range. This requires setting the block layer
merge boundary to match the IOMMU page size, but that is
a very good thing to do anyway.
It doesn't look like IOMMU page sizes are exported, or even necessarily
consistently sized on at least one arch (power).
FWIW POWER does its own thing separate from the IOMMU API. For all the
regular IOMMU API players, page sizes are published in the iommu_domain
that the common iommu-dma layer operates on. In fact it already uses
them to pick chunk sizes for composing large buffer allocations.
Robin.