KVM: x86: disable MPX if host did not enable MPX XSAVE features
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 8 Mar 2016 08:52:13 +0000 (09:52 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 9 Mar 2016 13:04:36 +0000 (14:04 +0100)
commita87036add09283e6c4f4103a15c596c67b86ab86
tree42ca5c20c06ae8a8f988192e44f3d3263fbabdf3
parentab92f30875a7ec3e84644a5494febd8901e66742
KVM: x86: disable MPX if host did not enable MPX XSAVE features

When eager FPU is disabled, KVM will still see the MPX bit in CPUID and
presumably the MPX vmentry and vmexit controls.  However, it will not
be able to expose the MPX XSAVE features to the guest, because the guest's
accessible XSAVE features are always a subset of host_xcr0.

In this case, we should disable the MPX CPUID bit, the BNDCFGS MSR,
and the MPX vmentry and vmexit controls for nested virtualization.
It is then unnecessary to enable guest eager FPU if the guest has the
MPX CPUID bit set.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/cpuid.c
arch/x86/kvm/cpuid.h
arch/x86/kvm/vmx.c