Re: [PATCH] dma-debug: Skip cacheline tracking for MMIO mappings
From: Robin Murphy
Date: Tue Oct 13 2026 - 10:29:25 EST
On 13/10/2026 12:44 pm, Leon Romanovsky wrote:
From: Leon Romanovsky <leonro@xxxxxxxxxx>
Mapping one MMIO dma-buf for many RDMA importers overflows dma-debug's
cacheline overlap counter and triggers a warning. DMA_ATTR_MMIO mappings
must never be CPU-cacheable, so CPU cacheline overlap tracking does not
apply to them.
Skip MMIO entries in both cacheline insertion and removal. Keep them in
the DMA entry hash so mapping and unmapping checks still run.
Seems fair;
Reviewed-by: Robin Murphy <robin.murphy@xxxxxxx>
[...]
Fixes: 0e74b34dfc33 ("dma-debug: add support for resource mappings")
Although it would be a challenge to backport _that_ far, so more realistically I'd probably say:
Fixes: 3aa31a8bb11e ("dma-buf: provide phys_vec to scatter-gather mapping routine")
since regular dma_map_resource() users are still never going to hit this making their one-off mapping of a UART FIFO or whatever.
Thanks,
Robin.
Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx>
---
kernel/dma/debug.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index 026d50de340e..36c1f7cbb2ae 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -489,8 +489,10 @@ static int active_cacheline_insert(struct dma_debug_entry *entry,
/* If the device is not writing memory then we don't have any
* concerns about the cpu consuming stale data. This mitigates
* legitimate usages of overlapping mappings.
+ * MMIO mappings are never CPU-cacheable and do not need tracking either.
*/
- if (entry->direction == DMA_TO_DEVICE)
+ if (entry->direction == DMA_TO_DEVICE ||
+ entry->attrs & DMA_ATTR_MMIO)
return 0;
spin_lock_irqsave(&radix_lock, flags);
@@ -519,7 +521,8 @@ static void active_cacheline_remove(struct dma_debug_entry *entry)
unsigned long flags;
/* ...mirror the insert case */
- if (entry->direction == DMA_TO_DEVICE)
+ if (entry->direction == DMA_TO_DEVICE ||
+ entry->attrs & DMA_ATTR_MMIO)
return;
spin_lock_irqsave(&radix_lock, flags);
---
base-commit: 39d3758108bb0ef9da484062d65288bbe9cada0e
change-id: 20261013-dma-debug-fixes-5aaf1bb17544
Best regards,
--
Leon Romanovsky <leonro@xxxxxxxxxx>