linux/arch
Alejandro Jimenez c1f7fec1eb x86/speculation: Allow guests to use SSBD even if host does not
The bits set in x86_spec_ctrl_mask are used to calculate the guest's value
of SPEC_CTRL that is written to the MSR before VMENTRY, and control which
mitigations the guest can enable.  In the case of SSBD, unless the host has
enabled SSBD always on mode (by passing "spec_store_bypass_disable=on" in
the kernel parameters), the SSBD bit is not set in the mask and the guest
can not properly enable the SSBD always on mitigation mode.

This has been confirmed by running the SSBD PoC on a guest using the SSBD
always on mitigation mode (booted with kernel parameter
"spec_store_bypass_disable=on"), and verifying that the guest is vulnerable
unless the host is also using SSBD always on mode. In addition, the guest
OS incorrectly reports the SSB vulnerability as mitigated.

Always set the SSBD bit in x86_spec_ctrl_mask when the host CPU supports
it, allowing the guest to use SSBD whether or not the host has chosen to
enable the mitigation in any of its modes.

Fixes: be6fcb5478 ("x86/bugs: Rework spec_ctrl base and mask logic")
Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: bp@alien8.de
Cc: rkrcmar@redhat.com
Cc: kvm@vger.kernel.org
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/1560187210-11054-1-git-send-email-alejandro.j.jimenez@oracle.com
2019-06-26 16:38:36 +02:00
..
alpha treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
arc treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
arm SPDX fixes for 5.2-rc3, round 2 2019-06-02 10:22:38 -07:00
arm64 SPDX update for 5.2-rc3, round 1 2019-05-31 08:34:32 -07:00
c6x treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
csky treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
h8300 treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
hexagon treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
ia64 SPDX update for 5.2-rc3, round 1 2019-05-31 08:34:32 -07:00
m68k treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
microblaze treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
mips Fixes for PPC and s390. 2019-06-02 10:19:39 -07:00
nds32 treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
nios2 treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
openrisc treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
parisc arch/parisc/configs/c8000_defconfig: remove obsoleted CONFIG_DEBUG_SLAB_LEAK 2019-06-01 15:51:31 -07:00
powerpc powerpc fixes for 5.2 #3 2019-06-02 10:21:04 -07:00
riscv treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
s390 Fixes for PPC and s390. 2019-06-02 10:19:39 -07:00
sh treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 211 2019-05-30 11:29:53 -07:00
sparc treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
um treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
unicore32 treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
x86 x86/speculation: Allow guests to use SSBD even if host does not 2019-06-26 16:38:36 +02:00
xtensa treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
.gitignore
Kconfig Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-16 11:00:20 -07:00