-
This was tricky. Unfortunately, since guest physical addresses are wrapped in the paging entries, we can't use some of the linux macros / routines (e.g., pud_offset). This would allow us to benefit from pud- and pmd-folding, making the code more portable. Perhaps we'll think of something later... The code will only work on a linux with 4 paging levels (pgd, pud, pmd, page table). lcd_mm_gva_walk is the main routine that traverses the hierarchy. Each subroutine translates a paging structures guest physical to host virtual address, and gets the correct entry. A simple watermark is used (rather than a bitmap) for allocating guest physical memory.
fa756550