On Thu, Nov 07, 2024 at 02:50:25PM +0100, Christoph Hellwig wrote: > On Thu, Nov 07, 2024 at 09:28:08AM -0400, Jason Gunthorpe wrote: > > Once we are freed from scatterlist we can explore a design that would > > pass the P2P routing information directly. For instance imagine > > something like: > > > > dma_map_p2p(dev, phys, p2p_provider); > > > > Then dma_map_page(dev, page) could be something like > > > > if (is_pci_p2pdma_page(page)) > > dev_map_p2p(dev, page_to_phys(page), page->pgmap->p2p_provider) > > One thing that this series does is to move the P2P mapping decisions out > of the low-level dma mapping helpers and into the caller (again) for > the non-sg callers and moves the special switch based bus mapping into > a routine that can be called directly. > > Take a look at blk_rq_dma_map_iter_start, which now literally uses > dma_map_page for the no-iommu, no-switch P2P case. It also is a good > use case for the proposed dma_map_phys. It is fully OK? Can't dma_map_page() trigger swiotlb? It must not do that for P2P. How does it know the difference if it just gets a phys? Jason