linux-stable/arch/x86
Maxim Levitsky d239c08f09 kvm: x86: replace kvm_spec_ctrl_test_value with runtime test on the host
commit 841c2be09f upstream.

To avoid complex and in some cases incorrect logic in
kvm_spec_ctrl_test_value, just try the guest's given value on the host
processor instead, and if it doesn't #GP, allow the guest to set it.

One such case is when host CPU supports STIBP mitigation
but doesn't support IBRS (as is the case with some Zen2 AMD cpus),
and in this case we were giving guest #GP when it tried to use STIBP

The reason why can can do the host test is that IA32_SPEC_CTRL msr is
passed to the guest, after the guest sets it to a non zero value
for the first time (due to performance reasons),
and as as result of this, it is pointless to emulate #GP condition on
this first access, in a different way than what the host CPU does.

This is based on a patch from Sean Christopherson, who suggested this idea.

Fixes: 6441fa6178 ("KVM: x86: avoid incorrect writes to host MSR_IA32_SPEC_CTRL")
Cc: stable@vger.kernel.org
Suggested-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20200708115731.180097-1-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-03-04 10:26:09 +01:00
..
boot
configs
crypto
entry
events
hyperv
ia32
include x86/apic: Add extra serialization for non-serializing MSRs 2021-02-10 09:25:32 +01:00
kernel x86/apic: Add extra serialization for non-serializing MSRs 2021-02-10 09:25:32 +01:00
kvm kvm: x86: replace kvm_spec_ctrl_test_value with runtime test on the host 2021-03-04 10:26:09 +01:00
lib x86/mmx: Use KFPU_387 for MMX string operations 2021-01-27 11:47:49 +01:00
math-emu
mm KVM: SVM: Treat SVM as unsupported when running as an SEV guest 2021-02-10 09:25:31 +01:00
net
oprofile
pci
platform
power
purgatory
ras
realmode
tools
um
video
xen Xen/x86: also check kernel mapping in set_foreign_p2m_mapping() 2021-02-23 15:02:26 +01:00
.gitignore
Kbuild
Kconfig
Kconfig.cpu
Kconfig.debug
Makefile x86/build: Disable CET instrumentation in the kernel for 32-bit too 2021-02-17 10:35:17 +01:00
Makefile.um
Makefile_32.cpu