diff options
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_.patch | 84 |
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 - |