[PATCH 3/4] move kvm_trim_features where it belongs.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <glommer@xxxxxxxxxx>
---
 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, &copy);
 
     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;
 }
-- 
1.5.6.6

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux