On Tue, Jul 09, 2024 at 04:03:20PM -0300, Jason Gunthorpe wrote: > > Except for the powerpc bypass IOMMU or not is a global decision, > > and the bypass is per I/O. So I'm not sure what else you want there? > > For P2P we know if the DMA will go through the IOMMU or not based on > the PCIe fabric path between the initiator (the one doing the DMA) and > the target (the one providing the MMIO memory). Oh, yes. So effectively you are asking if we can arbitrarily mix P2P sources in a single map request. I think the only sane answer from the iommu/dma subsystem perspective is: hell no. But that means the upper layer need to split at such a boundary. E.g. get_user_pages needs to look at this and stop at the boundary, leaving the rest to the next call. For the block layer just having one kind per BIO is fine right now, although I could see use cases where people would want to combine them. We can probably defer that until it is needed, though.