[libvirt] [Qemu-devel] [PATCH qom-cpu 08/11] target-i386: check/enforce: Check SVM flag support as well

Gleb Natapov gleb at redhat.com
Sun Jan 6 14:25:12 UTC 2013


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 at redhat.com>
Reviewed-by: Gleb Natapov <gleb at redhat.com>

> ---
> Cc: Joerg Roedel <joro at 8bytes.org>
> Cc: kvm at vger.kernel.org
> Cc: libvir-list at redhat.com
> Cc: Jiri Denemark <jdenemar at redhat.com>
> 
> 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.




More information about the libvir-list mailing list