On Fri, Jun 27, 2025 at 03:44:10PM +0200, Marek Szyprowski wrote: > On 25.06.2025 15:18, Leon Romanovsky wrote: > > This series refactors the DMA mapping to use physical addresses > > as the primary interface instead of page+offset parameters. This > > change aligns the DMA API with the underlying hardware reality where > > DMA operations work with physical addresses, not page structures. > > > > The series consists of 8 patches that progressively convert the DMA > > mapping infrastructure from page-based to physical address-based APIs: > > > > The series maintains backward compatibility by keeping the old > > page-based API as wrapper functions around the new physical > > address-based implementations. > > Thanks for this rework! I assume that the next step is to add map_phys > callback also to the dma_map_ops and teach various dma-mapping providers > to use it to avoid more phys-to-page-to-phys conversions.
Probably Christoph will say yes, however I personally don't see any benefit in this. Maybe I wrong here, but all existing .map_page() implementation platforms don't support p2p anyway. They won't benefit from this such conversion. > > I only wonder if this newly introduced dma_map_phys()/dma_unmap_phys() > API is also suitable for the recently discussed PCI P2P DMA? While > adding a new API maybe we should take this into account? First, immediate user (not related to p2p) is blk layer: https://lore.kernel.org/linux-nvme/bcdcb5eb-17ed-412f-bf5c-303079798...@nvidia.com/T/#m7e715697d4b2e3997622a3400243477c75cab406 +static bool blk_dma_map_direct(struct request *req, struct device *dma_dev, + struct blk_dma_iter *iter, struct phys_vec *vec) +{ + iter->addr = dma_map_page(dma_dev, phys_to_page(vec->paddr), + offset_in_page(vec->paddr), vec->len, rq_dma_dir(req)); + if (dma_mapping_error(dma_dev, iter->addr)) { + iter->status = BLK_STS_RESOURCE; + return false; + } + iter->len = vec->len; + return true; +} Block layer started to store phys addresses instead of struct pages and this phys_to_page() conversion in data-path will be avoided. > My main concern is the lack of the source phys addr passed to the > dma_unmap_phys() > function and I'm aware that this might complicate a bit code conversion > from old dma_map/unmap_page() API. > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland > >