mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 05:06:56 +00:00
KVM: x86: Fix up misreported CPU features
From qemu-kvm: Kernels before 2.6.30 misreported some essential CPU features via KVM_GET_SUPPORTED_CPUID. Fix them up. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
parent
aee028b95d
commit
19ccb8ea17
@ -99,12 +99,18 @@ uint32_t kvm_arch_get_supported_cpuid(CPUState *env, uint32_t function, int reg)
|
|||||||
break;
|
break;
|
||||||
case R_EDX:
|
case R_EDX:
|
||||||
ret = cpuid->entries[i].edx;
|
ret = cpuid->entries[i].edx;
|
||||||
if (function == 0x80000001) {
|
switch (function) {
|
||||||
|
case 1:
|
||||||
|
/* KVM before 2.6.30 misreports the following features */
|
||||||
|
ret |= CPUID_MTRR | CPUID_PAT | CPUID_MCE | CPUID_MCA;
|
||||||
|
break;
|
||||||
|
case 0x80000001:
|
||||||
/* On Intel, kvm returns cpuid according to the Intel spec,
|
/* On Intel, kvm returns cpuid according to the Intel spec,
|
||||||
* so add missing bits according to the AMD spec:
|
* so add missing bits according to the AMD spec:
|
||||||
*/
|
*/
|
||||||
cpuid_1_edx = kvm_arch_get_supported_cpuid(env, 1, R_EDX);
|
cpuid_1_edx = kvm_arch_get_supported_cpuid(env, 1, R_EDX);
|
||||||
ret |= cpuid_1_edx & 0xdfeff7ff;
|
ret |= cpuid_1_edx & 0xdfeff7ff;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user