All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix strange panic message selection logic when swiotlb fills up
@ 2009-07-13 19:36 Casey Dahlin
  0 siblings, 0 replies; only message in thread
From: Casey Dahlin @ 2009-07-13 19:36 UTC (permalink / raw)
  To: torvalds; +Cc: Linux Kernel

swiotlb_full in lib/swiotlb.c contains the following code snippet to produce a panic when the software iotlb is too full to handle a new allocation:

	if (size > io_tlb_overflow && do_panic) {
		if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL)
			panic("DMA: Memory would be corrupted\n");
		if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL)
			panic("DMA: Random memory would be DMAed\n");
	}

Note the path when dir == DMA_BIDIRECTIONAL. The first panic() will be called always, yet the second if statement still checks for DMA_BIDIRECTIONAL. Unless we intend to panic twice, this is somewhat confusing.

This patch adds a third, separate error for DMA_BIDIRECTIONAL to make things a bit clearer.

diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index bffe6d7..35e01b3 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -625,12 +625,15 @@ swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)
 	printk(KERN_ERR "DMA: Out of SW-IOMMU space for %zu bytes at "
 	       "device %s\n", size, dev ? dev_name(dev) : "?");
 
-	if (size > io_tlb_overflow && do_panic) {
-		if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL)
-			panic("DMA: Memory would be corrupted\n");
-		if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL)
-			panic("DMA: Random memory would be DMAed\n");
-	}
+	if (size <= io_tlb_overflow || !do_panic)
+		return;
+
+	if (dir == DMA_BIDIRECTIONAL)
+		panic("DMA: Random memory could be corrupted or DMAed\n");
+	if (dir == DMA_FROM_DEVICE)
+		panic("DMA: Memory would be corrupted\n");
+	if (dir == DMA_TO_DEVICE)
+		panic("DMA: Random memory would be DMAed\n");
 }
 
 /*

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-07-13 19:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-13 19:36 [PATCH] Fix strange panic message selection logic when swiotlb fills up Casey Dahlin

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.