Linux 5.10.123
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.123 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-devices-system-cpu | 1 Documentation/admin-guide/hw-vuln/index.rst | 1 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst | 246 ++++++++++ Documentation/admin-guide/kernel-parameters.txt | 36 + Makefile | 2 arch/x86/include/asm/cpufeatures.h | 1 arch/x86/include/asm/msr-index.h | 25 + arch/x86/include/asm/nospec-branch.h | 2 arch/x86/kernel/cpu/bugs.c | 235 ++++++++- arch/x86/kernel/cpu/common.c | 52 +- arch/x86/kvm/vmx/vmx.c | 72 ++ arch/x86/kvm/vmx/vmx.h | 2 arch/x86/kvm/x86.c | 3 drivers/base/cpu.c | 8 include/linux/cpu.h | 3 tools/arch/x86/include/asm/cpufeatures.h | 1 tools/arch/x86/include/asm/msr-index.h | 25 + 17 files changed, 675 insertions(+), 40 deletions(-)
Greg Kroah-Hartman (1):
Linux 5.10.123
Josh Poimboeuf (1):
x86/speculation/mmio: Print SMT warning
Pawan Gupta (10):
Documentation: Add documentation for Processor MMIO Stale Data x86/speculation/mmio: Enumerate Processor MMIO Stale Data bug x86/speculation: Add a common function for MD_CLEAR mitigation update x86/speculation/mmio: Add mitigation for Processor MMIO Stale Data x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations x86/speculation/mmio: Enable CPU Fill buffer clearing on idle x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data x86/speculation/srbds: Update SRBDS mitigation selection x86/speculation/mmio: Reuse SRBDS mitigation for SBDS
KVM: x86/speculation: Disable Fill buffer clear within guests
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-devices-system-cpu +1 -0
@@ -510,6 +510,7 @@ What: /sys/devices/system/cpu/vulnerabilities /sys/devices/system/cpu/vulnerabilities/srbds /sys/devices/system/cpu/vulnerabilities/tsx_async_abort /sys/devices/system/cpu/vulnerabilities/itlb_multihit + /sys/devices/system/cpu/vulnerabilities/mmio_stale_data Date: January 2018 Contact: Linux kernel mailing list <[email protected]> Description: Information about CPU vulnerabilities
Documentation/admin-guide/hw-vuln/index.rst +1 -0
@@ -15,3 +15,4 @@ are configurable at compile, boot or run time. tsx_async_abort multihit.rst special-register-buffer-data-sampling.rst + processor_mmio_stale_data.rst
Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst new file +246 -0
246 lines not on this page · raw message
Documentation/admin-guide/kernel-parameters.txt +36 -0
@@ -2872,6 +2872,7 @@ kvm.nx_huge_pages=off [X86] no_entry_flush [PPC] no_uaccess_flush [PPC] + mmio_stale_data=off [X86] Exceptions: This does not have any effect on
@@ -2893,6 +2894,7 @@ Equivalent to: l1tf=flush,nosmt [X86] mds=full,nosmt [X86] tsx_async_abort=full,nosmt [X86] + mmio_stale_data=full,nosmt [X86] mminit_loglevel= [KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
@@ -2902,6 +2904,40 @@ log everything. Information is printed at KERN_DEBUG so loglevel=8 may also need to be specified. + mmio_stale_data= + [X86,INTEL] Control mitigation for the Processor + MMIO Stale Data vulnerabilities. + + Processor MMIO Stale Data is a class of + vulnerabilities that may expose data after an MMIO + operation. Exposed data could originate or end in + the same CPU buffers as affected by MDS and TAA. + Therefore, similar to MDS and TAA, the mitigation + is to clear the affected CPU buffers. + + This parameter controls the mitigation. The + options are: + + full - Enable mitigation on vulnerable CPUs + + full,nosmt - Enable mitigation and disable SMT on + vulnerable CPUs. + + off - Unconditionally disable mitigation + + On MDS or TAA affected machines, + mmio_stale_data=off can be prevented by an active + MDS or TAA mitigation as these vulnerabilities are + mitigated with the same mechanism so in order to + disable this mitigation, you need to specify + mds=off and tsx_async_abort=off too. + + Not specifying this option is equivalent to + mmio_stale_data=full. + + For details see: + Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst + module.sig_enforce [KNL] When CONFIG_MODULE_SIG is set, this means that modules without (valid) signatures will fail to load.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 122 +SUBLEVEL = 123 EXTRAVERSION = NAME = Dare mighty things
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -417,5 +417,6 @@#define X86_BUG_TAA X86_BUG(22)/* CPU is affected by TSX Async Abort(TAA) */ #define X86_BUG_ITLB_MULTIHIT X86_BUG(23)/* CPU may incur MCE during certain page attribute changes */ #define X86_BUG_SRBDS X86_BUG(24)/* CPU may leak RNG bits if not mitigated */ +#define X86_BUG_MMIO_STALE_DATA X86_BUG(25)/* CPU is affected by Processor MMIO Stale Data vulnerabilities */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/msr-index.h +25 -0
@@ -114,6 +114,30 @@* Not susceptible to * TSX Async Abort (TAA) vulnerabilities. */ +#define ARCH_CAP_SBDR_SSDP_NO BIT(13)/* +* Not susceptible to SBDR and SSDP +* variants of Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_FBSDP_NO BIT(14)/* +* Not susceptible to FBSDP variant of +* Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_PSDP_NO BIT(15)/* +* Not susceptible to PSDP variant of +* Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_FB_CLEAR BIT(17)/* +* VERW clears CPU fill buffer +* even on MDS_NO CPUs. +*/ +#define ARCH_CAP_FB_CLEAR_CTRL BIT(18)/* +* MSR_IA32_MCU_OPT_CTRL[FB_CLEAR_DIS] +* bit available to control VERW +* behavior. +*/ #define MSR_IA32_FLUSH_CMD 0x0000010b#define L1D_FLUSH BIT(0)/*
@@ -131,6 +155,7 @@/* SRBDS support */ #define MSR_IA32_MCU_OPT_CTRL 0x00000123#define RNGDS_MITG_DIS BIT(0) +#define FB_CLEAR_DIS BIT(3)/* CPU Fill buffer clear disable */ #define MSR_IA32_SYSENTER_CS 0x00000174#define MSR_IA32_SYSENTER_ESP 0x00000175
arch/x86/include/asm/nospec-branch.h +2 -0
@@ -255,6 +255,8 @@ DECLARE_STATIC_KEY_FALSE(switch_mm_always_ibpb);DECLARE_STATIC_KEY_FALSE (mds_user_clear);DECLARE_STATIC_KEY_FALSE (mds_idle_clear); +DECLARE_STATIC_KEY_FALSE (mmio_stale_data_clear); +#include <asm/segment.h> /**
arch/x86/kernel/cpu/bugs.c +199 -36
334 lines not on this page · raw message
arch/x86/kernel/cpu/common.c +49 -3
85 lines not on this page · raw message
arch/x86/kvm/vmx/vmx.c +72 -0
114 lines not on this page · raw message
arch/x86/kvm/vmx/vmx.h +2 -0
@@ -300,6 +300,8 @@ struct vcpu_vmx {u64 msr_ia32_feature_control;u64 msr_ia32_feature_control_valid_bits;u64 ept_pointer; +u64 msr_ia32_mcu_opt_ctrl; +bool disable_fb_clear;struct pt_desc pt_desc;
arch/x86/kvm/x86.c +3 -0
@@ -1415,6 +1415,9 @@ static u64 kvm_get_arch_capabilities(void)*/ } +/* Guests don't need to know "Fill buffer clear control" exists */ + data &= ~ARCH_CAP_FB_CLEAR_CTRL ; +return data; }
drivers/base/cpu.c +8 -0
@@ -566,6 +566,12 @@ ssize_t __weak cpu_show_srbds(struct device *dev,return sysfs_emit (buf,"Not affected\n" ); } +ssize_t __weak cpu_show_mmio_stale_data (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return sysfs_emit (buf,"Not affected\n" ); +} + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL);
@@ -575,6 +581,7 @@ static DEVICE_ATTR(mds, 0444, cpu_show_mds, NULL); static DEVICE_ATTR(tsx_async_abort, 0444, cpu_show_tsx_async_abort, NULL); static DEVICE_ATTR(itlb_multihit, 0444, cpu_show_itlb_multihit, NULL); static DEVICE_ATTR(srbds, 0444, cpu_show_srbds, NULL); +static DEVICE_ATTR(mmio_stale_data, 0444, cpu_show_mmio_stale_data, NULL);static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr,
@@ -586,6 +593,7 @@ static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_tsx_async_abort.attr, &dev_attr_itlb_multihit.attr, &dev_attr_srbds.attr, + &dev_attr_mmio_stale_data.attr, NULL };
include/linux/cpu.h +3 -0
@@ -65,6 +65,9 @@ extern ssize_t cpu_show_tsx_async_abort(struct device *dev,extern ssize_t cpu_show_itlb_multihit (struct device *dev,struct device_attribute *attr,char *buf);extern ssize_t cpu_show_srbds (struct device *dev,struct device_attribute *attr,char *buf); +extern ssize_t cpu_show_mmio_stale_data (struct device *dev, +struct device_attribute *attr, +char *buf); extern __printf(4, 5) struct device *cpu_device_create(struct device *parent, void *drvdata,
tools/arch/x86/include/asm/cpufeatures.h +1 -0
@@ -417,5 +417,6 @@#define X86_BUG_TAA X86_BUG(22)/* CPU is affected by TSX Async Abort(TAA) */ #define X86_BUG_ITLB_MULTIHIT X86_BUG(23)/* CPU may incur MCE during certain page attribute changes */ #define X86_BUG_SRBDS X86_BUG(24)/* CPU may leak RNG bits if not mitigated */ +#define X86_BUG_MMIO_STALE_DATA X86_BUG(25)/* CPU is affected by Processor MMIO Stale Data vulnerabilities */ #endif /* _ASM_X86_CPUFEATURES_H */
tools/arch/x86/include/asm/msr-index.h +25 -0
@@ -114,6 +114,30 @@* Not susceptible to * TSX Async Abort (TAA) vulnerabilities. */ +#define ARCH_CAP_SBDR_SSDP_NO BIT(13)/* +* Not susceptible to SBDR and SSDP +* variants of Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_FBSDP_NO BIT(14)/* +* Not susceptible to FBSDP variant of +* Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_PSDP_NO BIT(15)/* +* Not susceptible to PSDP variant of +* Processor MMIO stale data +* vulnerabilities. +*/ +#define ARCH_CAP_FB_CLEAR BIT(17)/* +* VERW clears CPU fill buffer +* even on MDS_NO CPUs. +*/ +#define ARCH_CAP_FB_CLEAR_CTRL BIT(18)/* +* MSR_IA32_MCU_OPT_CTRL[FB_CLEAR_DIS] +* bit available to control VERW +* behavior. +*/ #define MSR_IA32_FLUSH_CMD 0x0000010b#define L1D_FLUSH BIT(0)/*
@@ -131,6 +155,7 @@/* SRBDS support */ #define MSR_IA32_MCU_OPT_CTRL 0x00000123#define RNGDS_MITG_DIS BIT(0) +#define FB_CLEAR_DIS BIT(3)/* CPU Fill buffer clear disable */ #define MSR_IA32_SYSENTER_CS 0x00000174#define MSR_IA32_SYSENTER_ESP 0x00000175