From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] qemu-kvm: Ask kernel about supported svm features Date: Thu, 22 Apr 2010 14:07:14 +0300 Message-ID: <4BD02DE2.9010106@redhat.com> References: <1271933879-15849-1-git-send-email-joerg.roedel@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Anthony Liguori , kvm@vger.kernel.org To: Joerg Roedel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:33897 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753843Ab0DVLHR (ORCPT ); Thu, 22 Apr 2010 07:07:17 -0400 In-Reply-To: <1271933879-15849-1-git-send-email-joerg.roedel@amd.com> Sender: kvm-owner@vger.kernel.org List-ID: On 04/22/2010 01:57 PM, Joerg Roedel wrote: > This patch adds code to ask the kernel about the svm > features it supports for its guests and propagates them to > the guest. The new capability is necessary because the old > behavior of the kernel was to just return the host svm > features but every svm-feature needs emulation in the nested > svm kernel code. The new capability indicates that the > kernel is aware of that when returning svm cpuid > information. > No new capability here. > Signed-off-by: Joerg Roedel > --- > qemu-kvm-x86.c | 14 ++++++++++++-- > 1 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c > index 748ff69..6eccd69 100644 > --- a/qemu-kvm-x86.c > +++ b/qemu-kvm-x86.c > @@ -1327,8 +1327,18 @@ int kvm_arch_init_vcpu(CPUState *cenv) > qemu_kvm_cpuid_on_env(©); > limit = copy.regs[R_EAX]; > > - for (i = 0x80000000; i<= limit; ++i) > - do_cpuid_ent(&cpuid_ent[cpuid_nent++], i, 0,©); > + for (i = 0x80000000; i<= limit; ++i) { > + do_cpuid_ent(&cpuid_ent[cpuid_nent], i, 0,©); > + switch (i) { > + case 0x8000000a: > + cpuid_ent[cpuid_nent].eax = kvm_arch_get_supported_cpuid(cenv, 0x8000000a, R_EAX); > + cpuid_ent[cpuid_nent].ebx = kvm_arch_get_supported_cpuid(cenv, 0x8000000a, R_EBX); > + cpuid_ent[cpuid_nent].ebx = kvm_arch_get_supported_cpuid(cenv, 0x8000000a, R_EBX); > + cpuid_ent[cpuid_nent].edx = kvm_arch_get_supported_cpuid(cenv, 0x8000000a, R_EDX); > + break; > + } > + cpuid_nent += 1; > + } > I don't understand why this is different compared to all other cpuid bits. -- error compiling committee.c: too many arguments to function