This is the start of the stable review cycle for the 4.18.1 release. There are 79 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know. Responses should be made by Thu Aug 16 17:13:16 UTC 2018. Anything received after that time might be too late. The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.18.1-rc1.gz or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.18.y and the diffstat can be found below. thanks, greg k-h ------------- Pseudo-Shortlog of commits: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Linux 4.18.1-rc1 Josh Poimboeuf <jpoimboe@xxxxxxxxxx> x86/microcode: Allow late microcode loading with SMT disabled David Woodhouse <dwmw@xxxxxxxxxxxx> tools headers: Synchronise x86 cpufeatures.h for L1TF additions Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/mm/kmmio: Make the tracer robust against L1TF Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/mm/pat: Make set_memory_np() L1TF safe Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Invert all not present mappings Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Fix SMT supported evaluation Paolo Bonzini <pbonzini@xxxxxxxxxx> KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry Paolo Bonzini <pbonzini@xxxxxxxxxx> x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry Paolo Bonzini <pbonzini@xxxxxxxxxx> x86/speculation: Simplify sysfs report of VMX L1TF vulnerability Thomas Gleixner <tglx@xxxxxxxxxxxxx> Documentation/l1tf: Remove Yonah processors from not vulnerable list Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr() Nicolai Stange <nstange@xxxxxxx> x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d Nicolai Stange <nstange@xxxxxxx> x86: Don't include linux/irq.h from asm/hardirq.h Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d Nicolai Stange <nstange@xxxxxxx> x86/irq: Demote irq_cpustat_t::__softirq_pending to u16 Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush() Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond' Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() Josh Poimboeuf <jpoimboe@xxxxxxxxxx> cpu/hotplug: detect SMT disabled by BIOS Tony Luck <tony.luck@xxxxxxxxx> Documentation/l1tf: Fix typos Nicolai Stange <nstange@xxxxxxx> x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content Jiri Kosina <jkosina@xxxxxxx> x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures Thomas Gleixner <tglx@xxxxxxxxxxxxx> Documentation: Add section about CPU vulnerabilities Jiri Kosina <jkosina@xxxxxxx> x86/bugs, kvm: Introduce boot-time control of L1TF mitigations Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Set CPU_SMT_NOT_SUPPORTED early Jiri Kosina <jkosina@xxxxxxx> cpu/hotplug: Expose SMT control init function Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/kvm: Allow runtime control of L1D flush Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/kvm: Serialize L1D flush parameter setter Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/kvm: Add static key for flush always Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/kvm: Move l1tf setup function Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/l1tf: Handle EPT disabled state proper Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/kvm: Drop L1TF MSR list approach Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/litf: Introduce vmx status variable Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Online siblings when SMT control is turned on Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Use MSR save list for IA32_FLUSH_CMD if required Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Extend add_atomic_switch_msr() to allow VMENTER only MSRs Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Separate the VMX AUTOLOAD guest/host number accounting Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Add find_msr() helper function Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Split the VMX MSR LOAD structures to have an host/guest numbers Paolo Bonzini <pbonzini@xxxxxxxxxx> x86/KVM/VMX: Add L1D flush logic Paolo Bonzini <pbonzini@xxxxxxxxxx> x86/KVM/VMX: Add L1D MSR based flush Paolo Bonzini <pbonzini@xxxxxxxxxx> x86/KVM/VMX: Add L1D flush algorithm Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM/VMX: Add module argument for L1TF mitigation Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/KVM: Warn user if KVM is loaded SMT and L1TF CPU bug being present Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Boot HT siblings at least once Thomas Gleixner <tglx@xxxxxxxxxxxxx> Revert "x86/apic: Ignore secondary threads if nosmt=force" Michal Hocko <mhocko@xxxxxxx> x86/speculation/l1tf: Fix up pte->pfn conversion for PAE Vlastimil Babka <vbabka@xxxxxxx> x86/speculation/l1tf: Protect PAE swap entries against L1TF Borislav Petkov <bp@xxxxxxx> x86/CPU/AMD: Move TOPOEXT reenablement before reading smp_num_siblings Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/cpufeatures: Add detection of L1D cache flush support. Vlastimil Babka <vbabka@xxxxxxx> x86/speculation/l1tf: Extend 64bit swap file size limit Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/apic: Ignore secondary threads if nosmt=force Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu/AMD: Evaluate smp_num_siblings early Borislav Petkov <bp@xxxxxxx> x86/CPU/AMD: Do not check CPUID max ext level before parsing SMP info Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu/intel: Evaluate smp_num_siblings early Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu/topology: Provide detect_extended_topology_early() Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu/common: Provide detect_ht_early() Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu/AMD: Remove the pointless detect_ht() call Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/cpu: Remove the pointless CPU printout Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Provide knobs to control SMT Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Split do_cpu_down() Thomas Gleixner <tglx@xxxxxxxxxxxxx> cpu/hotplug: Make bringup/teardown of smp threads symmetric Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/topology: Provide topology_smt_supported() Thomas Gleixner <tglx@xxxxxxxxxxxxx> x86/smp: Provide topology_is_primary_thread() Peter Zijlstra <peterz@xxxxxxxxxxxxx> sched/smt: Update sched_smt_present at runtime Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> x86/bugs: Move the l1tf function and define pr_fmt properly Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Limit swap file size to MAX_PA/2 Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Add sysfs reporting for l1tf Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Make sure the first page is always reserved Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> x86/speculation/l1tf: Protect swap entries against L1TF Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> x86/speculation/l1tf: Change order of offset/type in swap entry Andi Kleen <ak@xxxxxxxxxxxxxxx> x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT Nick Desaulniers <ndesaulniers@xxxxxxxxxx> x86/irqflags: Provide a declaration for native_save_fl Masami Hiramatsu <mhiramat@xxxxxxxxxx> kprobes/x86: Fix %p uses in error messages Jiri Kosina <jkosina@xxxxxxx> x86/speculation: Protect against userspace-userspace spectreRSB Peter Zijlstra <peterz@xxxxxxxxxxxxx> x86/paravirt: Fix spectre-v2 mitigations for paravirt guests ------------- Diffstat: Documentation/ABI/testing/sysfs-devices-system-cpu | 24 + Documentation/admin-guide/index.rst | 9 + Documentation/admin-guide/kernel-parameters.txt | 78 +++ Documentation/admin-guide/l1tf.rst | 610 +++++++++++++++++++++ Makefile | 4 +- arch/Kconfig | 3 + arch/x86/Kconfig | 1 + arch/x86/include/asm/apic.h | 9 + arch/x86/include/asm/cpufeatures.h | 3 + arch/x86/include/asm/dmi.h | 2 +- arch/x86/include/asm/hardirq.h | 26 +- arch/x86/include/asm/irqflags.h | 2 + arch/x86/include/asm/kvm_host.h | 6 + arch/x86/include/asm/msr-index.h | 7 + arch/x86/include/asm/page_32_types.h | 9 +- arch/x86/include/asm/pgtable-2level.h | 17 + arch/x86/include/asm/pgtable-3level.h | 37 +- arch/x86/include/asm/pgtable-invert.h | 32 ++ arch/x86/include/asm/pgtable.h | 74 ++- arch/x86/include/asm/pgtable_64.h | 38 +- arch/x86/include/asm/processor.h | 17 + arch/x86/include/asm/topology.h | 6 +- arch/x86/include/asm/vmx.h | 11 + arch/x86/kernel/apic/apic.c | 16 + arch/x86/kernel/apic/io_apic.c | 1 + arch/x86/kernel/apic/msi.c | 1 + arch/x86/kernel/apic/vector.c | 1 + arch/x86/kernel/cpu/amd.c | 51 +- arch/x86/kernel/cpu/bugs.c | 171 ++++-- arch/x86/kernel/cpu/common.c | 56 +- arch/x86/kernel/cpu/cpu.h | 2 + arch/x86/kernel/cpu/intel.c | 7 + arch/x86/kernel/cpu/microcode/core.c | 16 +- arch/x86/kernel/cpu/topology.c | 41 +- arch/x86/kernel/fpu/core.c | 1 + arch/x86/kernel/hpet.c | 1 + arch/x86/kernel/i8259.c | 1 + arch/x86/kernel/idt.c | 1 + arch/x86/kernel/irq.c | 1 + arch/x86/kernel/irq_32.c | 1 + arch/x86/kernel/irq_64.c | 1 + arch/x86/kernel/irqinit.c | 1 + arch/x86/kernel/kprobes/core.c | 5 +- arch/x86/kernel/paravirt.c | 14 +- arch/x86/kernel/setup.c | 6 + arch/x86/kernel/smp.c | 1 + arch/x86/kernel/smpboot.c | 18 + arch/x86/kernel/time.c | 1 + arch/x86/kvm/mmu.c | 1 + arch/x86/kvm/vmx.c | 455 ++++++++++++--- arch/x86/kvm/x86.c | 34 +- arch/x86/mm/init.c | 23 + arch/x86/mm/kmmio.c | 25 +- arch/x86/mm/mmap.c | 21 + arch/x86/mm/pageattr.c | 8 +- arch/x86/mm/pti.c | 1 + .../intel-mid/device_libs/platform_mrfld_wdt.c | 1 + arch/x86/platform/uv/tlb_uv.c | 1 + arch/x86/xen/enlighten.c | 1 + drivers/base/cpu.c | 8 + drivers/gpu/drm/i915/i915_pmu.c | 1 + drivers/gpu/drm/i915/intel_lpe_audio.c | 1 + drivers/pci/controller/pci-hyperv.c | 1 + include/asm-generic/pgtable.h | 12 + include/linux/cpu.h | 21 + include/linux/swapfile.h | 2 + kernel/cpu.c | 280 +++++++++- kernel/sched/core.c | 30 +- kernel/sched/fair.c | 1 + kernel/smp.c | 2 + mm/memory.c | 37 +- mm/mprotect.c | 49 ++ mm/swapfile.c | 46 +- tools/arch/x86/include/asm/cpufeatures.h | 3 + 74 files changed, 2206 insertions(+), 300 deletions(-)