On 11 Dec 2002, Alan Cox wrote:
> Since vmalloc is physically non linear is there any reason you can't
> just use get_free_page() a lot ?
I'm not using vmalloc directly. I'm indeed using many get_free_pages of 64kB,
as the O2 FB device has a TLB of it's own and can handle a non physically
linear framebuffer (up to 8MB with 64kB granularity). I'm then remapping
all those pages to one virtual region obtained from get_vm_area so that
1. caching attributes can be set to cacheable write-through no WA
2. the fbcon-cfb* code can be used as it sees the framebuffer as linear.
3. 64kB chuncks can be dynamically allocated and freed depending on the
framebuffer resolution, keeping memory optimally shared between apps and
framebuffer (compared to the static bootmem allocation).
However, as it is implemented currently, there are only 1024 kernel
virtual->physical mappings available (include/asm-mips64/pgtable.h),
that is only 4MB can be mapped. Maybe something like fixmap would help
but it's not yet there for mips64.