All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] powerpc: convert 'iommu_alloc failed' messages to dynamic debug
@ 2016-06-10 13:03 Mauricio Faria de Oliveira
  2016-06-11 23:02 ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 10+ messages in thread
From: Mauricio Faria de Oliveira @ 2016-06-10 13:03 UTC (permalink / raw)
  To: linuxppc-dev

This prevents flooding the logs with 'iommu_alloc failed' messages
while I/O is performed (normally) to very fast devices (e.g. NVMe).

That error is not necessarily a problem; device drivers can retry
later / reschedule the requests for which the allocation failed,
and handle things gracefully for the caller stack on top of them.

This helps at least with NVMe devices without "64-bit"/direct DMA
window scenarios (e.g., systems with more than a few terabytes of
memory, on which DDW cannot be enabled, currently), where just an
'dd' command can trigger errors.

  # dd if=/dev/zero of=/dev/nvme0n1p1 bs=64k count=512k
  <...>
  # echo $?
  0

  # dmesg
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c000000151c90000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c000000151c90000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c000000151c90000 npages 16
  <...>
  ppc_iommu_map_sg: 8186 callbacks suppressed
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c0000000fa5c0000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c000000100440000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c000000100440000 npages 16
  <...>
  ppc_iommu_map_sg: 5707 callbacks suppressed
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c0000000b5f50000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c0000000b5c60000 npages 16
  nvme 0000:00:06.0: iommu_alloc failed, tbl c0000001fa67c520 vaddr c0000000b4b30000 npages 16
  <...>

Tested on next-20160609.

Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
---
 arch/powerpc/kernel/iommu.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index a8e3490..b585bdc 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -479,10 +479,9 @@ int ppc_iommu_map_sg(struct device *dev, struct iommu_table *tbl,
 
 		/* Handle failure */
 		if (unlikely(entry == DMA_ERROR_CODE)) {
-			if (printk_ratelimit())
-				dev_info(dev, "iommu_alloc failed, tbl %p "
-					 "vaddr %lx npages %lu\n", tbl, vaddr,
-					 npages);
+			dev_dbg_ratelimited(dev, "iommu_alloc failed, tbl %p "
+				 "vaddr %lx npages %lu\n", tbl, vaddr,
+				 npages);
 			goto failure;
 		}
 
@@ -776,11 +775,9 @@ dma_addr_t iommu_map_page(struct device *dev, struct iommu_table *tbl,
 					 mask >> tbl->it_page_shift, align,
 					 attrs);
 		if (dma_handle == DMA_ERROR_CODE) {
-			if (printk_ratelimit())  {
-				dev_info(dev, "iommu_alloc failed, tbl %p "
-					 "vaddr %p npages %d\n", tbl, vaddr,
-					 npages);
-			}
+			dev_dbg_ratelimited(dev, "iommu_alloc failed, tbl %p "
+				 "vaddr %p npages %d\n", tbl, vaddr,
+				 npages);
 		} else
 			dma_handle |= (uaddr & ~IOMMU_PAGE_MASK(tbl));
 	}
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-08-03 21:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-10 13:03 [PATCH] powerpc: convert 'iommu_alloc failed' messages to dynamic debug Mauricio Faria de Oliveira
2016-06-11 23:02 ` Benjamin Herrenschmidt
2016-06-13 13:27   ` Mauricio Faria de Oliveira
2016-06-13 21:26     ` Benjamin Herrenschmidt
2016-06-13 21:43       ` Mauricio Faria de Oliveira
2016-06-13 21:51         ` Benjamin Herrenschmidt
2016-06-13 22:01           ` Mauricio Faria de Oliveira
2016-08-03 19:39       ` Mauricio Faria de Oliveira
2016-08-03 21:34         ` Benjamin Herrenschmidt
2016-08-03 21:39           ` Mauricio Faria de Oliveira

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.