mirror of
https://github.com/qemu/qemu.git
synced 2025-08-08 08:05:17 +00:00
target/i386: kvm: do not use kvm_check_extension to find paravirtual capabilities
Paravirtualized features have been listed in KVM_GET_SUPPORTED_CPUID since Linux 2.6.35 (commit 84478c829d0f, "KVM: x86: export paravirtual cpuid flags in KVM_GET_SUPPORTED_CPUID", 2010-05-19). It has been more than 10 years, so remove the fallback code. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d1e2d46467
commit
c3dfce9afd
@ -284,30 +284,6 @@ static struct kvm_cpuid2 *get_supported_cpuid(KVMState *s)
|
|||||||
return cpuid;
|
return cpuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct kvm_para_features {
|
|
||||||
int cap;
|
|
||||||
int feature;
|
|
||||||
} para_features[] = {
|
|
||||||
{ KVM_CAP_CLOCKSOURCE, KVM_FEATURE_CLOCKSOURCE },
|
|
||||||
{ KVM_CAP_NOP_IO_DELAY, KVM_FEATURE_NOP_IO_DELAY },
|
|
||||||
{ KVM_CAP_PV_MMU, KVM_FEATURE_MMU_OP },
|
|
||||||
{ KVM_CAP_ASYNC_PF, KVM_FEATURE_ASYNC_PF },
|
|
||||||
{ KVM_CAP_ASYNC_PF_INT, KVM_FEATURE_ASYNC_PF_INT },
|
|
||||||
};
|
|
||||||
|
|
||||||
static int get_para_features(KVMState *s)
|
|
||||||
{
|
|
||||||
int i, features = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(para_features); i++) {
|
|
||||||
if (kvm_check_extension(s, para_features[i].cap)) {
|
|
||||||
features |= (1 << para_features[i].feature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return features;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool host_tsx_broken(void)
|
static bool host_tsx_broken(void)
|
||||||
{
|
{
|
||||||
int family, model, stepping;\
|
int family, model, stepping;\
|
||||||
@ -367,13 +343,11 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||||||
struct kvm_cpuid2 *cpuid;
|
struct kvm_cpuid2 *cpuid;
|
||||||
uint32_t ret = 0;
|
uint32_t ret = 0;
|
||||||
uint32_t cpuid_1_edx;
|
uint32_t cpuid_1_edx;
|
||||||
bool found = false;
|
|
||||||
|
|
||||||
cpuid = get_supported_cpuid(s);
|
cpuid = get_supported_cpuid(s);
|
||||||
|
|
||||||
struct kvm_cpuid_entry2 *entry = cpuid_find_entry(cpuid, function, index);
|
struct kvm_cpuid_entry2 *entry = cpuid_find_entry(cpuid, function, index);
|
||||||
if (entry) {
|
if (entry) {
|
||||||
found = true;
|
|
||||||
ret = cpuid_entry_get_reg(entry, reg);
|
ret = cpuid_entry_get_reg(entry, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,12 +422,6 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||||||
}
|
}
|
||||||
} else if (function == KVM_CPUID_FEATURES && reg == R_EDX) {
|
} else if (function == KVM_CPUID_FEATURES && reg == R_EDX) {
|
||||||
ret |= 1U << KVM_HINTS_REALTIME;
|
ret |= 1U << KVM_HINTS_REALTIME;
|
||||||
found = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fallback for older kernels */
|
|
||||||
if ((function == KVM_CPUID_FEATURES) && !found) {
|
|
||||||
ret = get_para_features(s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user