From patchwork Tue May 26 21:33:00 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Glauber Costa X-Patchwork-Id: 26105 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n4QLXr2c027508 for ; Tue, 26 May 2009 21:33:54 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756020AbZEZVdH (ORCPT ); Tue, 26 May 2009 17:33:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756563AbZEZVdH (ORCPT ); Tue, 26 May 2009 17:33:07 -0400 Received: from mx2.redhat.com ([66.187.237.31]:49578 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756020AbZEZVdC (ORCPT ); Tue, 26 May 2009 17:33:02 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n4QLX4Xm005909 for ; Tue, 26 May 2009 17:33:04 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n4QLX24E019384; Tue, 26 May 2009 17:33:03 -0400 Received: from localhost.localdomain (virtlab1.virt.bos.redhat.com [10.16.72.21]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n4QLX1QL013830; Tue, 26 May 2009 17:33:02 -0400 From: Glauber Costa To: kvm@vger.kernel.org Cc: avi@redhat.com Subject: [PATCH 3/4] move kvm_trim_features where it belongs. Date: Tue, 26 May 2009 17:33:00 -0400 Message-Id: <1243373581-18085-4-git-send-email-glommer@redhat.com> In-Reply-To: <1243373581-18085-3-git-send-email-glommer@redhat.com> References: <1243373581-18085-1-git-send-email-glommer@redhat.com> <1243373581-18085-2-git-send-email-glommer@redhat.com> <1243373581-18085-3-git-send-email-glommer@redhat.com> X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We also kill the unused name argument. It would introduce an non-necessary depedency on code present at helper.c Signed-off-by: Glauber Costa --- qemu-kvm-x86.c | 23 +++++++++++++++++++++++ target-i386/helper.c | 29 ----------------------------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index bbe0312..fcb594c 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -503,6 +503,19 @@ static int get_para_features(kvm_context_t kvm_context) return features; } +static void kvm_trim_features(uint32_t *features, uint32_t supported) +{ + int i; + uint32_t mask; + + for (i = 0; i < 32; ++i) { + mask = 1U << i; + if ((*features & mask) && !(supported & mask)) { + *features &= ~mask; + } + } +} + int kvm_arch_qemu_init_env(CPUState *cenv) { struct kvm_cpuid_entry2 cpuid_ent[100]; @@ -566,6 +579,16 @@ int kvm_arch_qemu_init_env(CPUState *cenv) do_cpuid_ent(&cpuid_ent[cpuid_nent++], i, 0, ©); kvm_setup_cpuid2(kvm_context, cenv->cpu_index, cpuid_nent, cpuid_ent); + + kvm_trim_features(&cenv->cpuid_features, + kvm_arch_get_supported_cpuid(cenv, 1, R_EDX)); + kvm_trim_features(&cenv->cpuid_ext_features, + kvm_arch_get_supported_cpuid(cenv, 1, R_ECX)); + kvm_trim_features(&cenv->cpuid_ext2_features, + kvm_arch_get_supported_cpuid(cenv, 0x80000001, R_EDX)); + kvm_trim_features(&cenv->cpuid_ext3_features, + kvm_arch_get_supported_cpuid(cenv, 0x80000001, R_ECX)); + return 0; } diff --git a/target-i386/helper.c b/target-i386/helper.c index ed2dc41..848d05b 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -94,20 +94,6 @@ static void add_flagname_to_bitmaps(char *flagname, uint32_t *features, } } -static void kvm_trim_features(uint32_t *features, uint32_t supported, - const char *names[]) -{ - int i; - uint32_t mask; - - for (i = 0; i < 32; ++i) { - mask = 1U << i; - if ((*features & mask) && !(supported & mask)) { - *features &= ~mask; - } - } -} - typedef struct x86_def_t { const char *name; uint32_t level; @@ -1715,20 +1701,5 @@ CPUX86State *cpu_x86_init(const char *cpu_model) qemu_init_vcpu(env); - if (kvm_enabled()) { - kvm_trim_features(&env->cpuid_features, - kvm_arch_get_supported_cpuid(env, 1, R_EDX), - feature_name); - kvm_trim_features(&env->cpuid_ext_features, - kvm_arch_get_supported_cpuid(env, 1, R_ECX), - ext_feature_name); - kvm_trim_features(&env->cpuid_ext2_features, - kvm_arch_get_supported_cpuid(env, 0x80000001, R_EDX), - ext2_feature_name); - kvm_trim_features(&env->cpuid_ext3_features, - kvm_arch_get_supported_cpuid(env, 0x80000001, R_ECX), - ext3_feature_name); - } - return env; }