Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a10f818 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Greg Kroah-Hartman
Browse files

KVM: x86: fix presentation of TSX feature in ARCH_CAPABILITIES



commit cbbaa2727aa3ae9e0a844803da7cef7fd3b94f2b upstream.

KVM does not implement MSR_IA32_TSX_CTRL, so it must not be presented
to the guests.  It is also confusing to have !ARCH_CAP_TSX_CTRL_MSR &&
!RTM && ARCH_CAP_TAA_NO: lack of MSR_IA32_TSX_CTRL suggests TSX was not
hidden (it actually was), yet the value says that TSX is not vulnerable
to microarchitectural data sampling.  Fix both.

Cc: stable@vger.kernel.org
Tested-by: default avatarJim Mattson <jmattson@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5efbd9a9
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1174,10 +1174,15 @@ u64 kvm_get_arch_capabilities(void)
	 * If TSX is disabled on the system, guests are also mitigated against
	 * TAA and clear CPU buffer mitigation is not required for guests.
	 */
	if (boot_cpu_has_bug(X86_BUG_TAA) && boot_cpu_has(X86_FEATURE_RTM) &&
	    (data & ARCH_CAP_TSX_CTRL_MSR))
	if (!boot_cpu_has(X86_FEATURE_RTM))
		data &= ~ARCH_CAP_TAA_NO;
	else if (!boot_cpu_has_bug(X86_BUG_TAA))
		data |= ARCH_CAP_TAA_NO;
	else if (data & ARCH_CAP_TSX_CTRL_MSR)
		data &= ~ARCH_CAP_MDS_NO;

	/* KVM does not emulate MSR_IA32_TSX_CTRL.  */
	data &= ~ARCH_CAP_TSX_CTRL_MSR;
	return data;
}