On Tue, May 13, 2008 at 07:44:06PM +0800, zhuzhenhua wrote: > thanks for your advice, i found in newest kernel version, in some arch , the > dma_alloc_coherent will call split_page. > because my kernel version is 2.6.14, so i first patch a split_page patch as > follow: > http://www.kernel.org/pub/linux/kernel/people/npiggin/patches/lockless/2.6.16-rc5/broken-out/mm-split-highorder.patch > > but it seemes that there is still no split_page in > dma_alloc_coherent/dma_alloc_noncoherent > so i copy from other arch code to arch/mips/mm/dma-noncoherent.c (attach at > the end of mail) > and now my driver just use dma_alloc_coherent malloc 3M directly, and it > seemes ok. > i just wonder why mips arch dma_alloc_coherent/dma_alloc_nocoherent do not > call split_page while other arch calling. I have not identified the waste of memory as a big problem for typical MIPS systems yet. The 3MB requirement of your device is sort of odd because it's not a power of two. Have you considered splitting the allocation into a 2MB and a 1MB allocation or would that be undersirable? Ralf