x86/tsx: Introduce tsx= to use MSR_TSX_CTRL when available
authorAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 19 Jun 2019 17:16:03 +0000 (18:16 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 12 Nov 2019 17:12:54 +0000 (17:12 +0000)
commit070e8ce9d3ace4624bb0fa87252a516e6fb0e2ea
treefda95cd5cd544d706382b90a0346b94e0f5a5c31
parent0cafb89ae632e17f7e047cc9ff5827a8d31b6bae
x86/tsx: Introduce tsx= to use MSR_TSX_CTRL when available

To protect against the TSX Async Abort speculative vulnerability, Intel have
released new microcode for affected parts which introduce the MSR_TSX_CTRL
control, which allows TSX to be turned off.  This will be architectural on
future parts.

Introduce tsx= to provide a global on/off for TSX, including its enumeration
via CPUID.  Provide stub virtualisation of this MSR, as it is not exposed to
guests at the moment.

VMs may have booted before microcode is loaded, or before hosts have rebooted,
and they still want to migrate freely.  A VM which booted seeing TSX can
migrate safely to hosts with TSX disabled - TSX will start unconditionally
aborting, but still behave in a manner compatible with the ABI.

The guest-visible behaviour is equivalent to late loading the microcode and
setting the RTM_DISABLE bit in the course of live patching.

This is part of XSA-305 / CVE-2019-11135

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
docs/misc/xen-command-line.pandoc
xen/arch/x86/Makefile
xen/arch/x86/cpuid.c
xen/arch/x86/msr.c
xen/arch/x86/setup.c
xen/arch/x86/smpboot.c
xen/arch/x86/tsx.c [new file with mode: 0644]
xen/include/asm-x86/msr-index.h
xen/include/asm-x86/processor.h