Re: [PATCH 1/2] KVM: x86: disable MPX if host did not enable MPX XSAVE features

From: Paolo Bonzini
Date: Fri Mar 11 2016 - 07:10:06 EST




On 11/03/2016 03:37, Yang Zhang wrote:
>> @@ -97,7 +104,7 @@ int kvm_update_cpuid(struct kvm_vcpu *vcpu)
>> if (best && (best->eax & (F(XSAVES) | F(XSAVEC))))
>> best->ebx = xstate_required_size(vcpu->arch.xcr0, true);
>>
>> - vcpu->arch.eager_fpu = use_eager_fpu() || guest_cpuid_has_mpx(vcpu);
>> + vcpu->arch.eager_fpu = use_eager_fpu();
>
> Hi Paolo,
>
> As i mentioned on another thread, force KVM to use eager fpu
> unconditionally may introduce the performance regression. Though the
> cost for eager fpu is very small especially in modern CPU, it still
> cannot be ignored on old platform.

This patch doesn't change anything in that respect. It doesn't enable
eager FPU in any case where it wasn't already enabled before the patch.

All this patch does is hide MPX completely to the guests (just like it's
hidden on the host) if the host is using lazy FPU.

> And we have observed some performance
> decrease on those platforms according the result from some experiments
> which did several years ago.

Indeed after the merge window I plan to benchmark KVM on old systems
(pre-XSAVE) to see if there is a negative benefit from eager FPU.

Thanks,

Paolo