From: Leon Romanovsky <leonro@nvidia.com>
After conversion of arch code to use physical address mapping,
there are no users of .map_page() and .unmap_page() callbacks,
so let's remove them.
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
include/linux/dma-map-ops.h | 7 -------
kernel/dma/mapping.c | 12 ------------
kernel/dma/ops_helpers.c | 8 +-------
3 files changed, 1 insertion(+), 26 deletions(-)
diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index a2ec1566aa27..e0a78991fa8a 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -31,13 +31,6 @@ struct dma_map_ops {
void *cpu_addr, dma_addr_t dma_addr, size_t size,
unsigned long attrs);
- dma_addr_t (*map_page)(struct device *dev, struct page *page,
- unsigned long offset, size_t size,
- enum dma_data_direction dir, unsigned long attrs);
- void (*unmap_page)(struct device *dev, dma_addr_t dma_handle,
- size_t size, enum dma_data_direction dir,
- unsigned long attrs);
-
dma_addr_t (*map_phys)(struct device *dev, phys_addr_t phys,
size_t size, enum dma_data_direction dir,
unsigned long attrs);
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 32a85bfdf873..37163eb49f9f 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -171,16 +171,6 @@ dma_addr_t dma_map_phys(struct device *dev, phys_addr_t phys, size_t size,
addr = iommu_dma_map_phys(dev, phys, size, dir, attrs);
else if (ops->map_phys)
addr = ops->map_phys(dev, phys, size, dir, attrs);
- else if (!is_mmio && ops->map_page) {
- struct page *page = phys_to_page(phys);
- size_t offset = offset_in_page(phys);
-
- /*
- * The dma_ops API contract for ops->map_page() requires
- * kmappable memory.
- */
- addr = ops->map_page(dev, page, offset, size, dir, attrs);
- }
if (!is_mmio)
kmsan_handle_dma(phys, size, dir);
@@ -222,8 +212,6 @@ void dma_unmap_phys(struct device *dev, dma_addr_t addr, size_t size,
iommu_dma_unmap_phys(dev, addr, size, dir, attrs);
else if (ops->unmap_phys)
ops->unmap_phys(dev, addr, size, dir, attrs);
- else
- ops->unmap_page(dev, addr, size, dir, attrs);
trace_dma_unmap_phys(dev, addr, size, dir, attrs);
debug_dma_unmap_phys(dev, addr, size, dir);
}
diff --git a/kernel/dma/ops_helpers.c b/kernel/dma/ops_helpers.c
index 1eccbdbc99c1..20caf9cabf69 100644
--- a/kernel/dma/ops_helpers.c
+++ b/kernel/dma/ops_helpers.c
@@ -76,11 +76,8 @@ struct page *dma_common_alloc_pages(struct device *dev, size_t size,
if (use_dma_iommu(dev))
*dma_handle = iommu_dma_map_phys(dev, phys, size, dir,
DMA_ATTR_SKIP_CPU_SYNC);
- else if (ops->map_phys)
- *dma_handle = ops->map_phys(dev, phys, size, dir,
- DMA_ATTR_SKIP_CPU_SYNC);
else
- *dma_handle = ops->map_page(dev, page, 0, size, dir,
+ *dma_handle = ops->map_phys(dev, phys, size, dir,
DMA_ATTR_SKIP_CPU_SYNC);
if (*dma_handle == DMA_MAPPING_ERROR) {
dma_free_contiguous(dev, page, size);
@@ -102,8 +99,5 @@ void dma_common_free_pages(struct device *dev, size_t size, struct page *page,
else if (ops->unmap_phys)
ops->unmap_phys(dev, dma_handle, size, dir,
DMA_ATTR_SKIP_CPU_SYNC);
- else if (ops->unmap_page)
- ops->unmap_page(dev, dma_handle, size, dir,
- DMA_ATTR_SKIP_CPU_SYNC);
dma_free_contiguous(dev, page, size);
}
--
2.51.0
On Sun, Sep 28, 2025 at 06:02:29PM +0300, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > After conversion of arch code to use physical address mapping, > there are no users of .map_page() and .unmap_page() callbacks, > so let's remove them. > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > --- > include/linux/dma-map-ops.h | 7 ------- > kernel/dma/mapping.c | 12 ------------ > kernel/dma/ops_helpers.c | 8 +------- > 3 files changed, 1 insertion(+), 26 deletions(-) Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Jason
Hi Leon.
On Sun, Sep 28, 2025 at 06:02:29PM +0300, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@nvidia.com>
>
> After conversion of arch code to use physical address mapping,
> there are no users of .map_page() and .unmap_page() callbacks,
> so let's remove them.
>
> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> ---
> include/linux/dma-map-ops.h | 7 -------
> kernel/dma/mapping.c | 12 ------------
> kernel/dma/ops_helpers.c | 8 +-------
> 3 files changed, 1 insertion(+), 26 deletions(-)
It looks like you missed a few sparc32 bits:
mm/iommu.c:
static const struct dma_map_ops sbus_iommu_dma_gflush_ops = {
#ifdef CONFIG_SBUS
.alloc = sbus_iommu_alloc,
.free = sbus_iommu_free,
#endif
.map_page = sbus_iommu_map_page_gflush,
.unmap_page = sbus_iommu_unmap_page,
.map_sg = sbus_iommu_map_sg_gflush,
mm/io-unit.c:
static const struct dma_map_ops iounit_dma_ops = {
#ifdef CONFIG_SBUS
.alloc = iounit_alloc,
.free = iounit_free,
#endif
.map_page = iounit_map_page,
.unmap_page = iounit_unmap_page,
.map_sg = iounit_map_sg,
I did not compile test, but from a quick look they need to be updated.
Sam
On Sun, Sep 28, 2025 at 05:17:25PM +0200, Sam Ravnborg wrote:
> Hi Leon.
>
> On Sun, Sep 28, 2025 at 06:02:29PM +0300, Leon Romanovsky wrote:
> > From: Leon Romanovsky <leonro@nvidia.com>
> >
> > After conversion of arch code to use physical address mapping,
> > there are no users of .map_page() and .unmap_page() callbacks,
> > so let's remove them.
> >
> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> > ---
> > include/linux/dma-map-ops.h | 7 -------
> > kernel/dma/mapping.c | 12 ------------
> > kernel/dma/ops_helpers.c | 8 +-------
> > 3 files changed, 1 insertion(+), 26 deletions(-)
>
> It looks like you missed a few sparc32 bits:
> mm/iommu.c:
> static const struct dma_map_ops sbus_iommu_dma_gflush_ops = {
> #ifdef CONFIG_SBUS
> .alloc = sbus_iommu_alloc,
> .free = sbus_iommu_free,
> #endif
> .map_page = sbus_iommu_map_page_gflush,
> .unmap_page = sbus_iommu_unmap_page,
> .map_sg = sbus_iommu_map_sg_gflush,
>
> mm/io-unit.c:
> static const struct dma_map_ops iounit_dma_ops = {
> #ifdef CONFIG_SBUS
> .alloc = iounit_alloc,
> .free = iounit_free,
> #endif
> .map_page = iounit_map_page,
> .unmap_page = iounit_unmap_page,
> .map_sg = iounit_map_sg,
>
> I did not compile test, but from a quick look they need to be updated.
There were updated, see patch #5.
https://lore.kernel.org/all/bac909dab3c82fc6a7a4f5a31f22bac9a69f7f07.1759071169.git.leon@kernel.org/T/#u
arch/sparc/mm/iommu.c:
426 static const struct dma_map_ops sbus_iommu_dma_gflush_ops = {
427 #ifdef CONFIG_SBUS
428 .alloc = sbus_iommu_alloc,
429 .free = sbus_iommu_free,
430 #endif
431 .map_phys = sbus_iommu_map_phys_gflush,
432 .unmap_phys = sbus_iommu_unmap_phys,
433 .map_sg = sbus_iommu_map_sg_gflush,
434 .unmap_sg = sbus_iommu_unmap_sg,
435 };
arch/sparc/mm/io-unit.c:
276 static const struct dma_map_ops iounit_dma_ops = {
277 #ifdef CONFIG_SBUS
278 .alloc = iounit_alloc,
279 .free = iounit_free,
280 #endif
281 .map_phys = iounit_map_phys,
282 .unmap_phys = iounit_unmap_phys,
283 .map_sg = iounit_map_sg,
284 .unmap_sg = iounit_unmap_sg,
285 };
Thanks
>
> Sam
>
Hi Leon. On Sun, Sep 28, 2025 at 05:17:25PM +0200, Sam Ravnborg wrote: > Hi Leon. > > On Sun, Sep 28, 2025 at 06:02:29PM +0300, Leon Romanovsky wrote: > > From: Leon Romanovsky <leonro@nvidia.com> > > > > After conversion of arch code to use physical address mapping, > > there are no users of .map_page() and .unmap_page() callbacks, > > so let's remove them. > > > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > > --- > > include/linux/dma-map-ops.h | 7 ------- > > kernel/dma/mapping.c | 12 ------------ > > kernel/dma/ops_helpers.c | 8 +------- > > 3 files changed, 1 insertion(+), 26 deletions(-) > > It looks like you missed a few sparc32 bits: They were included, but the patch is named sparc64, which is why I missed it. If you could rename the patch that would be nice. Sam
On Sun, Sep 28, 2025 at 05:20:30PM +0200, Sam Ravnborg wrote: > Hi Leon. > > On Sun, Sep 28, 2025 at 05:17:25PM +0200, Sam Ravnborg wrote: > > Hi Leon. > > > > On Sun, Sep 28, 2025 at 06:02:29PM +0300, Leon Romanovsky wrote: > > > From: Leon Romanovsky <leonro@nvidia.com> > > > > > > After conversion of arch code to use physical address mapping, > > > there are no users of .map_page() and .unmap_page() callbacks, > > > so let's remove them. > > > > > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > > > --- > > > include/linux/dma-map-ops.h | 7 ------- > > > kernel/dma/mapping.c | 12 ------------ > > > kernel/dma/ops_helpers.c | 8 +------- > > > 3 files changed, 1 insertion(+), 26 deletions(-) > > > > It looks like you missed a few sparc32 bits: > > They were included, but the patch is named sparc64, > which is why I missed it. > > If you could rename the patch that would be nice. Let's see if new version is required. Thanks > > Sam >
© 2016 - 2026 Red Hat, Inc.