diff options
author | Babu Moger <babu.moger@amd.com> | 2018-06-13 21:18:22 -0400 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2018-06-22 15:01:15 -0300 |
commit | f98bbd8304112187cafc3e636c31b2a3865d2717 (patch) | |
tree | d432efb88458ef55408c96786450b5d8cb5a3ec7 /target | |
parent | 254790a909a2f153d689bfa7d8e8f0386cda870d (diff) | |
download | qemu-f98bbd8304112187cafc3e636c31b2a3865d2717.zip |
i386: Allow TOPOEXT to be enabled on older kernels
Enabling TOPOEXT feature might cause compatibility issues if
older kernels does not set this feature. Lets set this feature
unconditionally.
Signed-off-by: Babu Moger <babu.moger@amd.com>
Message-Id: <1528939107-17193-2-git-send-email-babu.moger@amd.com>
[ehabkost: rewrite comment and commit message]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target')
-rw-r--r-- | target/i386/kvm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 445e0e0b11..2d174f3a91 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -372,6 +372,13 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function, if (host_tsx_blacklisted()) { ret &= ~(CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_HLE); } + } else if (function == 0x80000001 && reg == R_ECX) { + /* + * It's safe to enable TOPOEXT even if it's not returned by + * GET_SUPPORTED_CPUID. Unconditionally enabling TOPOEXT here allows + * us to keep CPU models including TOPOEXT runnable on older kernels. + */ + ret |= CPUID_EXT3_TOPOEXT; } else if (function == 0x80000001 && reg == R_EDX) { /* On Intel, kvm returns cpuid according to the Intel spec, * so add missing bits according to the AMD spec: |