On 15/03/15 00:02, Geert Uytterhoeven wrote: > On Fri, Mar 13, 2015 at 10:31 PM, Thomas Niederprüm > wrote: >> Am Tue, 10 Mar 2015 13:28:25 +0200 >> schrieb Tomi Valkeinen : >>> Also, isn't doing __pa() for the memory returned by vmalloc plain >>> wrong? >> >>> What was the crash about when using kmalloc? It would be good to fix >>> defio, as I don't see why it should not work with kmalloced memory. >> >> The main challenge here is that the memory handed to userspace upon >> mmap call needs to be page aligned. The memory returned by kmalloc has >> no such alignment, but the pointer presented to the userspace program >> gets aligned to next page boundary. It's not clear to me whether there >> is an easy way to obtain page aligned kmalloc memory. Memory >> allocated by vmalloc on the other hand is always aligned to page >> boundaries. This is why I chose to go for vmalloc. > > __get_free_pages()? I'm not that experienced with mem management, so I have to ask... __get_free_pages() probably works fine, but isn't vmalloc better here? __get_free_pages() will give you possibly a lot more memory than you need. And the memory is contiguous, so it could be difficult to allocate a larger memory area. The driver doesn't need contiguous memory (except in the virtual sense). Tomi