--- linux-2.6.21.noarch/lib/swiotlb.c.quiet 2007-06-01 13:23:04.000000000 -0400 +++ linux-2.6.21.noarch/lib/swiotlb.c 2007-06-01 14:18:26.000000000 -0400 @@ -505,6 +505,7 @@ swiotlb_free_coherent(struct device *hwd static void swiotlb_full(struct device *dev, size_t size, int dir, int do_panic) { + static int warnings = 0; /* * Ran out of IOMMU space for this operation. This is very bad. * Unfortunately the drivers cannot handle this operation properly. @@ -512,8 +513,9 @@ swiotlb_full(struct device *dev, size_t * 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->bus_id : "?"); + if (do_panic || ++warnings < 5) + printk(KERN_ERR "DMA: Out of SW-IOMMU space for %zu bytes at " + "device %s\n", size, dev ? dev->bus_id : "?"); if (size > io_tlb_overflow && do_panic) { if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL)