]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation
authorJiri Kosina <jkosina@suse.cz>
Tue, 25 Sep 2018 12:38:55 +0000 (14:38 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 26 Sep 2018 12:26:52 +0000 (14:26 +0200)
commit53c613fe6349994f023245519265999eed75957f
treeb4cc05de3a6421aa9dadc5de257371c9cb677674
parentdbfe2953f63c640463c630746cd5d9de8b2f63ae
x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation

STIBP is a feature provided by certain Intel ucodes / CPUs. This feature
(once enabled) prevents cross-hyperthread control of decisions made by
indirect branch predictors.

Enable this feature if

- the CPU is vulnerable to spectre v2
- the CPU supports SMT and has SMT siblings online
- spectre_v2 mitigation autoselection is enabled (default)

After some previous discussion, this leaves STIBP on all the time, as wrmsr
on crossing kernel boundary is a no-no. This could perhaps later be a bit
more optimized (like disabling it in NOHZ, experiment with disabling it in
idle, etc) if needed.

Note that the synchronization of the mask manipulation via newly added
spec_ctrl_mutex is currently not strictly needed, as the only updater is
already being serialized by cpu_add_remove_lock, but let's make this a
little bit more future-proof.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: "WoodhouseDavid" <dwmw@amazon.co.uk>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: "SchauflerCasey" <casey.schaufler@intel.com>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/nycvar.YFH.7.76.1809251438240.15880@cbobk.fhfr.pm
arch/x86/kernel/cpu/bugs.c
kernel/cpu.c