Eduardo Habkost wrote: > On Thu, Nov 06, 2008 at 12:30:51PM +0200, Avi Kivity wrote: > >> Eric W. Biederman wrote: >> >>>> If you want to be extra simple and safe, remove kvm from the equation. Make the >>>> disabling code part of kdump/emergency_restart and only rely on the convention >>>> that cr3.vmxe == vmxon. >>>> >>>> >>> Convention? >>> >>> >> There is a de-facto convention supported by at least vmware and kvm. If >> cr4.vmxe is 1, then we are in vmx operation. If cr4.vmxe is 0, then we >> are not in vmx operation. This allows us to determine whether we need >> to execute vmxoff without any APIs. >> > > I am just worried about the probing needed to make sure CR4 is available > (and that the CR4.VMXE bit means what we expect it to mean), That's cpu_has_kvm_support() in vmx.c. Should compile to three instructions. > before we > try to read it and check VMXE. The same for SVM and the MSRs we need to > touch to disable SVM. > That's has_svm() in svm.c; slightly longer but not any more dangerous. > I prefer to reuse code that already exists on KVM and is working than > adding new probing code that I won't be able to test on all hardware > configurations. > We could move the code to a header file, and so compile it both for kvm and for emergency_restart/kdump. -- error compiling committee.c: too many arguments to function