[PATCH 0/18][RFC] Nested Paging support for Nested SVM (aka NPT-Virtualization)

From: Joerg Roedel
Date: Wed Mar 03 2010 - 14:13:10 EST


here are the patches that implement nested paging support for nested
svm. They are somewhat intrusive to the soft-mmu so I post them as RFC
in the first round to get feedback about the general direction of the
changes. Nevertheless I am proud to report that with these patches the
famous kernel-compile benchmark runs only 4% slower in the l2 guest as
in the l1 guest when l2 is single-processor. With SMP guests the
situation is very different. The more vcpus the guest has the more is
the performance drop from l1 to l2.
Anyway, this post is to get feedback about the overall concept of these
patches. Please review and give feedback :-)




arch/x86/include/asm/kvm_host.h | 21 ++++++
arch/x86/kvm/mmu.c | 152 ++++++++++++++++++++++++++++++---------
arch/x86/kvm/mmu.h | 2 +
arch/x86/kvm/paging_tmpl.h | 81 ++++++++++++++++++---
arch/x86/kvm/svm.c | 126 +++++++++++++++++++++++++++-----
arch/x86/kvm/vmx.c | 9 +++
arch/x86/kvm/x86.c | 19 +++++-
include/linux/kvm.h | 1 +
include/linux/kvm_host.h | 5 ++
9 files changed, 354 insertions(+), 62 deletions(-)


Joerg Roedel (18):
KVM: MMU: Check for root_level instead of long mode
KVM: MMU: Make tdp_enabled a mmu-context parameter
KVM: MMU: Make set_cr3 a function pointer in kvm_mmu
KVM: X86: Introduce a tdp_set_cr3 function
KVM: MMU: Introduce get_cr3 function pointer
KVM: MMU: Introduce inject_page_fault function pointer
KVM: SVM: Implement MMU helper functions for Nested Nested Paging
KVM: MMU: Change init_kvm_softmmu to take a context as parameter
KVM: MMU: Let is_rsvd_bits_set take mmu context instead of vcpu
KVM: MMU: Introduce generic walk_addr function
KVM: MMU: Add infrastructure for two-level page walker
KVM: MMU: Implement nested gva_to_gpa functions
KVM: MMU: Introduce Nested MMU context
KVM: SVM: Initialize Nested Nested MMU context on VMRUN
KVM: MMU: Propagate the right fault back to the guest after gva_to_gpa
KVM: X86: Add callback to let modules decide over some supported cpuid bits
KVM: SVM: Report Nested Paging support to userspace

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/