Re: [PATCH 4/8] fbdev: ssd1307fb: Use vmalloc to allocate video memory.
From: Tomi Valkeinen <hidden>
Date: 2015-03-20 15:25:49
Also in:
lkml
On 20/03/15 16:47, Maxime Ripard wrote:
On Fri, Mar 20, 2015 at 01:37:50PM +0200, Tomi Valkeinen wrote:quoted
On 15/03/15 00:02, Geert Uytterhoeven wrote:quoted
On Fri, Mar 13, 2015 at 10:31 PM, Thomas Niederprüm [off-list ref] wrote:quoted
Am Tue, 10 Mar 2015 13:28:25 +0200 schrieb Tomi Valkeinen [off-list ref]:quoted
Also, isn't doing __pa() for the memory returned by vmalloc plain wrong?quoted
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
Attachments
- signature.asc [application/pgp-signature] 819 bytes