On 20/03/15 16:47, Maxime Ripard wrote: > On Fri, Mar 20, 2015 at 01:37:50PM +0200, Tomi Valkeinen wrote: >> On 15/03/15 00:02, Geert Uytterhoeven wrote: >>> On Fri, Mar 13, 2015 at 10:31 PM, Thomas Niederprüm >>> <niederp@xxxxxxxxxxxxxxxx> wrote: >>>> Am Tue, 10 Mar 2015 13:28:25 +0200 >>>> schrieb Tomi Valkeinen <tomi.valkeinen@xxxxxx>: >>>>> 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). > > vmalloc also returns pages, so the size will be page-aligned. It > doesn't make much of a difference here, since we will only use a > single page in both case (the max resolution of these screens is > 128x39, with one bit per pixel). Ok, that's not much, then =). In that case __get_free_pages sounds fine. Even if the resolution would be slightly higher, we're only talking about a page or two extra. Usually double-underscore in front of a func means "don't call this". I don't know why this one has the underscores. Tomi
Attachment:
signature.asc
Description: OpenPGP digital signature