Re: [PATCH 0/29] nVMX: Nested VMX, v8

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <nyh@xxxxxxxxxx>
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 majordomo@xxxxxxxxxxxxxxx
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux