aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch84
1 files changed, 0 insertions, 84 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch
deleted file mode 100644
index d7ddca7e..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0076-x86-speculation-KVM-Implement-support-for-VIRT_SPEC_.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From d63bb88a1ae9c702ddf7477b0e96be1fc20f8d28 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx@linutronix.de>
-Date: Thu, 10 May 2018 20:42:48 +0200
-Subject: [PATCH 76/93] x86/speculation, KVM: Implement support for
- VIRT_SPEC_CTRL/LS_CFG
-
-commit 47c61b3955cf712cadfc25635bf9bc174af030ea upstream
-
-Add the necessary logic for supporting the emulated VIRT_SPEC_CTRL MSR to
-x86_virt_spec_ctrl(). If either X86_FEATURE_LS_CFG_SSBD or
-X86_FEATURE_VIRT_SPEC_CTRL is set then use the new guest_virt_spec_ctrl
-argument to check whether the state must be modified on the host. The
-update reuses speculative_store_bypass_update() so the ZEN-specific sibling
-coordination can be reused.
-
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/include/asm/spec-ctrl.h | 6 ++++++
- arch/x86/kernel/cpu/bugs.c | 30 ++++++++++++++++++++++++++++++
- 2 files changed, 36 insertions(+)
-
-diff --git a/arch/x86/include/asm/spec-ctrl.h b/arch/x86/include/asm/spec-ctrl.h
-index 763d497..ae7c2c5 100644
---- a/arch/x86/include/asm/spec-ctrl.h
-+++ b/arch/x86/include/asm/spec-ctrl.h
-@@ -53,6 +53,12 @@ static inline u64 ssbd_tif_to_spec_ctrl(u64 tifn)
- return (tifn & _TIF_SSBD) >> (TIF_SSBD - SPEC_CTRL_SSBD_SHIFT);
- }
-
-+static inline unsigned long ssbd_spec_ctrl_to_tif(u64 spec_ctrl)
-+{
-+ BUILD_BUG_ON(TIF_SSBD < SPEC_CTRL_SSBD_SHIFT);
-+ return (spec_ctrl & SPEC_CTRL_SSBD) << (TIF_SSBD - SPEC_CTRL_SSBD_SHIFT);
-+}
-+
- static inline u64 ssbd_tif_to_amd_ls_cfg(u64 tifn)
- {
- return (tifn & _TIF_SSBD) ? x86_amd_ls_cfg_ssbd_mask : 0ULL;
-diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
-index 2ae3586..86af9b1 100644
---- a/arch/x86/kernel/cpu/bugs.c
-+++ b/arch/x86/kernel/cpu/bugs.c
-@@ -161,6 +161,36 @@ x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool setguest)
- wrmsrl(MSR_IA32_SPEC_CTRL, msrval);
- }
- }
-+
-+ /*
-+ * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update
-+ * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported.
-+ */
-+ if (!static_cpu_has(X86_FEATURE_LS_CFG_SSBD) &&
-+ !static_cpu_has(X86_FEATURE_VIRT_SSBD))
-+ return;
-+
-+ /*
-+ * If the host has SSBD mitigation enabled, force it in the host's
-+ * virtual MSR value. If its not permanently enabled, evaluate
-+ * current's TIF_SSBD thread flag.
-+ */
-+ if (static_cpu_has(X86_FEATURE_SPEC_STORE_BYPASS_DISABLE))
-+ hostval = SPEC_CTRL_SSBD;
-+ else
-+ hostval = ssbd_tif_to_spec_ctrl(ti->flags);
-+
-+ /* Sanitize the guest value */
-+ guestval = guest_virt_spec_ctrl & SPEC_CTRL_SSBD;
-+
-+ if (hostval != guestval) {
-+ unsigned long tif;
-+
-+ tif = setguest ? ssbd_spec_ctrl_to_tif(guestval) :
-+ ssbd_spec_ctrl_to_tif(hostval);
-+
-+ speculative_store_bypass_update(tif);
-+ }
- }
- EXPORT_SYMBOL_GPL(x86_virt_spec_ctrl);
-
---
-2.7.4
-