Put the KPCRs in high memory, in their own PML4.
This also removes the need to do another (probably) semi-expensive remap when cloning contexts, since the KPCRs (for kernel TLS) are no longer stored in the user PML4 (as they were previously limited to 4 GiB).
But most importantly, it allows the last place as far as I am aware, where the kernel maps user-inaccessible memory in lower half addresses. With this change done, we might as well be able to optimize out page table walking while validating system call buffers, under the invariant that an address is user space accessible if and only if it is lower half.
Edited by Jacob Lorentzon