]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.9.176/0049-kvm-x86-Report-STIBP-on-GET_SUPPORTED_CPUID.patch
Linux 4.9.176
[thirdparty/kernel/stable-queue.git] / releases / 4.9.176 / 0049-kvm-x86-Report-STIBP-on-GET_SUPPORTED_CPUID.patch
CommitLineData
6fa88700
GKH
1From 350d3aa22926c6fed9d7180eb605607bf57f63ec Mon Sep 17 00:00:00 2001
2From: Eduardo Habkost <ehabkost@redhat.com>
3Date: Wed, 5 Dec 2018 17:19:56 -0200
4Subject: [PATCH 49/76] kvm: x86: Report STIBP on GET_SUPPORTED_CPUID
5
6commit d7b09c827a6cf291f66637a36f46928dd1423184 upstream.
7
8Months ago, we have added code to allow direct access to MSR_IA32_SPEC_CTRL
9to the guest, which makes STIBP available to guests. This was implemented
10by commits d28b387fb74d ("KVM/VMX: Allow direct access to
11MSR_IA32_SPEC_CTRL") and b2ac58f90540 ("KVM/SVM: Allow direct access to
12MSR_IA32_SPEC_CTRL").
13
14However, we never updated GET_SUPPORTED_CPUID to let userspace know that
15STIBP can be enabled in CPUID. Fix that by updating
16kvm_cpuid_8000_0008_ebx_x86_features and kvm_cpuid_7_0_edx_x86_features.
17
18Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
19Reviewed-by: Jim Mattson <jmattson@google.com>
20Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
21Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
23[bwh: Backported to 4.9: adjust context]
24Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 arch/x86/kvm/cpuid.c | 5 +++--
28 1 file changed, 3 insertions(+), 2 deletions(-)
29
30diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
31index b6435f3be254..82c670b7bda1 100644
32--- a/arch/x86/kvm/cpuid.c
33+++ b/arch/x86/kvm/cpuid.c
34@@ -356,7 +356,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
35 /* cpuid 0x80000008.ebx */
36 const u32 kvm_cpuid_8000_0008_ebx_x86_features =
37 F(AMD_IBPB) | F(AMD_IBRS) | F(AMD_SSBD) | F(VIRT_SSBD) |
38- F(AMD_SSB_NO);
39+ F(AMD_SSB_NO) | F(AMD_STIBP);
40
41 /* cpuid 0xC0000001.edx */
42 const u32 kvm_cpuid_C000_0001_edx_x86_features =
43@@ -381,7 +381,8 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
44
45 /* cpuid 7.0.edx*/
46 const u32 kvm_cpuid_7_0_edx_x86_features =
47- F(SPEC_CTRL) | F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES);
48+ F(SPEC_CTRL) | F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES) |
49+ F(INTEL_STIBP);
50
51 /* all calls to cpuid_count() should be made on the same cpu */
52 get_cpu();
53--
542.21.0
55