x86: EPT and KPT are contiguous

Ron had a great idea: alloc two contig pages for every KPT intermediate
page table, and have the corresponding EPT page be the adjacent physical
page.  The downside is the memory waste for non-VMM processes and the
pressure on the memory allocator.  The upside is the code is much
simpler and memwalks are faster, since we can easily find an EPTE given
a KPTE.

This commit does the two-page alloc for the intermediate pages.  The
existing EPT code won't actually work right now, esp since the pm ops
don't do EPT work.

There's some ugliness with the boot page directories.  I can't put and
align 8192 in entry64.S and have grub boot the damn thing.  So I put in
some dirty hacks to special case the boottime kernel mappings.
2 files changed