This is just for internal review right now. I plan to send this out in a few days if this is thought to be beneficial. The virtual memory map on SGI machines is current mapped using a part of the VMALLOC address space. This means that we are forced to use page sized maps and each of these pages will require a TLB entry if a page struct is in use. This can become quite frequent since with one 16k page one can only map 256 pages. 256 pages in turn mean 4 Megabytes. In a large system with lets say 4GB of RAM per node we may have to use 1024 TLBs. If an application frequently accesses page meta information (typical for file operations and memory allocation operations!) then we may create a problem. The following patchset makes it possible to use larger page sizes for the virtual memory map. If one would use a 16MB page size then we would be able to access all the metainformation about the page states in a 4GB area with a single TLB entry. This patch also introduces a facility to provide areas that can map pages of varying sizes called the VKP (variable kernel pagesizes). The obvious first user is the virtual memory map but it may also be used to map other large scale memory structures with just a few TLBs and a small page table.