| From e9dae0bdd5bec11711197b1dbb58886d64c8e28a Mon Sep 17 00:00:00 2001 |
| From: Eduardo Habkost <ehabkost@redhat.com> |
| Date: Wed, 5 Dec 2018 17:19:56 -0200 |
| Subject: [PATCH 03/30] kvm: x86: Report STIBP on GET_SUPPORTED_CPUID |
| |
| commit d7b09c827a6cf291f66637a36f46928dd1423184 upstream |
| |
| Months ago, we have added code to allow direct access to MSR_IA32_SPEC_CTRL |
| to the guest, which makes STIBP available to guests. This was implemented |
| by commits d28b387fb74d ("KVM/VMX: Allow direct access to |
| MSR_IA32_SPEC_CTRL") and b2ac58f90540 ("KVM/SVM: Allow direct access to |
| MSR_IA32_SPEC_CTRL"). |
| |
| However, we never updated GET_SUPPORTED_CPUID to let userspace know that |
| STIBP can be enabled in CPUID. Fix that by updating |
| kvm_cpuid_8000_0008_ebx_x86_features and kvm_cpuid_7_0_edx_x86_features. |
| |
| Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> |
| Reviewed-by: Jim Mattson <jmattson@google.com> |
| Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kvm/cpuid.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c |
| index 98d13c6a64be..fe9907517fb4 100644 |
| --- a/arch/x86/kvm/cpuid.c |
| +++ b/arch/x86/kvm/cpuid.c |
| @@ -382,7 +382,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, |
| /* cpuid 0x80000008.ebx */ |
| const u32 kvm_cpuid_8000_0008_ebx_x86_features = |
| F(AMD_IBPB) | F(AMD_IBRS) | F(AMD_SSBD) | F(VIRT_SSBD) | |
| - F(AMD_SSB_NO); |
| + F(AMD_SSB_NO) | F(AMD_STIBP); |
| |
| /* cpuid 0xC0000001.edx */ |
| const u32 kvm_cpuid_C000_0001_edx_x86_features = |
| @@ -412,7 +412,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, |
| /* cpuid 7.0.edx*/ |
| const u32 kvm_cpuid_7_0_edx_x86_features = |
| F(AVX512_4VNNIW) | F(AVX512_4FMAPS) | F(SPEC_CTRL) | |
| - F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES); |
| + F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES) | F(INTEL_STIBP); |
| |
| /* all calls to cpuid_count() should be made on the same cpu */ |
| get_cpu(); |
| -- |
| 2.21.0 |
| |