[PATCH v4 14/16] block-dma: migrate to dma_map_phys instead of map_page
Keith Busch
kbusch at kernel.org
Wed Sep 3 07:59:37 AEST 2025
On Tue, Sep 02, 2025 at 10:49:48PM +0200, Marek Szyprowski wrote:
> On 19.08.2025 19:36, Leon Romanovsky wrote:
> > @@ -87,8 +87,8 @@ static bool blk_dma_map_bus(struct blk_dma_iter *iter, struct phys_vec *vec)
> > 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));
> > + iter->addr = dma_map_phys(dma_dev, vec->paddr, vec->len,
> > + rq_dma_dir(req), 0);
> > if (dma_mapping_error(dma_dev, iter->addr)) {
> > iter->status = BLK_STS_RESOURCE;
> > return false;
>
> I wonder where is the corresponding dma_unmap_page() call and its change
> to dma_unmap_phys()...
You can't do that in the generic layer, so it's up to the caller. The
dma addrs that blk_dma_iter yield are used in a caller specific
structure. For example, for NVMe, it goes into an NVMe PRP. The generic
layer doesn't know what that is, so the driver has to provide the
unmapping.
More information about the Linuxppc-dev
mailing list