===== arch/ppc/config.in 1.195 vs edited ===== --- 1.195/arch/ppc/config.in Tue Jul 8 11:13:46 2003 +++ edited/arch/ppc/config.in Fri Jul 18 00:50:50 2003 @@ -730,6 +730,7 @@ bool ' Memory mapped I/O debugging' CONFIG_DEBUG_IOVIRT bool ' Spinlock debugging' CONFIG_DEBUG_SPINLOCK bool ' Wait queue debugging' CONFIG_DEBUG_WAITQ + bool ' Check for unaligned buffers in consistent_sync' CONFIG_DEBUG_CONSISTENT_SYNC bool ' Include kgdb kernel debugger' CONFIG_KGDB if [ "$CONFIG_KGDB" = "y" ]; then choice ' Serial Port' \ ===== arch/ppc/mm/cachemap.c 1.13 vs edited ===== --- 1.13/arch/ppc/mm/cachemap.c Thu Feb 27 11:40:16 2003 +++ edited/arch/ppc/mm/cachemap.c Fri Jul 18 00:52:05 2003 @@ -150,6 +150,19 @@ case PCI_DMA_NONE: BUG(); case PCI_DMA_FROMDEVICE: /* invalidate only */ + +#ifdef CONFIG_DEBUG_CONSISTENT_SYNC + if (unlikely(start & (L1_CACHE_LINE_SIZE - 1)) || + unlikely(end & (L1_CACHE_LINE_SIZE - 1))) + { + static unsigned int count = 0; + if (++count < 10) + printk(KERN_WARNING + "consistent_sync: 0x%08lx-0x%08lx " + "is not properly aligned, lr 0x%p\n", + start, end, __builtin_return_address(0)); + } +#endif invalidate_dcache_range(start, end); break; case PCI_DMA_TODEVICE: /* writeback only */