Hi Nadav,
> Hi, > > This is the eighth iteration of the nested VMX patch set. This iteration > solves a number of bugs and issues that bothered the reviewers. Some more > issues raised in the previous review remain open, but don't worry - I *am* > working to resolve all of them. > > The biggest improvement in this version is that SMP finally works: You can > now run nested VMX on an SMP host - The "nosmp" kernel option is no longer > required. You can also have SMP L1s and L2s, although in this version, SMP > L2 support is still somewhat buggy and should be made more stable in the > next version. The "vpid=0" option that used to be required is also no longer > required. > > Other improvements include: > > * #GP on writing read-only VMX MSRs, don't save/restore them, and don't > print annoying and incorrect messages on startup. > * Cleanup free_l1_state() and renamed it free_nested(). > * Removed guest expoitable printk()s. > * Finally got rid of the l1_state structure and all its redundant fields. > * Moved cpu and launched fields out of the (guest memory) vmcs12, and moved > to a new structure (in host memory) saved_vmcs. Avi, you asked if and why > these two fields are really needed - and they are needed, and I explained > why in a comment. > * Moved kunmap() out of nested_release_page() and into callers. > * Made vmcs_field_to_offset_table initialization more readable. > * Moved constants in vmx.c and to include files, as requested. > * Fixed wrong MOV_SS check in handle_launch_or_resume(). > * Fixed page leak in nested_vmx_exit_handled_msr(). > * Removed redundant if(nested) check. > * Allow turning off nested VMX for one guest (by removing VMX from cpuid). > * Fixed the EFER handling code. > > This new set of patches applys to the current KVM trunk (I checked with > 844e6679184180cffa7aca014d672545941ed78e). If you wish, you can also check > out an already-patched version of KVM from the repository > git://github.com/nyh/kvm-nested-vmx.git - take the branch "nvmx8". This branch doesn't even compile: CC [M] drivers/staging/samsung-laptop/samsung-laptop.o LD drivers/staging/se401/built-in.o CC [M] drivers/staging/se401/se401.o LD drivers/staging/serqt_usb2/built-in.o CC [M] drivers/staging/serqt_usb2/serqt_usb2.o LD drivers/staging/slicoss/built-in.o CC [M] drivers/staging/slicoss/slicoss.o LD drivers/staging/sm7xx/built-in.o CC [M] drivers/staging/sm7xx/smtcfb.o LD [M] drivers/staging/sm7xx/sm7xx.o LD drivers/staging/smbfs/built-in.o CC [M] drivers/staging/smbfs/proc.o CC [M] drivers/staging/smbfs/dir.o drivers/staging/smbfs/dir.c:286: error: static declaration of ‘smbfs_dentry_operations’ follows non-static declaration drivers/staging/smbfs/proto.h:42: note: previous declaration of ‘smbfs_dentry_operations’ was here drivers/staging/smbfs/dir.c:294: error: static declaration of ‘smbfs_dentry_operations_case’ follows non-static declaration drivers/staging/smbfs/proto.h:41: note: previous declaration of ‘smbfs_dentry_operations_case’ was here make[3]: *** [drivers/staging/smbfs/dir.o] Error 1 make[2]: *** [drivers/staging/smbfs] Error 2 make[1]: *** [drivers/staging] Error 2 make: *** [drivers] Error 2 juergh@gollum:~/hpq/git/kvm-nested-vmx$ git branch master * nvmx8 juergh@gollum:~/hpq/git/kvm-nested-vmx$ git log -1 commit 445a94a1497ed18a3c4fb94ae231ce7c7b3b637b Author: Nadav Har'El <n...@il.ibm.com> Date: Wed Jan 26 18:13:26 2011 +0200 Nested VMX patch, v8 It's probably not related to your patch but doesn't make me very comfortable about the stability of the resulting kernel. Can I safely apply your patch to the latest -rc kernel? ...Juerg > > About nested VMX: > ----------------- > > The following 29 patches implement nested VMX support. This feature enables > a guest to use the VMX APIs in order to run its own nested guests. > In other words, it allows running hypervisors (that use VMX) under KVM. > Multiple guest hypervisors can be run concurrently, and each of those can > in turn host multiple guests. > > The theory behind this work, our implementation, and its performance > characteristics were presented in OSDI 2010 (the USENIX Symposium on > Operating Systems Design and Implementation). Our paper was titled > "The Turtles Project: Design and Implementation of Nested Virtualization", > and was awarded "Jay Lepreau Best Paper". The paper is available online, at: > > http://www.usenix.org/events/osdi10/tech/full_papers/Ben-Yehuda.pdf > > This patch set does not include all the features described in the paper. > In particular, this patch set is missing nested EPT (L1 can't use EPT and > must use shadow page tables). It is also missing some features required to > run VMWare hypervisors as a guest. These missing features will be sent as > follow-on patchs. > > Running nested VMX: > ------------------ > > The nested VMX feature is currently disabled by default. It must be > explicitly enabled with the "nested=1" option to the kvm-intel module. > > No modifications are required to user space (qemu). However, qemu's default > emulated CPU type (qemu64) does not list the "VMX" CPU feature, so it must be > explicitly enabled, by giving qemu one of the following options: > > -cpu host (emulated CPU has all features of the real CPU) > > -cpu qemu64,+vmx (add just the vmx feature to a named CPU type) > > > This version was only tested with KVM (64-bit) as a guest hypervisor, and > Linux as a nested guest. > > > Patch statistics: > ----------------- > > Documentation/kvm/nested-vmx.txt | 241 ++ > arch/x86/include/asm/kvm_host.h | 2 > arch/x86/include/asm/msr-index.h | 9 > arch/x86/include/asm/vmx.h | 31 > arch/x86/kvm/svm.c | 6 > arch/x86/kvm/vmx.c | 2496 ++++++++++++++++++++++++++++- > arch/x86/kvm/x86.c | 10 > arch/x86/kvm/x86.h | 6 > 8 files changed, 2760 insertions(+), 41 deletions(-) > > -- > Nadav Har'El > IBM Haifa Research Lab > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html