On Fri, Jan 04, 2013 at 08:01:09PM -0200, Eduardo Habkost wrote: > When nested SVM is supported, the kernel returns the SVM flag on > GET_SUPPORTED_CPUID[1], so we can check the SVM flag safely on > kvm_check_features_against_host(). > > I don't know why the original code ignored the SVM flag. Maybe it was > because kvm_cpu_fill_host() used the CPUID instruction directly instead > of GET_SUPPORTED_CPUID > > [1] Older kernels (before v2.6.37) returned the SVM flag even if nested > SVM was _not_ supported. So the only cases where this patch should > change behavior is when SVM is being requested by the user or the > CPU model, but not supported by the host. And on these cases we > really want QEMU to abort if the "enforce" option is set. > > Signed-off-by: Eduardo Habkost <ehabkost@xxxxxxxxxx> Reviewed-by: Gleb Natapov <gleb@xxxxxxxxxx> > --- > Cc: Joerg Roedel <joro@xxxxxxxxxx> > Cc: kvm@xxxxxxxxxxxxxxx > Cc: libvir-list@xxxxxxxxxx > Cc: Jiri Denemark <jdenemar@xxxxxxxxxx> > > I'm CCing libvirt people in case having SVM enabled by default may cause > trouble when libvirt starts using the "enforce" flag. I don't know if > libvirt expects most of the QEMU CPU models to have nested SVM enabled. > > Changes v2: > - Coding style fix > --- > target-i386/cpu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index ce64b98..a9dd959 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c > @@ -974,7 +974,7 @@ static int kvm_check_features_against_host(x86_def_t *guest_def) > {&guest_def->ext2_features, &host_def.ext2_features, > ~0, ext2_feature_name, 0x80000001, R_EDX}, > {&guest_def->ext3_features, &host_def.ext3_features, > - ~CPUID_EXT3_SVM, ext3_feature_name, 0x80000001, R_ECX} > + ~0, ext3_feature_name, 0x80000001, R_ECX} > }; > > assert(kvm_enabled()); > -- > 1.7.11.7 > -- Gleb. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list