The linear virtual address space that is important to the kernel is shown in Figure 7.1. The area up until PAGE_OFFSET is reserved for the process and changes with every context switch. In x86, this is defined as 0xC0000000 or 3GB leaving the upper 1GB of memory for the kernel.
After the process address space, kernel image is mapped followed by the physical page mem_map is stored which is the struct page for each physical page frame in the system. Between the physical memory map and the vmalloc address space, there is a gap of space VMALLOC_OFFSET in size. On the x86, this gap is 8MiB big and exists to guard against out of bounds errors.
In low memory systems, the remaining amount of the virtual address space, minus a 2 page gap, is used by vmalloc for representing non-contiguous memory in a contiguous virtual address space. In high memory systems, the area extends as far as PKMAP_BASE minus the 2 page gap. In that case, the remaining area is used for mapping high memory pages into the kernel virtual address with kmap and kunmap.