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
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 - 2025 Red Hat, Inc.