Joerg Roedel wrote: > Hi, > > 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 Wow! Jan > 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 :-) > > Thanks, > > Joerg > > Diffstat: > > 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(-) > > Shortlog: > > 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 > KVM: X86: Add KVM_CAP_SVM_CPUID_FIXED > >
Attachment:
signature.asc
Description: OpenPGP digital signature