49 lines
2.0 KiB
Diff
49 lines
2.0 KiB
Diff
From e75df51aa9a06da683ae47809b52e1987d2824f8 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>
|
|
---
|
|
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();
|