summaryrefslogtreecommitdiff
path: root/target-i386/helper.c
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@amd.com>2009-06-25 00:08:02 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-06-29 13:52:11 -0500
commit8fc1387e6656758413846949879c004730b4377a (patch)
treeb3b04d592bf6d1e5428f58edae5a4a718479aa5c /target-i386/helper.c
parentf5704e7861e2f8a7430ac5f69b81be693f99d6c3 (diff)
downloadqemu-8fc1387e6656758413846949879c004730b4377a.tar.gz
qemu-8fc1387e6656758413846949879c004730b4377a.tar.bz2
qemu-8fc1387e6656758413846949879c004730b4377a.zip
fix KVMs GET_SUPPORTED_CPUID feature usage
If we want to trim the user provided CPUID bits for KVM to be not greater than that of the host, we should not remove the bits _after_ we sent them to the kernel. This fixes the masking of features that are not present on the host by moving the trim function and it's call from helper.c to kvm.c. It helps to use -cpu host. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'target-i386/helper.c')
-rw-r--r--target-i386/helper.c29
1 files changed, 0 insertions, 29 deletions
diff --git a/target-i386/helper.c b/target-i386/helper.c
index d4498e57c1..2e775701d6 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -92,20 +92,6 @@ static void add_flagname_to_bitmaps(const 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;
@@ -1773,21 +1759,6 @@ 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;
}