[AVR32] Define ARCH_KMALLOC_MINALIGN to L1_CACHE_BYTES
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Mon, 11 Jun 2007 15:17:14 +0000 (17:17 +0200)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Thu, 14 Jun 2007 16:30:50 +0000 (18:30 +0200)
This allows SLUB debugging to be used without fear of messing up DMA
transfers. SPI is one example that easily breaks without this patch.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
include/asm-avr32/cache.h

index dabb955f3c00fd167dfca1671ea36f6257ba3371..d3cf35ab11ab127854c90385554f743848bfe371 100644 (file)
@@ -4,6 +4,15 @@
 #define L1_CACHE_SHIFT 5
 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
 
+/*
+ * Memory returned by kmalloc() may be used for DMA, so we must make
+ * sure that all such allocations are cache aligned. Otherwise,
+ * unrelated code may cause parts of the buffer to be read into the
+ * cache before the transfer is done, causing old data to be seen by
+ * the CPU.
+ */
+#define ARCH_KMALLOC_MINALIGN  L1_CACHE_BYTES
+
 #ifndef __ASSEMBLER__
 struct cache_info {
        unsigned int ways;