Skip to contentSkip to conversation

sh: declared coherent memory fixes

PATCH New Magnus Damm 1 participant 1 message Jan 13, 2008 SuperH

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sh: declared coherent memory fixes

sh: declared coherent memory fixes

Two minor fixes for the recently added declared coherent memory implementation:
- move the WARN_ON() to avoid triggering with usb storage and bounce buffer
- add a BUG_ON() to make sure DMA_MEMORY_EXCLUSIVE isn't set

These may be of interest for x86 as well.

---

 arch/sh/mm/consistent.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
arch/sh/mm/consistent.c +4 -2
@@ -64,13 +64,15 @@ void dma_free_coherent(struct device *de
 	struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
 	int order = get_order(size);
 
-	WARN_ON(irqs_disabled());	/* for portability */
 	if (mem && vaddr >= mem->virt_base && vaddr < (mem->virt_base + (mem->size << PAGE_SHIFT))) {
 		int page = (vaddr - mem->virt_base) >> PAGE_SHIFT;
 
 		bitmap_release_region(mem->bitmap, page, order);
-	} else
+	} else {
+		WARN_ON(irqs_disabled());	/* for portability */
+		BUG_ON(mem && mem->flags & DMA_MEMORY_EXCLUSIVE);
 		free_pages((unsigned long)vaddr, order);
+	}
 }
 EXPORT_SYMBOL(dma_free_coherent);