(Now with correct Cc-list. I accidentially copied the wrong line from MAINTAINERS in the first post of this. Sorry for the double-post)

Hi Avi, Marcelo,

here is finally the third round of my NPT virtualization patches for KVM. Ittook a while to get everything running (including KVM itself) on 32 bit againto actually test it. But testing on 32 bit host and with a 32 bit hypervisorwas a very good idea. I found some serious bugs and shortcomings in my codethat are fixed now in v3.

Only the valid combinations where tested of course, so no 64 bit on 32 bitcombinations were tested. Except for that I tested all of the abovecombinations and all worked without any regressions.

Other changes since v2 are:

* Addressed the review comments from v2: - Rebased everything to latest upstream code - renamed nested_mmu to walk_mmu to make its meaning more clear - the gva_to_gpa functions are not longer swapped between the two mmu states which makes it more consistent - Moved struct vcpu page fault data into seperate sub-struct for better readability - Other minor stuff (coding style, typos) - Renamed the kvm_*_page_x86 functions to kvm_*_page_mmu so that they can be made more generic later. * Made everything work on 32 bit - Introduced mmu->lm_root pointer to let the softmmu shadow 32 bit page tables with a long-mode page table. The lm_root page-table root always just points to the mmu.pae_root, so this builds entirely on the pae-shadow code. - Split mmu_alloc_roots into a shadow and direct_map version to simplify the code and to not break the direct_map paths anymore when changing something in that function. * Probably other changes I forgot about

This patchset applies on todays avi/master + the three patches I sent end oflast week. These patches are necessary for some of the tests above to run.

For the curious and impatient user I put everything in a branch on kernel.org.If you want to test it you can pull the tree from