swiotlb: Rate-limit printing when running out of SW-IOMMU space
authorGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 31 Oct 2016 15:45:03 +0000 (16:45 +0100)
committerKonrad Rzeszutek Wilk <konrad@kernel.org>
Mon, 7 Nov 2016 20:06:26 +0000 (15:06 -0500)
If the system runs out of SW-IOMMU space, changes are high successive
requests will fail, too, flooding the kernel log.  This is true
especially for streaming DMA, which is typically used repeatedly outside
the driver's initialization routine.  Add rate-limiting to fix this.

While at it, get rid of the open-coded dev_name() handling by using the
appropriate dev_err_*() variant.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
lib/swiotlb.c

index 22e13a0e19d76a2b704edab2464f0c2a0e57783f..6ce764410ae475cc8ba4d1324b4e78c56df2a6c9 100644 (file)
@@ -714,8 +714,8 @@ swiotlb_full(struct device *dev, size_t size, enum dma_data_direction dir,
         * When the mapping is small enough return a static buffer to limit
         * the damage, or panic when the transfer is too big.
         */
-       printk(KERN_ERR "DMA: Out of SW-IOMMU space for %zu bytes at "
-              "device %s\n", size, dev ? dev_name(dev) : "?");
+       dev_err_ratelimited(dev, "DMA: Out of SW-IOMMU space for %zu bytes\n",
+                           size);
 
        if (size <= io_tlb_overflow || !do_panic)
                return;