I think the main problem is that mtd buffers are not dma compatible [1].They can be allocated by vmalloc, don't be aligned on a page, ...

The problem was catch on jffs2 summary, but the same things could happen in other places.

So for me the correct fix, is either to fix mtd to have all buffer dma compatible or either fix mtd_dataflash to don't pass mtd buffer to spi stack, but to allocate dma buffer and do some copy.

BTW aren't there sparse annotation to track dma buffer ?

Matthieu

[1] http://article.gmane.org/gmane.linux.drivers.mtd/20663As for the original question... I'm not sure. At the moment I don'tbelieve it's true that all such buffers are suitable for DMA. Perhaps itwould be sensible for us to redefine the MTD API so that it is required(and fix the users).